void Awake()
    {
        stateAttack = new DragonStateAttack();
        stateDie    = new DragonStateDie();
        stateIdle   = new DragonStateIdle();
        stateMove   = new DragonStateMove();

        FSM = new FiniteStateMachine <DragonController>();

        dragonAnimation = this.transform.GetChild(0).GetComponent <DragonAnimation>();
        dragonAttack    = this.GetComponentInChildren <DragonAttack>();

        StateAction    = EDragonStateAction.IDLE;
        StateDirection = EDragonStateDirection.NONE;
        StateOffense   = EDragonStateOffense.NONE;

        initalize();
    }
    void Awake()
    {
        stateAttack = new DragonStateAttack();
        stateDie = new DragonStateDie();
        stateIdle = new DragonStateIdle();
        stateMove = new DragonStateMove();

        FSM = new FiniteStateMachine<DragonController>();

        dragonAnimation = this.transform.GetChild(0).GetComponent<DragonAnimation>();
        dragonAttack = this.GetComponentInChildren<DragonAttack>();

        StateAction = EDragonStateAction.IDLE;
        StateDirection = EDragonStateDirection.NONE;
        StateOffense = EDragonStateOffense.NONE;

        initalize();
    }