public void InitFsmFunc() { fsm.AddStateTransition(State.Ready, Event.Call, State.Accelate); fsm.AddStateTransition(State.Ready, Event.Arrived, State.DoorOpening); fsm.AddStateTransition(State.Ready, Event.DoorOpenRequest, State.DoorOpening); fsm.AddStateTransition(State.Accelate, Event.AccelateEnd, State.NormalMove); fsm.AddStateTransition(State.NormalMove, Event.DecelerateStart, State.Decelerate); fsm.AddStateTransition(State.Decelerate, Event.Arrived, State.MoveStop); fsm.AddStateTransition(State.MoveStop, Event.DoorOpenRequest, State.DoorOpening); fsm.AddStateTransition(State.MoveStop, Event.EmptyPassinger, State.Ready); fsm.AddStateTransition(State.MoveStop, Event.DoorCloseEnd, State.Accelate); fsm.AddStateTransition(State.DoorOpening, Event.DoorOpenEnd, State.DoorOpened); fsm.AddStateTransition(State.DoorOpened, Event.DoorCloseStart, State.DoorClosing); fsm.AddStateTransition(State.DoorClosing, Event.DoorCloseEnd, State.Accelate); fsm.AddStateTransition(State.DoorClosing, Event.EmptyPassinger, State.Ready); elevatorAction[(int)State.Ready] = Ready; //문닫고 멈춰있는 상태 elevatorAction[(int)State.NormalMove] = NormalMove; //위아래 어느쪽이든 정상적인 이동상태 elevatorAction[(int)State.Decelerate] = Decelerate; //다음층에 멈추기 위한 감속상태 elevatorAction[(int)State.MoveStop] = MoveStop; elevatorAction[(int)State.DoorOpening] = DoorOpening; //문열는중 elevatorAction[(int)State.DoorOpened] = DoorOpened; //문열린 상태에서 승객내리고 타고 elevatorAction[(int)State.DoorClosing] = DoorClosing; //문닫히는 동안. elevatorAction[(int)State.Accelate] = Accelate; //이동에 대한 가속상태 elevatorAction[(int)State.Turn] = Turn; fsm.SetCurrentState(State.Ready); }