private void OnEnable() { if (!UnityEngineUtils.IsInPlayModeOrAboutToPlay()) { return; } GameTime.Instance.AddTimeListener(this); currentPlayerStats.OnChangeEvent += OnStatsChange; currentProjectileStats.OnChangeEvent += OnStatsChange; playerStats = new TimelinedProperty <TimedFloat, float> [(int)StatsIndex.End]; for (int i = 0; i < playerStats.Length; i++) { playerStats[i] = new TimelinedProperty <TimedFloat, float>(); } }
public void UpdateTimeline <T, V>(TimelinedProperty <T, V> timeline, T currentValue, float gameSpeed, float time) where T : TimedValue <V> { if (gameSpeed > 0) { timeline.SetValue(currentValue); } else if (gameSpeed < 0) { if (timeline.HasValueBefore(time)) { timeline.UpdateValue(time, timeline.InterpolatedValueAt(time)); } else if (timeline.TimePoints > 1) { timeline.RevertToStart(); } } }
public void UpdateTimeline <T, V>(TimelinedProperty <T, V> timeline, T currentValue) where T : TimedValue <V> { UpdateTimeline <T, V>(timeline, currentValue, this.gameSpeed, this.ElapsedTime); }