Skip to main content

oxide_engine_api/
script.rs

1use crate::context::Context;
2
3// === СОЗДАНИЕ СКРИПТА ===
4#[macro_export]
5macro_rules! create_script {
6    ($struct_name:ident { $($field:ident: $value:expr),* $(,)? }) => {
7        #[unsafe(no_mangle)]
8        pub extern "Rust" fn create_script() -> Box<dyn Script> {
9            Box::new($struct_name {
10            	$($field: $value),*
11        	})
12        }
13    };
14}
15
16// === ФУНКЦИИ СКРИПТА ===
17pub trait Script: Send {
18	/// Выполняется при загрузке файла библиотеки
19	fn init(&mut self, ctx: &dyn Context) {
20		ctx.log("Script Init");
21	}
22	/// Выполняется при добавлении в древо регистра
23	fn ready(&mut self, ctx: &dyn Context) {
24		ctx.log("Script Ready");
25	}
26	/// Выполняется каждый main loop
27	fn update(&mut self, ctx: &dyn Context, delta: f32) {
28		ctx.log("Script Update");
29		println!("{}",delta);
30	}
31	/// Вызывается при вводе
32	fn event(&mut self, ctx: &dyn Context, event: crate::Event) {
33		ctx.log("Script Event");
34	}
35}