Skip to main content

oxide_engine_api/
context.rs

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