2个版本
0.1.1 | 2021年12月23日 |
---|---|
0.1.0 | 2021年12月22日 |
#802 in 调试
21KB
466 行
企鹅应用
企鹅应用是一个应用程序构建器和抽象层,用于在 winit、legion ecs 和 fern logger 上构建循环应用程序。它还向legion添加了一个类似于 bevy 的插件实现。
该软件包还包括一个可选功能,添加了时间资源插件,可以轻松访问deltatime。
依赖关系
Cargo.toml
[dependencies]
penguin-application = { version = "0.1" }
penguin-config = { version = "0.1" }
配置
创建一个类似下面的 app-config.json 文件,并将其放入项目根目录。可用的日志级别为 ["error", "warning", "info", "debug", "trace"],按重要性递减。
app-config.json
{
"logger_config": {
"output_path": "logs/output.log",
"debug_message_severity": "debug"
},
"window_config": {
"width": 640,
"height": 400
}
}
用法
日志记录
日志消息使用标准的 log 函数调用生成,例如 log::error!("message")
。
应用程序
use penguin_config::PenguinConfig;
use penguin_app::{App, config::AppConfig};
fn main() {
App::builder(AppConfig::read_config())
.add_plugin(penguin_app::time_plugin::TimePlugin)
.run()
.unwrap();
}
插件
use penguin_app::ecs::*;
use penguin_app::time_plugin::Time;
pub struct MeasureTimePlugin;
impl Plugin for MeasureTimePlugin {
fn startup(&mut self, resources: &mut Resources) -> Vec<Step> {
resources.insert(PassedTimeResource::default());
vec![]
}
fn run() -> Vec<Step> {
Schedule::builder()
.add_system(measure_time_system())
.build()
.into_vec()
}
fn shutdown() -> Vec<Step> {
vec![]
}
}
#[derive(Default)]
struct PassedTimeResource(f32);
#[system]
fn measure_time(#[resource] passed_time: &mut PassedTimeResource, #[resource] time: &Time) {
passed_time.0 += time.delta();
log::info!("Time passed: {}", passed_time.0);
}
依赖关系
~10–21MB
~297K SLoC