using UnityEngine; namespace HighlightPlus { public enum HitFxMode { Overlay = 0, InnerGlow = 1, LocalHit = 2 } public partial class HighlightEffect : MonoBehaviour { public static bool useUnscaledTime; public static float GetTime() { return useUnscaledTime ? Time.unscaledTime : Time.time; } [Range(0,1)] public float hitFxInitialIntensity; public HitFxMode hitFxMode = HitFxMode.Overlay; public float hitFxFadeOutDuration = 0.25f; [ColorUsage(true, true)] public Color hitFxColor = Color.white; public float hitFxRadius = 0.5f; float hitInitialIntensity; float hitStartTime; float hitFadeOutDuration; Color hitColor; bool hitActive; Vector3 hitPosition; float hitRadius; /// /// Performs a hit effect using default values /// public void HitFX() { HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity); } /// /// Performs a hit effect localized at hit position and radius with default values /// public void HitFX(Vector3 position) { HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity, position, hitFxRadius); } /// /// Performs a hit effect using desired color, fade out duration and optionally initial intensity (0-1) /// public void HitFX(Color color, float fadeOutDuration, float initialIntensity = 1f) { hitInitialIntensity = initialIntensity; hitFadeOutDuration = fadeOutDuration; hitColor = color; hitStartTime = GetTime(); hitActive = true; if (overlay == 0) { UpdateMaterialProperties(); } } /// /// Performs a hit effect using desired color, fade out duration, initial intensity (0-1), hit position and radius of effect /// public void HitFX(Color color, float fadeOutDuration, float initialIntensity, Vector3 position, float radius) { hitInitialIntensity = initialIntensity; hitFadeOutDuration = fadeOutDuration; hitColor = color; hitStartTime = GetTime(); hitActive = true; hitPosition = position; hitRadius = radius; if (overlay == 0) { UpdateMaterialProperties(); } } /// /// Initiates the target FX on demand using predefined configuration (see targetFX... properties) /// public void TargetFX() { targetFxStartTime = GetTime(); if (!_highlighted) { highlighted = true; } if (!targetFX) { targetFX = true; UpdateMaterialProperties(); } } } }