/// <summary> /// On Play, triggers a time scale event /// </summary> /// <param name="position"></param> /// <param name="attenuation"></param> protected override void CustomPlayFeedback(Vector3 position, float attenuation = 1.0f) { if (Active) { MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, TimeScale, TimeScaleDuration, TimeScaleLerp, TimeScaleLerpSpeed, false); } }
/// <summary> /// On stop, we reset timescale if needed /// </summary> /// <param name="position"></param> /// <param name="feedbacksIntensity"></param> protected override void CustomStopFeedback(Vector3 position, float feedbacksIntensity = 1.0f) { if (Active && ResetTimescaleOnStop) { MMTimeScaleEvent.Trigger(MMTimeScaleMethods.Reset, TimeScale, 0f, false, 0f, true); } }
/// <summary> /// On stop, we reset timescale if needed /// </summary> /// <param name="position"></param> /// <param name="feedbacksIntensity"></param> protected override void CustomStopFeedback(Vector3 position, float feedbacksIntensity = 1.0f) { if (!Active || !FeedbackTypeAuthorized || !ResetTimescaleOnStop) { return; } MMTimeScaleEvent.Trigger(MMTimeScaleMethods.Reset, TimeScale, 0f, false, 0f, true); }
/// <summary> /// On Play, triggers a time scale event /// </summary> /// <param name="position"></param> /// <param name="feedbacksIntensity"></param> protected override void CustomPlayFeedback(Vector3 position, float feedbacksIntensity = 1.0f) { if (Active) { switch (Mode) { case Modes.Shake: MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, TimeScale, FeedbackDuration, TimeScaleLerp, TimeScaleLerpSpeed, false); break; case Modes.Change: MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, TimeScale, 0f, false, 0f, true); break; case Modes.Reset: MMTimeScaleEvent.Trigger(MMTimeScaleMethods.Reset, TimeScale, 0f, false, 0f, true); break; } } }
/// <summary> /// On disable, stops listening for FreezeFrame events /// </summary> void OnDisable() { MMFreezeFrameEvent.Unregister(OnMMFreezeFrameEvent); MMTimeScaleEvent.Unregister(OnTimeScaleEvent); }
/// <summary> /// On enable, starts listening for FreezeFrame events /// </summary> void OnEnable() { MMFreezeFrameEvent.Register(OnMMFreezeFrameEvent); MMTimeScaleEvent.Register(OnTimeScaleEvent); }
/// <summary> /// Sets the time scale to the specified value, instantly /// </summary> /// <param name="newNormalTimeScale">New normal time scale.</param> public virtual void SetTimescaleTo(float newNormalTimeScale) { MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, newNormalTimeScale, 0f, false, 0f, true); }
/// <summary> /// A method used from the inspector to test the system /// </summary> protected virtual void TestButtonToSlowDownTime() { MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, 0.5f, 3f, true, 1f, false); }