reactive_graph_behaviour_service_api/
behaviour_system.rs1use std::sync::Arc;
2
3use async_trait::async_trait;
4use springtime_di::injectable;
5
6use reactive_graph_lifecycle::Lifecycle;
7use reactive_graph_type_system_api::TypeSystem;
8
9use crate::EntityBehaviourManager;
10use crate::EntityBehaviourRegistry;
11use crate::EntityComponentBehaviourManager;
12use crate::EntityComponentBehaviourRegistry;
13use crate::RelationBehaviourManager;
14use crate::RelationBehaviourRegistry;
15use crate::RelationComponentBehaviourManager;
16use crate::RelationComponentBehaviourRegistry;
17
18#[injectable]
19#[async_trait]
20pub trait BehaviourSystem: Lifecycle {
21 fn get_entity_behaviour_manager(&self) -> Arc<dyn EntityBehaviourManager + Send + Sync>;
22
23 fn get_entity_behaviour_registry(&self) -> Arc<dyn EntityBehaviourRegistry + Send + Sync>;
24
25 fn get_entity_component_behaviour_manager(&self) -> Arc<dyn EntityComponentBehaviourManager + Send + Sync>;
26
27 fn get_entity_component_behaviour_registry(&self) -> Arc<dyn EntityComponentBehaviourRegistry + Send + Sync>;
28
29 fn get_relation_behaviour_manager(&self) -> Arc<dyn RelationBehaviourManager + Send + Sync>;
30
31 fn get_relation_behaviour_registry(&self) -> Arc<dyn RelationBehaviourRegistry + Send + Sync>;
32
33 fn get_relation_component_behaviour_manager(&self) -> Arc<dyn RelationComponentBehaviourManager + Send + Sync>;
34
35 fn get_relation_component_behaviour_registry(&self) -> Arc<dyn RelationComponentBehaviourRegistry + Send + Sync>;
36
37 fn type_system(&self) -> Arc<dyn TypeSystem + Send + Sync>;
38}