public void setPrime(float turretVel, float hoodAngle, float flywheelRpm)
 {
     turretControl.setVelocity(turretVel);
     hoodControl.setAngle(hoodAngle);
     flywheelControl.setVelocity(flywheelRpm);
 }
    void FixedUpdate()
    {
        // Intake
        if (intakeState.getData() == "deploy")
        {
            intakeControl.deployIntake();
        }
        else if (intakeState.getData() == "retract")
        {
            intakeControl.retractIntake();
        }

        if (shooterState.getData() == "idle")
        {
            // Turret
            if (turretState.getData() == "rotate_turret")
            {
                turretControl.setAngle(turretWantedAngle.getData());
            }
            else
            {
                turretControl.setIdle();
            }

            // Flywheel
            if (flywheelState.getData() == "spin_up")
            {
                flywheelControl.setVelocity(flywheelWantedRpm.getData());
            }
            else
            {
                flywheelControl.setIdle();
            }

            // Hood
            if (hoodState.getData() == "rotate_hood")
            {
                hoodControl.setAngle(hoodWantedAngle.getData());
            }
            else
            {
                hoodControl.setIdle();
            }

            shooterControl.setIdle();
        }
        else if (shooterState.getData() == "prime")
        {
            float hoodAngle;
            float flywheelRpm;
            if (turretVerticalOffset.getData() < 14f)
            {
                hoodAngle   = (Mathf.Pow(turretVerticalOffset.getData(), 2.0f) * -0.177536f) + (turretVerticalOffset.getData() * 4.88588f) + 30.3647f;
                flywheelRpm = 4750f;
            }
            else
            {
                hoodAngle   = (Mathf.Pow(turretVerticalOffset.getData(), 4.0f) * -0.012616f) + (Mathf.Pow(turretVerticalOffset.getData(), 3.0f) * 0.904704f) + (Mathf.Pow(turretVerticalOffset.getData(), 2.0f) * -24.1019f) + (turretVerticalOffset.getData() * 283.051f) + -1173.54f;
                flywheelRpm = 4000f;
            }

            shooterControl.setPrime(turretVelocity.getData(), hoodAngle, flywheelRpm);
            Debug.Log(hoodAngle + " " + flywheelRpm);
        }
        else if (shooterState.getData() == "shoot")
        {
            float hoodAngle;
            float flywheelRpm;
            if (turretVerticalOffset.getData() < 14f)
            {
                hoodAngle   = (Mathf.Pow(turretVerticalOffset.getData(), 2.0f) * -0.177536f) + (turretVerticalOffset.getData() * 4.88588f) + 30.3647f;
                flywheelRpm = 4750f;
            }
            else
            {
                hoodAngle   = (Mathf.Pow(turretVerticalOffset.getData(), 4.0f) * -0.012616f) + (Mathf.Pow(turretVerticalOffset.getData(), 3.0f) * 0.904704f) + (Mathf.Pow(turretVerticalOffset.getData(), 2.0f) * -24.1019f) + (turretVerticalOffset.getData() * 283.051f) + -1173.54f;
                flywheelRpm = 4000f;
            }
            shooterControl.setPrime(turretVelocity.getData(), hoodAngle, flywheelRpm);
            shooterControl.setShoot();
        }
    }