Exemplo n.º 1
0
        public override void Execute(FSMBehaviour fsm)
        {
            //NullReference Bugfix
            if (goToState == null)  //Nao permite estados nullos
            {
                return;
            }

            //StackOverflow Bufix
            if (goToState == this)  //Não permite eu mesmo como estado
            {
                return;
            }


            //StackOverflow Bufix
            if (goToState == connectedState) //Não permite que o proximo estado seja o estado em que eu estou conectado.
            {
                return;
            }


            //Jump to node
            goToState.SetCurrentState();
        }
Exemplo n.º 2
0
 private void ExecuteDecision(FSMBehaviour fsm)
 {
     foreach (DynamicDecision d in dynamics)
     {
         d.ExecuteDecisions(fsm);
     }
 }
Exemplo n.º 3
0
 public override void Execute(FSMBehaviour fsm)
 {
     if (action != null)
     {
         action.Execute(fsm);
     }
 }
Exemplo n.º 4
0
            private bool GetDecisionResult(FSMBehaviour fsm)
            {
                if (intpuPort.ConnectionCount <= 0)
                {
                    return(false);
                }

                bool result = false;

                List <NodePort>          connectionPorts = intpuPort.GetConnections();
                List <NodeBase_Decision> list            = new List <NodeBase_Decision>();

                foreach (NodePort p in connectionPorts)
                {
                    list.Add((NodeBase_Decision)p.node);
                }

                result = !list.Exists(r => r.Execute(fsm) == false);

                //Clear garbage
                connectionPorts.Clear();
                list.Clear();
                connectionPorts = null;
                list            = null;

                return(result);
            }
Exemplo n.º 5
0
        public override void Execute(FSMBehaviour fsm)
        {
            //Executa ações
            ExecuteActions(fsm);

            //Executa decisões de caso e vai para o proximo estado
            ExecuteDecision(fsm);
        }
        public override bool Execute(FSMBehaviour fsm)
        {
            if (Application.isEditor && Application.isPlaying == false)
            {
                return(false);
            }

            return(CheckDecision((NavMeshAgentFSM)fsm));
        }
Exemplo n.º 7
0
        public override void Execute(FSMBehaviour fsm)
        {
            //Executa ações
            ExecuteActions(fsm);
            //Executa decisões e muda de estado
            bool decisionResult = ExecuteDecisions(fsm);

            GoToNextState(decisionResult);
        }
Exemplo n.º 8
0
        public override bool Execute(FSMBehaviour fsm)
        {
            foreach (DynamicDecision d in dynamics)
            {
                d.ExecuteDecisions(fsm);
            }

            return(false);
        }
