reactive_graph_behaviour_service_api/
behaviour_system.rs

1use 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}