void Update()
    {
        if (canControl)
        {
            // Attack Controls
            // NEED TO UPDATE: Attack timing and type depends on current base attack (shot or laser)
            if (Input.GetButton("Fire1"))
            {
                if (currPow_2_attack_laser == 0)
                {
                    if (Time.time > nextFire)
                    {
                        attackController.FireWeapon(0);
                        nextFire = Time.time + rateOfFire;

                        // Fire attacks from active Options
                        for (int i = 0; i < currPow_4_optionCount; i++)
                        {
                            options[i].attackController.FireWeapon(0);
                        }
                    }
                }
                else
                {
                    // Check if laser is currently in-use
                    if (!attackController.laserController.attack_isFiring)
                    {
                        attackController.FireWeapon(1);

                        // Fire attacks from active Options
                        for (int i = 0; i < currPow_4_optionCount; i++)
                        {
                            options[i].attackController.FireWeapon(1);
                        }
                    }
                }

                // Missile attack refresh rate is independent from main attack
                if (currPow_1_missile != 0)
                {
                    attackController.FireMissiles(currPow_1_missile);

                    // Fire missiles from active Options
                    for (int i = 0; i < currPow_4_optionCount; i++)
                    {
                        options[i].attackController.FireMissiles(currPow_1_missile);
                    }
                }
            }

            // Powerup Controls
            if (Input.GetButton("Fire2"))
            {
                bool powerUp_isUsed = false;

                //Debug.Log("Fire2 pressed. Power Meter = " + powerMeterController.currentLitMeter);
                switch (powerMeterController.currentLitMeter)
                {
                case 0:             // Speed Up
                    powerUp_isUsed = PowerUpFX_0_SpeedUp();
                    break;

                case 1:             // Missile
                    powerUp_isUsed = PowerUpFX_1_Missile();
                    break;

                case 2:             // Laser
                    powerUp_isUsed = PowerUpFX_2_Laser();
                    break;

                case 3:             // Charge
                    break;

                case 4:             // Option
                    powerUp_isUsed = PowerUpFX_4_Option();
                    break;

                case 5:             // Shield
                    break;

                default:            // Do nothing
                case -1:
                    break;
                }

                // Reset power meter if power up used (only when button pressed when not empty and not over maxed power up)
                if (powerMeterController.currentLitMeter != -1 && powerUp_isUsed == true)
                {
                    powerUpFX_RippleFX.gameObject.SetActive(true);
                    powerUpFX_RippleFX.SetTrigger("RestartFX");
                    powerMeterController.ResetMeter();
                }
            }
        }

        if (animator.GetCurrentAnimatorClipInfo(0)[0].clip.name != "Player_SpawnIn")
        {
            animator.applyRootMotion = true;
        }
        else
        {
            animator.applyRootMotion = false;
        }
    }