void InitialAnim()
    {
        mAnim = GetComponent<Animator>();

        if(mAnim != null)
        {
            Monitor[] monitors = mAnim.GetBehaviours<Monitor>();
            for (int Indx = 0; Indx < monitors.Length; ++Indx)
                monitors [Indx].AnimationEventFunc = AnimEventHandle;

            CameraTypeId = Animator.StringToHash ("CameraType");
        }
    }
        public override void OnStateExit(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
        {
            animator.ResetTrigger("bullet");
            if (l > 0.7f)
            {
                characterController.ReloadBulletComplete();
            }
            animator.SetBool("isReloadBullet", false);
            var iks = animator.GetBehaviours <PlayerIK>();

            for (int i = 0; i < iks.Length; i++)
            {
                iks[i].isIk = true;
            }
        }
Esempio n. 3
0
        public static IObservable <ObservableStateMachineTrigger.OnStateInfo> OnStateUpdate(this Animator animator, params int[] fullPathHashes)
        {
            var observableStateMachineTriggers = animator.GetBehaviours <ObservableStateMachineTrigger>();

            if (observableStateMachineTriggers.Length <= 0 || observableStateMachineTriggers == null)
            {
                Debug.LogWarning("No ObservableStateMachineTriggers were found on " + animator.name + " animator!");
                return(null);
            }

            var observableTriggers = observableStateMachineTriggers.Select(trigger => trigger.OnStateUpdateAsObservable()
                                                                           .Where(onStateInfo => fullPathHashes.Contains(onStateInfo.StateInfo.fullPathHash)));

            return(Observable.Merge(observableTriggers));
        }
Esempio n. 4
0
        public static Tamana.AnimatorManager.SetBool GetSetBool(string stateName, Animator animator)
        {
            var StateMachineBehaviours = animator.GetBehaviours <Tamana.AnimatorManager.SetBool>();

            for (int i = 0; i < StateMachineBehaviours.Length; i++)
            {
                if ((StateMachineBehaviours[i] as Tamana.AnimatorManager.SetBool).stateName == stateName)
                {
                    return(StateMachineBehaviours[i] as Tamana.AnimatorManager.SetBool);
                }
            }

            Debug.Log("Message = GetSetBool return null. From = " + animator.transform.name + ", when trying to get '" + stateName + "'.");
            return(null);
        }
Esempio n. 5
0
        public static IObservable <ObservableStateMachineTrigger.OnStateMachineInfo> OnStateMachineExit(this Animator animator, int fullPathHash)
        {
            var observableStateMachineTriggers = animator.GetBehaviours <ObservableStateMachineTrigger>();

            if (observableStateMachineTriggers.Length <= 0 || observableStateMachineTriggers == null)
            {
                Debug.LogWarning("No ObservableStateMachineTriggers were found on " + animator.name + " animator!");
                return(null);
            }

            var observableTriggers = observableStateMachineTriggers.Select(trigger => trigger.OnStateMachineExitAsObservable()
                                                                           .Where(onStateMachineInfo => onStateMachineInfo.StateMachinePathHash == fullPathHash));

            return(Observable.Merge(observableTriggers));
        }
Esempio n. 6
0
    public override void Start()
    {
        base.Start();
        _anim = GetComponent <Animator>();
        if (_anim != null)
        {
            BulletExplodeBehaviour[] eabs = _anim.GetBehaviours <BulletExplodeBehaviour>();
            for (var i = eabs.Length - 1; i >= 0; i--)
            {
                eabs[i].bullet = this;
            }
        }

        damage = 10;
    }
Esempio n. 7
0
        /// <summary>
        /// Funzione che esegue il setp della state machine
        /// </summary>
        public virtual void Setup(IContext _context)
        {
            stateMachine = GetComponent <Animator>();
            context      = _context;

            //Prendo tutti gli stati dall'animator come IState
            states = stateMachine.GetBehaviours <StateBase>().ToList <IState>();

            //Setup di tutti gli stati
            for (int i = 0; i < states.Count; i++)
            {
                states[i].Setup(context, OnStateStart, OnStateEnd);
                states[i].OnStateComplete += HandleOnStateComplete;
            }
        }
Esempio n. 8
0
    public BehaviourManager(Animator _anim, MonsterAI _monsterAI)
    {
        anim      = _anim;
        monsterAI = _monsterAI;
        behaviour = anim.GetBehaviours <GenericBehaviour> ();
        foreach (GenericBehaviour gb in behaviour)
        {
            gb.Initialize(this);
        }

        foreach (string s in MonsterAI.stateNames)
        {
            hashToName.Add(Animator.StringToHash(s), s);
        }
    }
Esempio n. 9
0
 private void Start()
 {
     PlayerAnimationQuitTrigger[] quitTrigger = animator.GetBehaviours <PlayerAnimationQuitTrigger>();
     for (int index = 0; index < quitTrigger.Length; index++)
     {
         quitTrigger[index].Controller = controller;
         if (quitTrigger[index].state == State.UseLeft)
         {
             quitTrigger[index].hasStarted = leftAttackHasStarted;
         }
         else if (quitTrigger[index].state == State.UseRight)
         {
             quitTrigger[index].hasStarted = rightAttackHasStarted;
         }
     }
 }
Esempio n. 10
0
        protected override void OnEnableOverride()
        {
            base.OnEnableOverride();

            VoxelStateMachineBehavior[] behaviors = m_animator.GetBehaviours <VoxelStateMachineBehavior>();
            if (behaviors.Length == 0)
            {
                Debug.LogError("Unable to find VoxelStateMachineBehavior");
                return;
            }

            for (int i = 0; i < behaviors.Length; ++i)
            {
                VoxelStateMachineBehavior behavior = behaviors[i];
                behavior.SetStateEnterCallback(OnAnimatorStateEnter);
            }
        }
Esempio n. 11
0
    void Start()
    {
        List <Animator> Animators = FindObjectsOfType <Animator> ().ToList();

        anim       = GetComponent <Animator> ();
        connecters = anim.GetBehaviours <AnimatorConnector> ();
        foreach (AnimatorConnector c in connecters)
        {
            foreach (Animator a in Animators)
            {
                if (a.runtimeAnimatorController.name.Contains(c.anim.runtimeAnimatorController.name))
                {
                    c.anim = a;
                }
            }
        }
    }
        private void Start()
        {
            mainCamera      = Camera.main;
            isCameraNotNull = mainCamera != null;

            animatorStates = animator.GetBehaviours <CharacterStateTransitionListener>()
                             .ToDictionary(listener => listener.State);

            var stateTransitionListener = animatorStates[CharacterAnimationState.ATTACK_1];

            stateTransitionListener.OnStateEnterEvents += OnAttack1StateEnter;
            stateTransitionListener.OnStateExitEvents  += OnAttack1StateExit;

            agent.updateRotation = false;
            agent.updatePosition = true;
            lastTargetPosition   = targetPosition;
        }
Esempio n. 13
0
    protected override void Start()
    {
        base.Start();


        // Disable the AIs own movement code
        ai.canMove = false;

        if (anim)
        {
            RootMotionConfigurator[] behaviourScripts = anim.GetBehaviours <RootMotionConfigurator>();
            foreach (RootMotionConfigurator script in behaviourScripts)
            {
                //script.smsGoTo = this;
            }
        }
    }
Esempio n. 14
0
        public static void Register(Animator animator, string name, WaitForAnimatorSignal node)
        {
            var found = false;

            foreach (var ss in animator.GetBehaviours <SendSignal>())
            {
                if (ss.signal == name)
                {
                    found = true;
                    ss.listeners.Add(node);
                }
            }
            if (!found)
            {
                Debug.LogError("Signal does not exist in animator: " + name);
            }
        }
Esempio n. 15
0
        // The unity docs (https://unity3d.com/learn/tutorials/modules/beginner/5-pre-order-beta/state-machine-behaviours)
        // mention that StateMachineBehaviour's should only be retrieved in the Start method
        // which is why we do it here
        public void Start()
        {
            // Animator can be null when users create GameObjects directly so in that case
            // Just don't bother attempting to inject the behaviour classes
            if (_animator != null)
            {
                var behaviours = _animator.GetBehaviours <StateMachineBehaviour>();

                if (behaviours != null)
                {
                    foreach (var behaviour in behaviours)
                    {
                        _container.Inject(behaviour);
                    }
                }
            }
        }
Esempio n. 16
0
    // Start is called before the first frame update
    protected virtual void Start()
    {
        if (_sensorTrigger != null)
        {
            AISensor script = _sensorTrigger.GetComponent <AISensor>();
            if (script)
            {
                script.parentStateMachine = this;
            }
        }

        // Fetch all states on this gameobject
        AIState[] states = GetComponents <AIState>();

        //Loop through all states and add them to the state dictionary
        foreach (AIState state in states)
        {
            if (state != null && !_states.ContainsKey(state.GetStateType()))
            {
                // Add this state to the state dictionary
                _states[state.GetStateType()] = state;
                // For each state found in the gameobject, we setup the state's state machine.
                state.SetStateMachine(this);
            }
        }

        // Initialize current state
        if (_states.ContainsKey(_currentStateType))
        {
            _currentState = _states[_currentStateType];
            _currentState.OnEnterState();
        }
        else
        {
            _currentState = null;
        }

        if (_animator)
        {
            AIStateMachineLink[] _scripts = _animator.GetBehaviours <AIStateMachineLink>();
            foreach (AIStateMachineLink script in _scripts)
            {
                script.stateMachine = this;
            }
        }
    }
Esempio n. 17
0
    static void AddEventSMB(Animator animator, string stateName, AnimationEventType eventType, System.Action <Animator> callback, int layer)
    {
        var layerName   = animator.GetLayerName(layer);
        var callbackSMB = animator.GetBehaviours(Animator.StringToHash(layerName + "." + stateName), 0);

        bool found = false;

        foreach (var smb in callbackSMB)
        {
            CallbackSMB clbk = smb as CallbackSMB;

            if (clbk.GetType() != typeof(CallbackSMB))
            {
                continue;
            }

            found = true;

            switch (eventType)
            {
            case AnimationEventType.STATE_ENTER:
                clbk.enterAction += callback;
                break;

            case AnimationEventType.STATE_END:
                clbk.exitAction += callback;
                break;

            case AnimationEventType.STATE_ENTER_TRANSITION_END:
                clbk.startTransition += callback;
                break;

            case AnimationEventType.STATE_EXIT_TRANSITION_START:
                clbk.exitTransition += callback;
                break;

            default: break;
            }
        }

        if (!found)
        {
            Debug.LogError("This animator does not have a state called " + stateName, animator);
        }
    }
Esempio n. 18
0
    private void InitBehaviours()
    {
        stateBehaviours   = new Dictionary <int, StateMachineBehaviourFix>();
        machineBehaviours = new Dictionary <int, StateMachineBehaviourFix>();
        var allBehaviours = animator.GetBehaviours <StateMachineBehaviourFix>();

        for (int i = 0; i < allBehaviours.Length; i++)
        {
            if (allBehaviours[i].attachedToStateMachine)
            {
                machineBehaviours[allBehaviours[i].stateHash] = allBehaviours[i];
            }
            else
            {
                stateBehaviours[allBehaviours[i].stateHash] = allBehaviours[i];
            }
        }
    }
Esempio n. 19
0
        public override void InstallBindings()
        {
            Container.Bind <IUnit>().WithId("Unit To Control").FromInstance(UnitToControl);

            if (UnitStateMachine == null)
            {
                return;
            }

            UnitStateMachine.Rebind();

            foreach (var behaviour in UnitStateMachine.GetBehaviours <StateMachineBehaviour>())
            {
                Container.Rebind(behaviour.GetType()).FromInstance(behaviour);

                Container.QueueForInject(behaviour);
            }
        }
Esempio n. 20
0
        public void Init(GameManager _gm)
        {
            gameSM  = GetComponent <Animator>();
            gameMng = _gm;

            context = new GameSMContext(gameMng, HandleGoToLevelCallback, HandleGoToOutcomeCallback, HandleGoToMenuCallback);

            foreach (StateMachineBehaviour state in gameSM.GetBehaviours <StateMachineBehaviour>())
            {
                IState newstate = state as IState;
                if (newstate != null)
                {
                    newstate.Setup(context);
                }
            }

            gameSM.SetTrigger("StartSM");
        }
Esempio n. 21
0
    void Start()
    {
        // Recupera la camera
        _camera = GetComponent <Camera> ();
        // Recupera l'animator
        _animator = GetComponent <Animator> ();

        // Recupera la lista di behaviour di tipo "SentinelBehaviour" dall'animator...
        SentinelBehaviour[] behaviours = _animator.GetBehaviours <SentinelBehaviour> ();
        foreach (SentinelBehaviour behaviour in behaviours)
        {
            // ...e gli assegna i dati dello scriptable object
            behaviour.Data = data;
        }

        // Se il bersaglio non è stato assegnato, lo cerca in scena
        if (target == null)
        {
            target = GameObject.FindGameObjectWithTag("Player").transform;
        }

        // Recupera il collider del bersaglio
        _targetCollider = target.GetComponent <Collider> ();

        // Inizializzo la lista dei bersagli
        _targetPoints = new List <Transform> ();

        // Recupero tutti i gameobjects taggati "PlayerTarget"
        // all'interno del bersaglio
        Transform[] list = target.GetComponentsInChildren <Transform> ();
        foreach (Transform t in list)
        {
            if (t.gameObject.tag == "PlayerTarget")
            {
                _targetPoints.Add(t);
            }
        }
        // Se non è stato trovato nessun elemento taggato,
        // aggiungo il bersaglio, in modo da averne almeno uno
        if (_targetPoints.Count == 0)
        {
            _targetPoints.Add(target);
        }
    }
Esempio n. 22
0
    private void Awake()
    {
        Init();

        #region StateMachine and Initialization
        if (SceneManager.GetActiveScene().name == "Menu")
        {
            SMController = FindObjectOfType <Animator>().GetComponent <Animator>();
            StateBehaviourBase.Context context = new StateBehaviourBase.Context()
            {
                SetupDone = false,
                id        = 1,
            };
            foreach (StateBehaviourBase state in SMController.GetBehaviours <StateBehaviourBase>())
            {
                state.Setup(context);
            }
        }
        //else {
        //    Setup();

        //    EnemyManager[] enemies = GameObject.FindObjectsOfType<EnemyManager>() as EnemyManager[];
        //    m_enemies = enemies.ToList();

        //    EnemyMover[] enemiesMovers = GameObject.FindObjectsOfType<EnemyMover>() as EnemyMover[];
        //    m_enemiesMovers = enemiesMovers.ToList();

        //    MovableObject[] movableObjects = GameObject.FindObjectsOfType<MovableObject>() as MovableObject[];
        //    m_movableObjects = movableObjects.ToList();

        //    Armor[] armors = GameObject.FindObjectsOfType<Armor>() as Armor[];
        //    m_armors = armors.ToList();

        //    Sword[] swords = GameObject.FindObjectsOfType<Sword>() as Sword[];
        //    m_sword = swords.ToList();

        //    //directionToMove = new Vector3(0f, 0f, Board.spacing);
        //}


        #endregion

        _isGameplay = false;
    }
Esempio n. 23
0
    private void Awake()
    {
        Npc                  = gameObject;
        Agent                = GetComponent <NavMeshAgent>();
        animator             = GetComponent <Animator>();
        healthComponent      = GetComponent <HealthComponent>();
        itemsToDropComponent = GetComponent <ItemsToDropComponent>();
        players              = FindObjectsOfType <PlayerCombatController>();

        healthComponent.SetValue(stats.maxHealth);
        healthComponent.OnDepletedCallback += Die;

        Agent.speed = stats.movementSpeed;

        foreach (NPCBaseFSM fsm in animator.GetBehaviours <NPCBaseFSM>())
        {
            fsm.NPCScript = this;
        }
    }
Esempio n. 24
0
    private void OnEnable()
    {
        if (!animator || !playerStats)
        {
            playerStats = GetComponent <CharacterStats>();
            animator    = GetComponent <Animator>();
            animator.SetFloat("AttackSpeed", AttackAnimationSpeed);

            attacksBehaviors = animator.GetBehaviours <ComboAttacks>();
        }
        for (int i = 0; i < attacksBehaviors.Length; i++)
        {
            attacksBehaviors[i].AttackStartedHandler += AttackStarted;
            attacksBehaviors[i].AttackEndedHandler   += AttackEnded;
        }

        playerStats.CharacterDamagedEventHandler += Damaged;
        //playerStats.CharacterDieEventHandler += Damaged;
    }
Esempio n. 25
0
        public static void Register(Animator animator, string name, IReceiveAnimatorSignal node)
        {
            var behaviours = animator.GetBehaviours <SendSignal>();
            var found      = false;

            for (var i = 0; i < behaviours.Length; i++)
            {
                var s = behaviours[i];
                if (s.signal == name)
                {
                    s.listeners.Add(node);
                    found = true;
                }
            }
            if (!found)
            {
                Debug.LogWarningFormat("Could not find a SendSignal ({0}) behaviour.", name);
            }
        }
Esempio n. 26
0
    void Start()
    {
        Animator animator = GetComponent <Animator>();

        if (animator != null)
        {
            triggers = animator.GetBehaviours <ObservableStateMachineTrigger>();

            foreach (ObservableStateMachineTrigger trigger in triggers)
            {
                trigger.OnStateEnterAsObservable()
                .Subscribe(x =>
                {
                    Debug.LogFormat("state name:{0} nameHash:{1} layerIndex:{2}", x.Animator.name, x.StateInfo.shortNameHash, x.LayerIndex);
                })
                .AddTo(this.gameObject);
            }
        }
    }
Esempio n. 27
0
    private void Awake()
    {
        foreach (var bav in _animator.GetBehaviours <LobbyCharacterAnimBehaviour>())
        {
            bav.SetExitAction(OnExitAnimState);
        }

        _boneDic.Add(AccessorieType.Hat, "Character_Head");


        _animDic.Add(AnimType.Angry, 2);
        _animDic.Add(AnimType.Idle, 1);
        _animDic.Add(AnimType.Jump, 2);
        _animDic.Add(AnimType.Dance, 1);
        _animDic.Add(AnimType.Run, 1);
        _animDic.Add(AnimType.Victory, 1);
        _animDic.Add(AnimType.Knock, 1);
        _animDic.Add(AnimType.Frustrate, 1);
    }
    //
    //  Initialization
    //

    void Awake()
    {
        if (!avatar)
        {
            avatar = gameObject;
        }

        animator = avatar.GetComponent <Animator>();

        // Get animator state machine behaviors (allows us to get animator events)
        AvatarGestureStateBehavior[] behaviors = animator.GetBehaviours <AvatarGestureStateBehavior>();
        foreach (var behavior in behaviors)
        {
            if (behavior.layerName == ANIM_RARM_LAYERNAME)
            {
                rarmStateBehavior = behavior;
            }
            else if (behavior.layerName == ANIM_LARM_LAYERNAME)
            {
                larmStateBehavior = behavior;
            }
            else if (behavior.layerName == ANIM_HEAD_LAYERNAME)
            {
                headStateBehavior = behavior;
            }
        }

        Debug.Assert(rarmStateBehavior != null && larmStateBehavior != null);

        // Attach event handlers to state machine behavior
        rarmStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart;
        rarmStateBehavior.AnimationEnd   += StateMachineBehavior_AnimationEnd;

        larmStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart;
        larmStateBehavior.AnimationEnd   += StateMachineBehavior_AnimationEnd;

        headStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart;
        headStateBehavior.AnimationEnd   += StateMachineBehavior_AnimationEnd;

        // Default to RArm
        currentStateBehavior =
            rarmStateBehavior;             // TODO -- could elect to dynamically subscribe/unsubscribe to behaviors as needed instead of checking them each time
    }
Esempio n. 29
0
    protected virtual void Start()
    {
        if (_sensorTrigger != null)
        {
            AISensor sensor = _sensorTrigger.GetComponent <AISensor>();
            if (sensor != null)
            {
                //Debug.Log("Setting Sensor Trigger");
                sensor.parentStateMachine = this;
            }
        }

        AIState[] states = GetComponents <AIState>();

        foreach (AIState aiState in states)
        {
            if (aiState != null && !_states.ContainsKey(aiState.GetStateType()))
            {
                _states.Add(aiState.GetStateType(), aiState);
                aiState.SetStateMachine(this);
            }
        }

        if (_states.ContainsKey(_currentStateType))
        {
            _currentState = _states[_currentStateType];
            _currentState.OnEnterState();
        }
        else
        {
            _currentState = null;
            Debug.LogErrorFormat("Wrong State Type : " + _currentStateType);
        }

        if (_animator != null)
        {
            AIStateMachineLink[] scripts = _animator.GetBehaviours <AIStateMachineLink>();
            foreach (AIStateMachineLink link in scripts)
            {
                link.stateMachine = this;
            }
        }
    }
Esempio n. 30
0
    protected virtual void Start()
    {
        if (_sensorTrigger != null)
        {
            AISensor script = _sensorTrigger.GetComponent <AISensor>();
            if (script != null)
            {
                script.parentStateMachine = this;
            }
        }

        AIState[] states = GetComponents <AIState>();


        foreach (AIState state in states)
        {
            if (state != null && !_states.ContainsKey(state.GetStateType()))
            {
                _states[state.GetStateType()] = state;
                state.SetStateMachine(this);
            }
        }

        if (_states.ContainsKey(_currentStateType))
        {
            _currentState = _states[_currentStateType];
            _currentState.OnEnterState();
        }
        else
        {
            _currentState = null;
        }

        if (_animator)
        {
            AIStateMachineLink[] scripts = _animator.GetBehaviours <AIStateMachineLink>();
            foreach (AIStateMachineLink script in scripts)
            {
                script.stateMachine = this;
            }
        }
    }
Esempio n. 31
0
    protected virtual void Start()
    {
        if (_sensorColiiderTrigger != null)
        {
            AISensor script = _sensorColiiderTrigger.GetComponent <AISensor>();
            if (script != null)
            {
                script.SetAIStateMachine(this);
            }
        }

        AIState[] states = GetComponents <AIState>(); //我们在怪物本身上挂载,多个【AIState】来分别控制。

        foreach (AIState state in states)
        {
            if (state != null && !_states.ContainsKey(state.GetStateType()))
            {
                _states.Add(state.GetStateType(), state);
                state.SetAIStateMachine(this);
            }
        }
        if (_states.ContainsKey(_currentStateType))
        {
            _currentState = _states[_currentStateType];
            _currentState.OnEnterState();
        }
        else
        {
            _currentState = null;
        }

        // 获取从动画器派生的所有AIStateMachineLink行为,
        // 并将它们的状态机引用设置为该状态机.
        if (_anim)
        {
            AIStateMachineLink[] scripts = _anim.GetBehaviours <AIStateMachineLink>();
            foreach (AIStateMachineLink script in scripts)
            {
                script.stateMachine = this;
            }
        }
    }
 void Awake()
 {
     // Find a reference to the Animator component in Awake since it exists in the scene.
     animator = GetComponent <Animator> ();
     if (animator) {
         CreatureStateMachineBehavior[] all_behaviors = animator.GetBehaviours<CreatureStateMachineBehavior>();
         for(int i=0;i<all_behaviors.Length;i++)
         {
             all_behaviors[i].game_controller = this;
         }
     }
 }
Esempio n. 33
0
    void Start()
    {
        animator = GetComponent<Animator>();
        foreach(SlidingDoorStateBehaviour behaviour in animator.GetBehaviours<SlidingDoorStateBehaviour>()) {
            behaviour.AddListener(this);
        }

        for(int i=0; i<floorPositions.Length; i++) {
            floorPositions[i].y = floorPositions[0].y + i * GameController.floorHeight;
        }

        currentTargetFloor = currentFloor;
        positionDriver = new TransformAnimator();
        targetFloors = 0;
        transform.position = GetFloorPosition(currentFloor);
    }
Esempio n. 34
0
	void Start () {
		// fighter is the model, fighterAnimator is the animation controller, we need access to it here in order
		// to set the correct bools that trigger different animation states
		fighterAnimator = fighter.GetComponent<Animator> ();
		// Capture the animation behaviors that underlie each state.  
		animatedBehaviours = fighterAnimator.GetBehaviours<BufferedStateMachineBehaviour>();

		UnityEngine.Debug.Log ("PWD: " + Directory.GetParent(Directory.GetCurrentDirectory()).FullName);

		health = 1000.0f; // Debug for animation
		maxHealth = health;

		gravity = 0.05f;
		initialJumpVelocity = .61f;

		blockPercentage = 1.0f;

		reach = 0.0f;
		attackDamage = 0.0f;
		lowAttack = false;
		inputHold = false;
		attackWasThrown = false;
		attackWasFinished = false;
		attackHit = false;
		blocking = false;
		lowBlocking = false;

		GameObject MIObj = GameObject.Find ("Info");
		MenuInfo MI_gd = MIObj.GetComponent<MenuInfo> ();
		if (player1) {
			if (MI_gd.isp1AI ()) {
				setPlayerAI ();
			}
				

			playerBodyBox = GameObject.Find ("Player1BodyBox");
			playerHitBox = GameObject.Find ("Player1HitBox");
			playerBlockBox = GameObject.Find ("Player1BlockBox");

			if (isAI) {
				int inPort = 4998;

				playerAI = new AI (inPort, inPort + 1);
				playerAI.verifyNetwork ();

			} else {
				Up = KeyCode.W;
				Down = KeyCode.S;
				Left = KeyCode.A;
				Right = KeyCode.D;
				Run = KeyCode.LeftShift;
				Attack1 = KeyCode.Q;
				Attack2 = KeyCode.E;
				Block = KeyCode.F;
			}

		} else { // player 2
			if (MI_gd.isp2AI ()) {
				setPlayerAI ();
			}
			playerBodyBox = GameObject.Find ("Player2BodyBox");
			playerHitBox = GameObject.Find ("Player2HitBox");
			playerBlockBox = GameObject.Find ("Player2BlockBox");

			if (isAI){
				int inPort = 5998;

				playerAI = new AI (inPort, inPort + 1);
				playerAI.verifyNetwork ();
			} else {
				Up = KeyCode.I;
				Down = KeyCode.K;
				Left = KeyCode.J;
				Right = KeyCode.L;
				Run = KeyCode.RightShift;
				Attack1 = KeyCode.U;
				Attack2 = KeyCode.O;
				Block = KeyCode.H;
			}

		}
	}
    void InitialAnim()
    {
        mAnim = GetComponent<Animator>();
        Monitor[] monitors = mAnim.GetBehaviours<Monitor>();
        for (int Indx = 0; Indx < monitors.Length; ++Indx)
            monitors [Indx].AnimationEventFunc = AnimEventHandle;

        AttackTypeId = Animator.StringToHash ("AttackType");
        ActionTypeId = Animator.StringToHash ("ActionType");
        triggerActionId = Animator.StringToHash ("triggerAction");
    }