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();
}
}
}
}