Exemplo n.º 9
0
        public override void Execute(FSMBehaviour fsm)
        {
            NodePort outPort = GetOutputPort("outState");

            if (outPort.ConnectionCount > 0)
            {
                NodeBase_State next = (NodeBase_State)outPort.Connection.node;
                next.SetCurrentState();
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Atualiza o <seealso cref="CurrentState"/> para executar ações e decisões. Modifica automaticamente o CurrentState
        /// caso haja uma decisão verdadeira e um estado de transição válido
        /// </summary>
        /// <param name="fsm">Finite State Machine</param>
        public void UpdateGraph(FSMBehaviour fsm)
        {
            if (_currentState == null)
            {
                return;
            }

            last_fsm_executed         = fsm;
            currentState_elapsedTime += Time.deltaTime;
            _currentState.Execute(fsm);
        }
Exemplo n.º 11
0
        private void ExecuteActions(FSMBehaviour fsm)
        {
            List <NodeBase_Action> actions = GetActions();

            foreach (NodeBase_Action action in actions)
            {
                action.Execute(fsm);
            }

            actions.Clear();
            actions = null;
        }
Exemplo n.º 12
0
        public override bool Execute(FSMBehaviour fsm)
        {
            List <NodeBase_Decision> decisions   = GetAllInputDecisions();
            List <NodeBase_Decision> orDecisions = GetAllOrInputDecisions();

            bool resultA = !decisions.Exists(r => r.Execute(fsm) == false);
            bool resultB = !orDecisions.Exists(r => r.Execute(fsm) == false);
            bool resultC = dynamics.Count <= 0 ? false : !dynamics.Exists(r => r.GetDecisionResult(fsm) == false);


            return(resultA || resultB || resultC);
        }
Exemplo n.º 13
0
        public override bool Execute(FSMBehaviour fsm)
        {
            CheckReferenceIsValid();

            if (aiDecision == null)
            {
                return(false);
            }

            bool result = aiDecision.Execute(fsm);

            return(result);
        }
Exemplo n.º 14
0
    public override void Execute(FSMBehaviour fsm)
    {
        NavMeshAgentFSM fsmn = (NavMeshAgentFSM)fsm;

        fsmn.navMeshAgent.isStopped = true;
        fsmn.navMeshAgent.ResetPath();
        fsmn.navMeshAgent.velocity = Vector3.zero;

        if (fsmn.rigidBody.isKinematic == false)
        {
            fsmn.rigidBody.velocity = Vector3.zero;
        }
    }
Exemplo n.º 15
0
    /// <summary>
    /// Texto del boton de inmortalidad
    /// </summary>
    //private string InmortalText;
    // Use this for initialization
    void Start()
    {
        // Obtengo los id de las capas
        PlayerLayer = LayerMask.NameToLayer("Player");
        ObstaclesLayer = LayerMask.NameToLayer("Obstacles");

        if (Player)
        {
            InmunityComponent = Player.GetComponentInChildren<Inmunity>();
            FSM = Player.GetComponentInChildren<PlayerManager>();
        }
        TextInmortal.text = "Inmortal";
    }
Exemplo n.º 16
0
        public override bool Execute(FSMBehaviour fsm)
        {
            NodePort inPort = GetInputPort("inDecision");

            if (inPort.Connection == null)
            {
                return(false);
            }

            NodeBase_Decision nodeDecision = (NodeBase_Decision)inPort.Connection.node;

            return(!nodeDecision.Execute(fsm));
        }
Exemplo n.º 17
0
        public override void Execute(FSMBehaviour fsm)
        {
            if (Application.isEditor && Application.isPlaying == false)
            {
                return;
            }

            Graph_State graph_state = (Graph_State)graph;
            IntVar      intvar      = null;

            if (graph_state.TryGetIntVar(varName, out intvar, localType))
            {
                intvar.value = GetInputValue <int>("inputValue", this.inputValue);
            }
        }
Exemplo n.º 18
0
        public XmasLogBehaviour1(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-log-behaviour1");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnUpdate(TargetingInitialPositionTaskUpdate);

            var shootingPatternBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.ShootingPattern)
                .OnEnter(ShootingPatternTaskEnter);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);
            _stateMachine.Add(BehaviourState.ShootingPattern, shootingPatternBehaviour);
        }
Exemplo n.º 19
0
        public XmasSnowmanBehaviour1(Boss boss) : base(boss)
        {
            InitialBehaviourLife = GameConfig.BossDefaultBehaviourLife * 0.5f;

            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-snowman-behaviour1");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnEnter(TargetingInitialPositionTaskEnter)
                .OnUpdate(TargetingInitialPositionTaskUpdate)
                .OnExit(TargetingInitialPositionTaskExit);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);

            _initialBehaviourPosition = new Vector2(Boss.InitialPosition.X, Boss.InitialPosition.Y + 500);
        }
Exemplo n.º 20
0
        public XmasSnowmanBehaviour3(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-snowman-behaviour3");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnUpdate(TargetingInitialPositionTaskUpdate);

            var carrotShotBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.CarrotShot)
                .OnEnter(CarrotShotTaskEnter)
                .OnUpdate(CarrotShotTaskUpdate);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);
            _stateMachine.Add(BehaviourState.CarrotShot, carrotShotBehaviour);
        }
Exemplo n.º 21
0
        public XmasLogBehaviour2(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-log-behaviour2");

            var targetingScreenCenterBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingScreenCenter)
                .OnUpdate(TargetingScreenCenterTaskUpdate);

            var shootingPatternBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.HelicopterPattern)
                .OnEnter(HelicopterPatternTaskEnter)
                .OnUpdate(HelicopterPatternTaskUpdate);

            _stateMachine.Add(BehaviourState.TargetingScreenCenter, targetingScreenCenterBehaviour);
            _stateMachine.Add(BehaviourState.HelicopterPattern, shootingPatternBehaviour);
        }
