public IEnumerator Rotate(float x, float y, float z)
    {
        // disable fuse button during rotation to let rotation complete before attachment
        fuseButton.interactable = false;

        // Integration for battery power.
        if (!controlsDisabled && !rotating)
        {
            BatterySystem.SubPower(1);
        }

        // Can only start rotating if not already rotating. Prevents bugs with part movement.
        if (!rotating)
        {
            // Set rotate flag and start rotating.
            // Flag is reset every frame to ensure the check only runs at the end of all queued rotations.
            rotating = true;
            for (int i = 0; i < 30; i++)
            {
                toRotate.transform.Rotate(x / 30f, y / 30f, z / 30f, Space.World);
                rotating = true;
                yield return(null);
            }
            rotating = false;
            yield return(null);             // Wait a frame to see if another active rotation resets this flag to true.

            if (!rotating)
            {
                StartCoroutine(CheckRotation());
            }
        }
    }
    public void startRotatingForward()
    {
        // disable battery restrictions when in tutorial
        if (tutorialOn || BatterySystem.GetPower() > 0)
        {
            if (!tutorialOn)
            {
                BatterySystem.SubPower(1);
            }
            numXClicks++;
            RotateBehavior rotateBehavior = objectToRotate.GetComponent <RotateBehavior>();
            if (!rotateBehavior.rotating())
            {
                //rotate
                rotateBehavior.setRotatingForward(true);
                float targetRotation = rotateBehavior.getTargetRotation();

                objectToRotate.transform.Rotate(-targetRotation, 0, 0);
                rotateBehavior.setEndRotation(objectToRotate.transform.rotation);
                objectToRotate.transform.Rotate(targetRotation, 0, 0);
            }

            timerStart = true;
        }
    }
Exemple #3
0
    IEnumerator Rotate(float x, float y, float z)
    {
        // Integration for battery power.
        if (!tutorialOn)
        {
            BatterySystem.SubPower(1);
        }

        // Set rotate flag and start rotating.
        // Flag is reset every frame to ensure the check only runs at the end of all queued rotations.
        rotating = true;
        for (int i = 0; i < 45; i++)
        {
            toRotate.transform.Rotate(x / 45f, y / 45f, z / 45f, Space.World);
            rotating = true;
            yield return(null);
        }
        rotating = false;
        yield return(null);             // Wait a frame to see if another active rotation resets this flag to true.

        if (!rotating)
        {
            StartCoroutine(CheckRotation());
        }
    }