// Update is called once per frame
    void Update()
    {
        if (GeoGameManager.instance.GetCurrentGameStage() == GeoStage.InGame || GeoGameManager.instance.GetCurrentGameStage() == GeoStage.Tutorial)
        {
            if (!waveSent)
            {
                //scaleFactor = MicroPhoneInput.instance.GetScaledLoudness ();
                scaleFactor = PitchInput.instance.GetScaledPitch();
                Debug.Log("scaledFactor: " + scaleFactor);
                float delta = Mathf.Abs(scaleFactor - currentPower);
                if (currentPower > scaleFactor)
                {
                    currentPower = Mathf.MoveTowards(currentPower, scaleFactor, chargeLoseSpeed * Mathf.Clamp01(delta / 0.2f) * Time.deltaTime);
                }
                else
                {
                    //Debug.Log ("recording:"+scaleFactor);
                    currentPower = Mathf.MoveTowards(currentPower, scaleFactor, chargeSpeed * Mathf.Clamp01(delta / 0.2f) * Time.deltaTime);
                }
            }
            else
            {
                /********After sending a wave out, player need to wait for the wave to move back to the original place******/
                currentPower = Mathf.MoveTowards(currentPower, 0, fallBackSpeed * Time.deltaTime);
                if (currentPower == 0)
                {
                    waveSent = false;
                }
            }
            /**********Send Wave with one click**************************/
            if (Input.GetButtonDown("SendWave") && canSendWave)
            {
                if (currentPower > 0.05f && waveSent == false)
                {
                    GeoGameManager.instance.CreateDetectWave(currentPower * MaxDepth, sendDir.up);
                    waveSent = true;
                    SoundFXCtrl.instance.PlaySound(3, 0.5f);
                }
            }
        }
        else
        {
            scaleFactor = 0;
        }

        crossHairCtrl.UpdatePosition(currentPower * MaxDepth);

        float crossHairMovement = Input.GetAxis("Horizontal_Stage1");

        if (crossHairMovement < 0)
        {
            sendDir.up = Vector3.RotateTowards(sendDir.up, leftSpinAngle, spinSpeed * Time.deltaTime, 0.0f);
            if (Vector3.Angle(sendDir.up, leftSpinAngle) < 3)
            {
                spinLeft = false;
            }
        }
        else if (crossHairMovement > 0)
        {
            sendDir.up = Vector3.RotateTowards(sendDir.up, rightSpinAngle, spinSpeed * Time.deltaTime, 0.0f);
            if (Vector3.Angle(sendDir.up, rightSpinAngle) < 3)
            {
                spinLeft = true;
            }
        }

        if (waveSent == false && currentPower > 0.05f)
        {
            crossHairCtrl.ActiveState();
        }
        else
        {
            crossHairCtrl.NegativeState();
        }

        //energyBar.localScale = new Vector3(currentPower*0.4f, 0.4f, 1);
    }