Exemplo n.º 22
0
        public XmasSnowmanBehaviour4(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-snowman-behaviour4");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnUpdate(TargetingInitialPositionTaskUpdate);

            var hatAttackBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.HatAttack)
                .OnEnter(HatAttackTaskEnter)
                .OnUpdate(HatAttackTaskUpdate);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);
            _stateMachine.Add(BehaviourState.HatAttack, hatAttackBehaviour);
        }
Exemplo n.º 23
0
        public XmasLogBehaviour3(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-log-behaviour3");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnUpdate(TargetingInitialPositionTaskUpdate);

            var babyLogBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.BabyLogs)
                .OnEnter(BabyLogTaskEnter)
                .OnUpdate(BabyLogTaskUpdate);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);
            _stateMachine.Add(BehaviourState.BabyLogs, babyLogBehaviour);

            _babyLogs = new List <BabyLog>();
        }
Exemplo n.º 24
0
            public void ExecuteDecisions(FSMBehaviour fsm)
            {
                if (outputPort.ConnectionCount <= 0)
                {
                    return;
                }

                bool result = GetDecisionResult(fsm);

                //Transition to other state
                if (result == false && outputPort.ConnectionCount <= 0)
                {
                    return;
                }

                NodeBase_State state = (NodeBase_State)outputPort.Connection.node;

                state.SetCurrentState();
            }
Exemplo n.º 25
0
        public void InitGraph(FSMBehaviour fsm)
        {
            currentState_elapsedTime = 0;

            if (RootState == null)
            {
                XNode.Node node = nodes.FirstOrDefault(r => r is NodeBase_State);
                if (node != null)
                {
                    _rootState    = (NodeBase_State)node;
                    _currentState = _rootState;
                }
            }

            if (RootState != null)
            {
                _currentState = RootState;
            }
        }
Exemplo n.º 26
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();


            fsmBehaviour = (FSMBehaviour)target;

            if (onSyncVariables == false)
            {
                fsmBehaviour.SyncVariablesAndTargets();
                onSyncVariables = true;
                return;
            }



            Draw_CreateVariablePanel();
            DrawDefaultErrorPanel();
            DrawGrahErrorPanel();
        }
Exemplo n.º 27
0
        public XmasLogBehaviour4(Boss boss) : base(boss)
        {
            // State machine
            _stateMachine = new FSM <BehaviourState>("xmas-log-behaviour4");

            var targetingInitialPositionBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.TargetingInitialPosition)
                .OnUpdate(TargetingInitialPositionTaskUpdate);

            var removingHollyBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.HollyAttack)
                .OnEnter(RemovingHollyTaskEnter);

            var hollyAttackBehaviour =
                new FSMBehaviour <BehaviourState>(BehaviourState.HollyAttack)
                .OnEnter(HollyAttackTaskEnter)
                .OnUpdate(HollyAttackTaskUpdate);

            _stateMachine.Add(BehaviourState.TargetingInitialPosition, targetingInitialPositionBehaviour);
            _stateMachine.Add(BehaviourState.RemovingHolly, removingHollyBehaviour);
            _stateMachine.Add(BehaviourState.HollyAttack, hollyAttackBehaviour);
        }
Exemplo n.º 28
0
        public override void Execute(FSMBehaviour fsm)
        {
            NodePort inputPort = GetInputPort("inputAction");

            if (inputPort.Connection == null)
            {
                return;
            }
            if (inputPort.Connection.node == null)
            {
                return;
            }


            float waitDelay = GetInputValue <float>("delay", this.delay);

            if (Time.time > lastDelayTime + waitDelay)
            {
                NodeBase_Action inputActNode = (NodeBase_Action)inputPort.Connection.node;
                inputActNode.Execute(fsm);

                lastDelayTime = Time.time;
            }
        }
