예제 #1
0
    protected virtual IEnumerator flipTransitionRoutine(float startpoint, float endpoint, float duration)
    {
        float elapsedTime = 0;
        float ratio       = elapsedTime / duration;

        //int property = Shader.PropertyToID("_D7A8CF01");

        while (ratio < 1f)
        {
            ratio = elapsedTime / duration;
            float value = Mathf.Lerp(startpoint, endpoint, TweeningFunctions.Tween(tween, ratio));

            mRenderer.GetPropertyBlock(_propBlock);
            _propBlock.SetFloat("_TransitionState", value);
            mRenderer.SetPropertyBlock(_propBlock);
            //material.SetFloat("_TransitionState", value);
            //RendererExtensions.UpdateGIMaterials(mRenderer);

            elapsedTime += Time.deltaTime;
            yield return(null);
        }
    }
예제 #2
0
    IEnumerator RotateRoutine(float actualDuration)
    {
        //Debug.Log("start rotation "+ startRotation + "end rotation " + endRotation + "actualduration " + actualDuration);
        float elapsedTime = 0f;

        ratio = 0f;
        Vector3 start = transform.localEulerAngles;
        Vector3 end;

        if (startRotationInLaser && Toolbox.Instance.PlayerInLaser() || (!startRotationInLaser && Toolbox.Instance.PlayerInReal()))
        {
            end = startRotation;
        }

        else
        {
            end = endRotation;
        }



        while (ratio < 1f)
        {
            ratio = elapsedTime / actualDuration;
            Vector3 value = Vector3.Lerp(start, end, TweeningFunctions.Tween(tween, ratio));

            transform.localEulerAngles = value;

            if (audio)
            {
                audio.volume = TweeningFunctions.BackAndForth(ratio);
            }

            elapsedTime += Time.fixedDeltaTime;
            yield return(new WaitForFixedUpdate());
        }

        ratio = 0f;
    }