You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.0 KiB
93 lines
3.0 KiB
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; |
|
|
|
/// <summary> |
|
/// Performs a hit effect using default values |
|
/// </summary> |
|
public void HitFX() { |
|
HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity); |
|
} |
|
|
|
/// <summary> |
|
/// Performs a hit effect localized at hit position and radius with default values |
|
/// </summary> |
|
public void HitFX(Vector3 position) { |
|
HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity, position, hitFxRadius); |
|
|
|
} |
|
|
|
/// <summary> |
|
/// Performs a hit effect using desired color, fade out duration and optionally initial intensity (0-1) |
|
/// </summary> |
|
public void HitFX(Color color, float fadeOutDuration, float initialIntensity = 1f) { |
|
hitInitialIntensity = initialIntensity; |
|
hitFadeOutDuration = fadeOutDuration; |
|
hitColor = color; |
|
hitStartTime = GetTime(); |
|
hitActive = true; |
|
if (overlay == 0) { |
|
UpdateMaterialProperties(); |
|
} |
|
} |
|
|
|
|
|
/// <summary> |
|
/// Performs a hit effect using desired color, fade out duration, initial intensity (0-1), hit position and radius of effect |
|
/// </summary> |
|
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(); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// Initiates the target FX on demand using predefined configuration (see targetFX... properties) |
|
/// </summary> |
|
public void TargetFX() { |
|
targetFxStartTime = GetTime(); |
|
if (!_highlighted) { |
|
highlighted = true; |
|
} |
|
if (!targetFX) { |
|
targetFX = true; |
|
UpdateMaterialProperties(); |
|
} |
|
} |
|
} |
|
} |