/// <summary> /// Shakes values over time /// </summary> protected override void Shake() { float newPostExposure = ShakeFloat(ShakePostExposure, RemapPostExposureZero, RemapPostExposureOne, RelativeValues, _initialPostExposure); _colorAdjustments.postExposure.Override(newPostExposure); float newHueShift = ShakeFloat(ShakeHueShift, RemapHueShiftZero, RemapHueShiftOne, RelativeValues, _initialHueShift); _colorAdjustments.hueShift.Override(newHueShift); float newSaturation = ShakeFloat(ShakeSaturation, RemapSaturationZero, RemapSaturationOne, RelativeValues, _initialSaturation); _colorAdjustments.saturation.Override(newSaturation); float newContrast = ShakeFloat(ShakeContrast, RemapContrastZero, RemapContrastOne, RelativeValues, _initialContrast); _colorAdjustments.contrast.Override(newContrast); _remappedTimeSinceStart = MMFeedbacksHelpers.Remap(Time.time - _shakeStartedTimestamp, 0f, ShakeDuration, 0f, 1f); if (ColorFilterMode == ColorFilterModes.Gradient) { _colorAdjustments.colorFilter.Override(ColorFilterGradient.Evaluate(_remappedTimeSinceStart)); } else if (ColorFilterMode == ColorFilterModes.Interpolate) { float factor = ColorFilterCurve.Evaluate(_remappedTimeSinceStart); _colorAdjustments.colorFilter.Override(Color.LerpUnclamped(_initialColorFilterColor, ColorFilterDestination, factor)); } }
/// <summary> /// On update, processes the blend if needed /// </summary> protected virtual void Update() { if (!_blending) { return; } float timeElapsed = (GetTime() - _startTime); if (timeElapsed < BlendDuration) { float remapped = MMFeedbacksHelpers.Remap(timeElapsed, 0f, BlendDuration, 0f, 1f); _volume.weight = Mathf.LerpUnclamped(_initial, _destination, Curve.Evaluate(remapped)); } else { // after end is reached _volume.weight = _destination; _blending = false; if (DisableVolumeOnZeroWeight && (_volume.weight == 0f)) { _volume.enabled = false; } if (DisableSelfAfterEnd) { this.enabled = false; } } }
protected virtual void Shake() { _remappedTimeSinceStart = MMFeedbacksHelpers.Remap(Time.time - _shakeStartedTimestamp, 0f, ShakeDuration, 0f, 1f); _colorGrading.postExposure.Override(ShakePostExposure.Evaluate(_remappedTimeSinceStart) * ShakePostExposureAmplitude); _colorGrading.hueShift.Override(ShakeHueShift.Evaluate(_remappedTimeSinceStart) * ShakeHueShiftAmplitude); _colorGrading.saturation.Override(ShakeSaturation.Evaluate(_remappedTimeSinceStart) * ShakeSaturationAmplitude); _colorGrading.contrast.Override(ShakeContrast.Evaluate(_remappedTimeSinceStart) * ShakeContrastAmplitude); if (RelativeIntensity) { _colorGrading.postExposure.Override(_colorGrading.postExposure + _initialPostExposure); } if (RelativeIntensity) { _colorGrading.hueShift.Override(_colorGrading.hueShift + _initialHueShift); } if (RelativeIntensity) { _colorGrading.saturation.Override(_colorGrading.saturation + _initialSaturation); } if (RelativeIntensity) { _colorGrading.contrast.Override(_colorGrading.contrast + _initialContrast); } }
protected virtual void Shake() { _remappedTimeSinceStart = MMFeedbacksHelpers.Remap(Time.time - _shakeStartedTimestamp, 0f, ShakeDuration, 0f, 1f); _vignette.intensity.Override(ShakeIntensity.Evaluate(_remappedTimeSinceStart) * ShakeAmplitude); if (RelativeIntensity) { _vignette.intensity.Override(_vignette.intensity + _initialIntensity); } }
protected virtual void Shake() { _remappedTimeSinceStart = MMFeedbacksHelpers.Remap(Time.time - _shakeStartedTimestamp, 0f, ShakeDuration, 0f, 1f); _depthOfField.focusDistance.Override(ShakeFocusDistance.Evaluate(_remappedTimeSinceStart) * ShakeFocusDistanceAmplitude); _depthOfField.aperture.Override(ShakeAperture.Evaluate(_remappedTimeSinceStart) * ShakeApertureAmplitude); _depthOfField.focalLength.Override(ShakeFocalLength.Evaluate(_remappedTimeSinceStart) * ShakeFocalLengthAmplitude); if (RelativeIntensities) { _depthOfField.focusDistance.Override(_depthOfField.focusDistance + _initialFocusDistance); _depthOfField.aperture.Override(_depthOfField.aperture + _initialAperture); _depthOfField.focalLength.Override(_depthOfField.focalLength + _initialFocalLength); } }
protected virtual void Shake() { _remappedTimeSinceStart = MMFeedbacksHelpers.Remap(Time.time - _shakeStartedTimestamp, 0f, ShakeDuration, 0f, 1f); _bloom.intensity.Override(ShakeIntensity.Evaluate(_remappedTimeSinceStart) * ShakeIntensityAmplitude); _bloom.threshold.Override(ShakeThreshold.Evaluate(_remappedTimeSinceStart) * ShakeThresholdAmplitude); if (RelativeIntensity) { _bloom.intensity.Override(_bloom.intensity + _initialIntensity); } if (RelativeIntensity) { _bloom.threshold.Override(_bloom.threshold + _initialThreshold); } }
/// <summary> /// A coroutine used to modulate frequency and amplitude at runtime /// </summary> /// <returns></returns> protected virtual IEnumerator RealtimeModulationCo() { IsPlaying = true; float journey = NormalPlayDirection ? 0f : FeedbackDuration; while ((journey >= 0) && (journey <= FeedbackDuration) && (FeedbackDuration > 0)) { float remappedTime = MMFeedbacksHelpers.Remap(journey, 0f, FeedbackDuration, 0f, 1f); HapticController.clipLevel = AmplitudeMultiplication.Evaluate(remappedTime); HapticController.clipFrequencyShift = ShiftFrequency.Evaluate(remappedTime); journey += NormalPlayDirection ? FeedbackDeltaTime : -FeedbackDeltaTime; yield return(null); } HapticController.clipLevel = AmplitudeMultiplication.Evaluate(FinalNormalizedTime); HapticController.clipFrequencyShift = ShiftFrequency.Evaluate(FinalNormalizedTime); IsPlaying = false; _coroutine = null; yield return(null); }