public virtual void Initialize(AbstractFSMState state)
 {
     if(CurrentState != null)
     {
         CurrentState.Exit();
     }
     CurrentState = state;
     CurrentState.Enter();
 }
 public virtual void ChangeState(AbstractFSMState state)
 {
     if(CurrentState != null)
     {
         CurrentState.Exit();
     }
     else
     {
         throw new System.Exception("Pass null state");
     }
     CurrentState = state;
     CurrentState.Enter();
 }