view Orchestland/Assets/LeapMotion/Widgets/Scripts/Utils/FrameRateControls.cs @ 1:f7675884f2a1

Add Orchestland project
author Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2015 23:09:20 +0900
parents
children
line wrap: on
line source

using UnityEngine;
using System.Collections;

/// <summary>
/// Provides control of target frame rate.
/// </summary>
/// <remarks>
/// This utility is useful for verifying frame-rate independence of behaviors.
/// </remarks>
public class FrameRateControls : MonoBehaviour {
  public int targetRenderRate = 60; // must be > 0
  public int targetRenderRateStep = 1;
  public int fixedPhysicsRate = 50; // must be > 0
  public int fixedPhysicsRateStep = 1;
  public KeyCode physicsI = KeyCode.RightShift;
  public KeyCode decrease = KeyCode.DownArrow;
  public KeyCode increase = KeyCode.UpArrow;
  public KeyCode resetAll = KeyCode.Delete;

	// Use this for initialization
	void Awake () {
		if (QualitySettings.vSyncCount != 0) {
			Debug.Log("vSync will override target frame rate");
			return;
		}

    Application.targetFrameRate = targetRenderRate;
    Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate);
	}
	
	// Update is called once per frame
	void Update () {
    if (Input.GetKey (physicsI)) {
      if (Input.GetKeyDown (decrease)) {
        if (fixedPhysicsRate > fixedPhysicsRateStep) {
          fixedPhysicsRate -= fixedPhysicsRateStep;
          Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate);
        }
      }
      if (Input.GetKeyDown (increase)) {
        fixedPhysicsRate += fixedPhysicsRateStep;
        Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate);
      }
    } else {
      if (Input.GetKeyDown (decrease)) {
        if (targetRenderRate > targetRenderRateStep) {
          targetRenderRate -= targetRenderRateStep;
          Application.targetFrameRate = targetRenderRate;
        }
      }
      if (Input.GetKeyDown (increase)) {
        targetRenderRate += targetRenderRateStep;
        Application.targetFrameRate = targetRenderRate;
      }
    }
    if (Input.GetKeyDown (resetAll)) {
      Reset();
    }
  }

  public void Reset() {
    targetRenderRate = 60;
    fixedPhysicsRate = 50;
    Application.targetFrameRate = -1;
    Time.fixedDeltaTime = 0.02f;
  }
}