public override void Initialize()
 {
     Body             = GetComponent <Rigidbody>();
     CurrentState     = AgentStateType.Idle;
     StartPosition    = transform.position;
     PreviousPosition = StartPosition;
     AssignStateDictionary();
     InternalStepCount = 0;
     IsDoneCalled      = false;
     OnTaskDone(); // force update of target and goal
 }
    protected virtual void Move(float[] vectorAction)
    {
        // agent is idle
        if (vectorAction[0] == 0 && vectorAction[1] == 0)
        {
            CurrentState = AgentStateType.Idle;
            return;
        }

        // agent is moving
        CurrentState = AgentStateType.Move;
        StateDictionary[CurrentState].DoAction(this, vectorAction);
    }