Skip to main content

oxide_engine_api/contexts/
object_registry.rs

1use std::path::PathBuf;
2use crate::Object;
3
4// === ПОДСИСТЕМА ОБЪЕКТОВ ===
5pub trait ObjectRegistry {
6	/// Создаёт дочерний объект для указанного родителя
7	/// object_name: имя для созданного объекта
8	/// script_path: путь к файлу скрипта
9	/// parent_object: объект к оторому будет добавлен объект
10	/// Возвращает `None`, если родитель не существует или объект не может быть создан
11	fn create_child(&self, object_name: String, script_path: Option<PathBuf>, parent_object: Option<&dyn Object>) -> Option<&dyn Object>;
12
13	/// Удаляет объект и всё его поддерево
14	fn remove(&self, object: &dyn Object) -> bool;
15
16	/// Устанавливает скрипт для объекта
17	fn set_script(&self, object: &dyn Object, script_path: PathBuf) -> bool;
18
19	/// Убирает скрипт с объекта
20	fn remove_script(&self, object: &dyn Object) -> bool;
21
22	/// Перемещает объект к новому родителю
23	fn move_to_parent(&self, child_object: &dyn Object, new_parent: &dyn Object) -> bool;
24
25	/// Получает объект по пути
26	fn get(&self, object_path: &str) -> Option<&dyn Object>;
27
28	/// Добавляет объекту компонент
29	fn add_component(&self, object: &dyn Object, component: Box<dyn crate::ComponentData>);
30}