public SystemEnvironment(IEventRoute eventRoute, Blackboard blackboard, StateMachine stateMachine, Schedulable schedulable)
 {
     this.EventRoute   = eventRoute;
     this.Blackboard   = blackboard;
     this.StateMachine = stateMachine;
     this.Schedulable  = schedulable;
 }
Exemple #2
0
    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;
    }
Exemple #3
0
    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;
    }
Exemple #5
0
    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;
    }