示例#1
0
        void SwitchState(States.State newState)
        {
            // If null is passed in, return nothing.
            if (newState == null)
            {
                return;
            }

            // If we are in a state, call it's onEnd.
            if (state != null)
            {
                state.OnEnd();
            }

            // Switch the state
            state = newState;

            // Call the new state's start function.
            state.OnStart(this);
        }
示例#2
0
 private void AddShiftGo(States.State currentState)
 {
     foreach (KeyValuePair <ISymbol, States.State> fsmStateNextState in currentState.NextStates)
     {
         //shift
         if (fsmStateNextState.Key is Terminal terminal)
         {
             ParserAction action = new ParserAction
             {
                 ShiftState = fsmStateNextState.Value.StateId,
                 Action     = Action.Shift
             };
             AddParseActionToTable(currentState.StateId, _mapperToNumber.Map(terminal), action);
         }
         //goto
         else if (fsmStateNextState.Key is Variable variable)
         {
             GoToTable[currentState.StateId, _mapperToNumber.Map(variable)] =
                 new GoTo(fsmStateNextState.Value.StateId);
         }
     }
 }
示例#3
0
 public void SwitchState()
 {
     state = (state == States.State.INTERACTING) ? States.State.PLACING : States.State.INTERACTING;
 }
示例#4
0
 void Awake()
 {
     placeables = new List <Placeable>();
     state      = States.State.PLACING;
 }
示例#5
0
 public States.State CreateState(string stateStr)
 {
     States.State state = new States.State (stateStr);
     return state;
 }
示例#6
0
文件: Host.cs 项目: iwaitu/babbot
 public void Start(string iScript)
 {
     //script = Load("Scripts/PatTestScript.cs");
     script = Load(iScript);
     ProcessManager.Player.StateMachine.SetGlobalState(script);
 }
 /// <summary>
 /// 現在のステートが指定した引数と同じステートかどうか
 /// </summary>
 /// <param name="state"></param>
 /// <returns>true = 同じステート. false = 同じステートではない</returns>
 public bool WheterCurrentState(States.State state) => m_StateMachine.CurrentState == state;
示例#8
0
 public void Start(string iScript)
 {
     //script = Load("Scripts/PatTestScript.cs");
     script = Load(iScript);
     ProcessManager.Player.StateMachine.SetGlobalState(script);
 }
示例#9
0
 private void AddState(Variable head, States.State currentState)
 {
     AddReduceAccept(head, currentState);
     AddShiftGo(currentState);
 }
示例#10
0
        void Update()
        {
            if (state == States.State.PLACING)
            {
                if (state != prevState)
                {
                    //raycastTargets.SetActive(true);
                    DisableArtColliders();
                    EnableRaycastColliders();
                    EnableRaycastRenderers();
                }

                if (Input.GetMouseButtonDown(0) && raycastInteraction.hitObject == raycastMove)
                {
                    placeableManager.DisableRaycastColliders();
                    transformState = TransformState.MOVING;
                }

                if (transformState == TransformState.MOVING && prevTransformState == transformState && !initialPlacement)
                {
                    if (raycastInteraction.hitObject.GetComponent <ARPlane>() != null && Input.GetMouseButton(0))
                    {
                        transform.position = raycastInteraction.hitPosition;
                    }
                    else
                    {
                        transformState = TransformState.NOTHING;
                        placeableManager.EnableRaycastColliders();
                    }
                }

                if (transformState == TransformState.MOVING && initialPlacement)
                {
                    raycastInteraction.Raycast(false);
                    if (raycastInteraction.hitObject != null)
                    {
                        if (raycastInteraction.hitObject.GetComponent <ARPlane>() != null)
                        {
                            placeableManager.DisableRaycastColliders();
                            transform.position = raycastInteraction.hitPosition;
                            Debug.Log(raycastInteraction.hitPosition);
                        }
                        if (Input.GetMouseButtonUp(0))
                        {
                            raycastInteraction.useMouse = true;
                            transformState = TransformState.NOTHING;
                            placeableManager.EnableRaycastColliders();
                            initialPlacement = false;
                        }
                    }
                }
            }

            if (state == States.State.INTERACTING)
            {
                if (state != prevState)
                {
                    DisableRaycastColliders();
                    EnableArtColliders();
                    DisableRaycastRenderers();
                }
            }

            prevTransformState = transformState;
            prevState          = state;
        }