void Update () {
if (!timeTracker.getIsPaused()) { ///not currently paused.
///get time scale...
float timeScale = GetComponent<TimeScaleController>().getTimeScale();
float adjustedDT = Time.deltaTime * timeScale;
//timer += Time.deltaTime; //get the time from last frame.
timer += adjustedDT;
//speedlimit.
float speedLimit = 1.0f; //literally 1 second per frame.
float speedMultiplier = 1.0f;
if (adjustedDT > speedLimit) {
//create some multiplier.
speedMultiplier = timeScale / 60.0f;
}
//one second has passed...
if (timer >= 1.0f) {
//keep any leftover deltatime stored in timer... so don't set it = 0. just sub 1.
timer -= 1.0f;
//increment in the time tracker.
int curTime = timeTracker.getSimTimeInSeconds();
//set new time to be current time
int increase = (int)Mathf.Floor(1 * speedMultiplier);
timeTracker.setSimTimeInSeconds(curTime + increase);
//fire event to let everyone know that a second has passed.
//parameter is for the current time of day in seconds.
if (onOneSecondPassed != null)
onOneSecondPassed(timeTracker.getSimTimeInSeconds() + timeTracker.getSimStartTime());
}
}
//let's try to print the time now.
//printSimTime(TimeFormat.timeOfDay);
}