Exemplo n.º 29
0
 public void AddExitBehaviour(FSMBehaviour behaviour)
 {
     this.hasBehaviours = true;
     this.exitBehaviours.Add(behaviour);
 }
Exemplo n.º 30
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 /// <param name="stateID">Identificador del estado</param>
 public State(FSMBehaviour character, StateID stateID)
 {
     Character = character;
     ID = stateID;
 }
Exemplo n.º 31
0
 public void AddStartBehaviour(FSMBehaviour behaviour)
 {
     this.hasBehaviours = true;
     this.startBehaviours.Add(behaviour);
 }
Exemplo n.º 32
0
 public void AddUpdateBehaviour(FSMBehaviour behaviour)
 {
     this.hasBehaviours = true;
     this.updateBehaviours.Add(behaviour);
 }
Exemplo n.º 33
0
 public abstract bool Execute(FSMBehaviour fsm);
 public override bool Execute(FSMBehaviour fsm)
 {
     return(CheckDecision((NavMeshAgentFSM)fsm));
 }
Exemplo n.º 35
0
 public abstract void Execute(FSMBehaviour fsm);
Exemplo n.º 36
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 public HitState(FSMBehaviour character)
     : base(character, StateID.Hit)
 {
     InmunityComponent = Character.GetComponentInChildren<Inmunity>();
     Direction = Vector3.down;
 }
Exemplo n.º 37
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 public JumpState(FSMBehaviour character)
     : base(character, StateID.Jump)
 {
     Direction = Vector3.forward + Vector3.up;
 }
Exemplo n.º 38
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 public StopState(FSMBehaviour character)
     : base(character, StateID.Stop)
 {
     Direction = Vector3.zero;
     TrackPosition = character.GetComponent<TrackLocation>();
 }
Exemplo n.º 39
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 /// <param name="side">Direccion de movimiento</param>
 public MoveToSideState(FSMBehaviour character, StateID stateID)
     : base(character, stateID)
 {
 }
Exemplo n.º 40
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 /// <param name="target">Objetivo a seguir</param>
 public FollowState(FSMBehaviour character)
     : base(character, StateID.Follow)
 {
     Movement = Character.GetComponentInChildren<MovementManager>();
 }
Exemplo n.º 41
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 public MoveRightState(FSMBehaviour character)
     : base(character, StateID.Right)
 {
     Direction = Vector3.right + Vector3.forward;
 }
Exemplo n.º 42
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 /// <param name="side">Direccion de movimiento</param>
 public MoveLeftState(FSMBehaviour character)
     : base(character, StateID.Left)
 {
     Direction = Vector3.left + Vector3.forward;
 }
Exemplo n.º 43
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 /// <param name="stateID">Estado</param>
 public MoveState(FSMBehaviour character, StateID stateID)
     : base(character, stateID)
 {
     Movement = Character.GetComponentInChildren<MovementManager>();
 }
Exemplo n.º 44
0
    /// <summary>
    /// Inicializacion del componente
    /// </summary>
    private void Start()
    {
        // Obtengo los id de las capas
        PlayerLayer = LayerMask.NameToLayer("Player");
        ObstaclesLayer = LayerMask.NameToLayer("Obstacles");

        // Busco componentes
        FPS = GetComponent<FramesPerSecond>();
        Track = GetComponent<PlayerTrack>();
        MemoryStats = GetComponent<ShowMemoryStats>();
        TargetFrameRate = LastFrameRate = -1;

        // Solo inicializo si hay un game manager
        //if (GameManager.Instance)
        //    Time = GameManager.Instance.GetComponent<TimeManager>();

        // Solo inicializo estos si hay un Player asignado
        if (Player)
        {
            InmunityComponent = Player.GetComponentInChildren<Inmunity>();
            FSM = Player.GetComponentInChildren<PlayerManager>();
        }

        // Inicializo GUI
        InmortalText = "Inmortal";
        GUISettings();

        // SETEAR EL FRAME RATE DE LA APLICACION
        Application.targetFrameRate = 60;
    }
Exemplo n.º 45
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="character">Personaje a controlar</param>
 public ForwardState(FSMBehaviour character)
     : base(character, StateID.Forward)
 {
     Direction = Vector3.forward;
 }