//Load unit info of selected units (bottom left panel)
        void LoadMultipleFrames(int player)
        {
            for (int i = 0; i < 18; i++)
            {
                multipleSelectionInfo.transform.GetChild(i).gameObject.SetActive(false);
            }

            for (int i = 0; i < selectedUnits.Count; i++)
            {
                MeleeWarriorUnitScript unit_mWUS = multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetComponent <MeleeWarriorUnitScript>();
                unit_mWUS.id = selectedUnits[i];
                multipleSelectionInfo.transform.GetChild(i).gameObject.SetActive(true);
                multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetComponent <Image>().sprite      = units[deployedUnits[selectedUnits[i]].id].icon[player];
                multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetChild(0).GetChild(0).localScale = new Vector3((deployedUnits[selectedUnits[i]].currentHP / (float)deployedUnits[selectedUnits[i]].maxHP), 1, 1);
            }
        }
        //Refresh unit creation queue (bottom left panel)
        void UpdateQueuePanel(int player)
        {
            if (selectedUnits.Count == 0)
            {
                return;
            }

            //Barracks
            if (!deployedUnits[selectedUnits[0]].canAttack)
            {
                if (control == player)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        deployInfo.transform.GetChild(3).GetChild(i).gameObject.SetActive(false);
                    }

                    for (int i = 1; i < players[player].queueUnits.Count; i++)
                    {
                        deployInfo.transform.GetChild(3).GetChild(i - 1).gameObject.SetActive(true);

                        MeleeWarriorUnitScript unit_mWUS = deployInfo.transform.GetChild(3).GetChild(i - 1).GetChild(0).GetComponent <MeleeWarriorUnitScript>();
                        unit_mWUS.owner = player;
                        unit_mWUS.id    = i;
                        unit_mWUS.GetComponent <Image>().sprite = units[players[player].queueUnits[i].id].icon[player];
                    }

                    if (players[player].queueUnits.Count >= 1)
                    {
                        deployInfo.SetActive(true);
                        MeleeWarriorUnitScript unit_mWUS = deployInfo.transform.GetChild(2).GetChild(0).GetComponent <MeleeWarriorUnitScript>();
                        unit_mWUS.owner = player;
                        unit_mWUS.GetComponent <Image>().sprite = units[players[player].queueUnits[0].id].icon[player];
                    }
                    else
                    {
                        deployInfo.SetActive(false);
                    }
                }
            }
            else
            {
                deployInfo.SetActive(false);
            }
        }
        //Refresh deployable units buttons (bottom mid panel)
        public void UpdateDeployableFrames(int player)
        {
            for (int i = 0; i < deployMenu[player].transform.childCount; i++)
            {
                MeleeWarriorUnitScript unit_mWUS = deployMenu[player].transform.GetChild(i).GetComponent <MeleeWarriorUnitScript>();
                Color frameColor = unit_mWUS.transform.GetChild(0).GetComponent <Image>().color;

                if (CheckIfDeployable(unit_mWUS.id, player))
                {
                    frameColor = new Color(frameColor.r, frameColor.g, frameColor.b, 1f);
                }
                else
                {
                    frameColor = new Color(frameColor.r, frameColor.g, frameColor.b, 0.5f);
                }
                unit_mWUS.transform.GetChild(0).GetComponent <Image>().color = frameColor;
            }
        }
        //Create unit in barracks
        public void SpawnUnit(int unitId, int player)
        {
            GameObject newObject = null;

            deployedUnits.Add(new UnitInstance(deployedUnits.Count, player, newObject = Instantiate(units[unitId].unitPrefab[player], barracks[player].transform.position + (barracks[player].transform.forward * 3f), Quaternion.identity), newObject.AddComponent <NavMeshAgent>(), newObject.GetComponent <Animator>(), units[unitId]));

            UnitInstance newUnit = deployedUnits[deployedUnits.Count - 1];

            MeleeWarriorUnitScript unit_mWUS = newObject.AddComponent <KevinIglesias.MeleeWarriorUnitScript>();

            unit_mWUS.coreScript = this;

            unit_mWUS.guid  = deployedUnits.Count - 1;
            unit_mWUS.id    = unitId;
            unit_mWUS.owner = player;

            newUnit.navAgent.baseOffset            = -0.04f;
            newUnit.navAgent.radius                = 0.075f;
            newUnit.navAgent.speed                 = 2.75f;
            newUnit.navAgent.acceleration          = 60f;
            newUnit.navAgent.stoppingDistance      = 0.5f;
            newUnit.navAgent.obstacleAvoidanceType = ObstacleAvoidanceType.GoodQualityObstacleAvoidance;
        }
        override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            if (mWUS == null)
            {
                mWUS = animator.GetComponent <MeleeWarriorUnitScript>();
            }

            if (rb == null)
            {
                rb = animator.GetComponent <Rigidbody>();
            }

            //Attack
            if (mWUS != null)
            {
                mWUS.Attack();
            }

            //Avoid being pushed when attacking
            if (rb != null)
            {
                rb.constraints = RigidbodyConstraints.FreezeAll;
            }
        }