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); }
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); } } }
public void SwitchState() { state = (state == States.State.INTERACTING) ? States.State.PLACING : States.State.INTERACTING; }
void Awake() { placeables = new List <Placeable>(); state = States.State.PLACING; }
public States.State CreateState(string stateStr) { States.State state = new States.State (stateStr); return state; }
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;
private void AddState(Variable head, States.State currentState) { AddReduceAccept(head, currentState); AddShiftGo(currentState); }
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; }