diff --git a/src/duck/instance.rs b/src/duck/instance.rs index 447ecc5..2c78442 100644 --- a/src/duck/instance.rs +++ b/src/duck/instance.rs @@ -18,6 +18,8 @@ impl DefaultAsset { pub trait Class { fn new(entity: &mut EntityWorldMut) -> AnyInstance; + fn load(entity: &mut EntityWorldMut) -> AnyInstance { Self::new(entity) } + fn reload(entity: &mut EntityWorldMut) {} fn add_fields>(_fields: &mut F) {} fn add_methods>(_methods: &mut F) {} fn class_name() -> &'static str {"Instance"} diff --git a/src/duck/script.rs b/src/duck/script.rs index f24697e..6a671c7 100644 --- a/src/duck/script.rs +++ b/src/duck/script.rs @@ -2,6 +2,8 @@ use std::ops::Deref; use bevy::asset::AsyncReadExt; use bevy::prelude::*; use bevy::asset::{io::Reader, AssetLoader, LoadContext}; +use bevy::ecs::system::SystemId; +use mlua::Lua; use thiserror::Error; use crate::duck::instance::*; @@ -43,9 +45,23 @@ impl Class for Script { fn new(entity: &mut EntityWorldMut) -> AnyInstance { let handle = DefaultAsset::::clone(entity.world()); entity.entry().or_insert(Script(handle)); + let world = entity.world(); + Self::run(entity); AnyInstance::Script(Instance::new(entity)) } } +impl Script { + fn run(entity: &mut EntityWorldMut) { + let lua = &entity.world().get_resource::().unwrap().0; + let script_assets = entity.get_resource::>().unwrap(); + let script_asset_handle = &entity.get::