public SystemEnvironment(IEventRoute eventRoute, Blackboard blackboard, StateMachine stateMachine, Schedulable schedulable) { this.EventRoute = eventRoute; this.Blackboard = blackboard; this.StateMachine = stateMachine; this.Schedulable = schedulable; }
protected override void LeaveProcedure(StateEventArg arg) { ProcedureStateMachine?.Destroy(); m_systems.TearDown(); EventRoute.Dispose(); m_contexts.game.DestroyAllEntities(); m_contexts.Reset(); Object.Destroy(m_rootNode.gameObject); #if (!ENTITAS_DISABLE_VISUAL_DEBUGGING && UNITY_EDITOR) Object.Destroy(m_systems.gameObject); var contextObserverBehaviours = Object.FindObjectsOfType <Entitas.VisualDebugging.Unity.ContextObserverBehaviour>(); var allContexts = m_contexts.allContexts; foreach (var ob in contextObserverBehaviours) { if (System.Array.IndexOf(allContexts, ob.contextObserver.context) != -1) { Object.Destroy(ob.gameObject); } } #endif m_blackboard = null; m_procedureStateMachine = null; m_systems = null; m_contexts = null; m_rootNode = null; m_eventRoute = null; m_schedulable = null; }
protected override void EnterProcedure(StateEventArg arg) { m_contexts = new Contexts(); m_eventRoute = new EntitasEventRoute(m_contexts); m_rootNode = new GameObject(GetRootNodeName()).transform; RootNodeService.RootNode = m_rootNode; m_blackboard = new Blackboard(); m_procedureStateMachine = CreateStateMachine(); m_schedulable = new Schedulable(); m_systems = new Feature("Systems"); EntitasSystemEnvironment parameters = new EntitasSystemEnvironment(m_contexts.game, EventRoute, Blackboard, ProcedureStateMachine, m_schedulable); CreateSystems(m_systems, parameters); m_systems.Initialize(); if (ProcedureStateMachine != null) { ProcedureStateMachine.EnterStateEvent += OnEnterState; RequireStateTransitionDelay("__Start"); } }
protected override void LeaveProcedure(StateEventArg arg) { m_procedureStateMachine?.Destroy(); m_systems.TearDown(); EventRoute.Dispose(); #if (!ENTITAS_DISABLE_VISUAL_DEBUGGING && UNITY_EDITOR) Object.Destroy(m_systems.gameObject); #endif m_blackboard = null; m_procedureStateMachine = null; m_systems = null; m_contexts = null; m_rootNode = null; m_eventRoute = null; }
protected override void EnterProcedure(StateEventArg userData) { m_contexts = new Contexts(); m_eventRoute = new EntitasEventRoute(m_contexts); m_rootNode = new GameObject(GetRootNodeName()).transform; RootNodeService.RootNode = m_rootNode; m_procedureStateMachine = CreateStateMachine(); foreach (var v in Region.Subvertices) { EntitasSubProcedure p = v as EntitasSubProcedure; if (p == null) { continue; } p.InitialSubProcedure(m_contexts, m_rootNode, EventRoute); } }
public FeatureEx(string name, IEventRoute eventRoute) : base(name) { }
public void InitialSubProcedure(Contexts contexts, Transform rootNode, IEventRoute eventRoute) { m_contexts = contexts; m_rootNode = rootNode; m_eventRoute = eventRoute; }
public EntitasSystemEnvironment(GameContext context, IEventRoute eventRoute, Blackboard blackboard, StateMachine stateMachine, Schedulable schedulable) : base(eventRoute, blackboard, stateMachine, schedulable) { Context = context; }