{"size": 1515, "ext": "js", "max_stars_repo_path": "Assets/MagicalEffects/Scripts/fps.js", "max_stars_repo_name": "calben/SpaceVikings", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "Assets/MagicalEffects/Scripts/fps.js", "max_issues_repo_name": "calben/SpaceVikings", "max_issues_repo_issues_event_min_datetime": "2015-03-28T20:30:43.000Z", "max_issues_repo_issues_event_max_datetime": "2015-03-28T20:57:25.000Z", "max_forks_repo_path": "Assets/MagicalEffects/Scripts/fps.js", "max_forks_repo_name": "calben/SpaceVikings", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": 2, "max_forks_count": null, "avg_line_length": 29.7058823529, "max_line_length": 66, "alphanum_fraction": 0.6772277228}
// Attach this to a GUIText to make a frames/second indicator.
//
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
//
// It is also fairly accurate at very low FPS counts (<10).
// We do this not by simply counting frames per interval, but
// by accumulating FPS for each frame. This way we end up with
// correct overall FPS even if the interval renders something like
// 5.5 frames.
 
var updateInterval = 1.0;
private var accum = 0.0; // FPS accumulated over the interval
private var frames = 0; // Frames drawn over the interval
private var timeleft : float; // Left time for current interval
private var fps = 15.0; // Current FPS
private var lastSample : double;
private var gotIntervals = 0;

function Start()
{
    timeleft = updateInterval;
    lastSample = Time.realtimeSinceStartup;
}

function GetFPS() : float { return fps; }
function HasFPS() : boolean { return gotIntervals > 2; }
 
function Update()
{
    ++frames;
    var newSample = Time.realtimeSinceStartup;
    var deltaTime = newSample - lastSample;
    lastSample = newSample;

    timeleft -= deltaTime;
    accum += 1.0 / deltaTime;
    
    // Interval ended - update GUI text and start new interval
    if( timeleft <= 0.0 )
    {
        // display two fractional digits (f2 format)
        fps = accum/frames;
        GetComponent.<GUIText>().text = fps.ToString("f2");
        timeleft = updateInterval;
        accum = 0.0;
        frames = 0;
        ++gotIntervals;
    }
}
