HighlightEffectActions.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using UnityEngine;
  2. namespace HighlightPlus {
  3. public enum HitFxMode {
  4. Overlay = 0,
  5. InnerGlow = 1,
  6. LocalHit = 2
  7. }
  8. public partial class HighlightEffect : MonoBehaviour {
  9. [Range(0,1)] public float hitFxInitialIntensity;
  10. public HitFxMode hitFxMode = HitFxMode.Overlay;
  11. public float hitFxFadeOutDuration = 0.25f;
  12. [ColorUsage(true, true)] public Color hitFxColor = Color.white;
  13. public float hitFxRadius = 0.5f;
  14. float hitInitialIntensity;
  15. float hitStartTime;
  16. float hitFadeOutDuration;
  17. Color hitColor;
  18. bool hitActive;
  19. Vector3 hitPosition;
  20. float hitRadius;
  21. /// <summary>
  22. /// Performs a hit effect using default values
  23. /// </summary>
  24. public void HitFX() {
  25. HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity);
  26. }
  27. /// <summary>
  28. /// Performs a hit effect localized at hit position and radius with default values
  29. /// </summary>
  30. public void HitFX(Vector3 position) {
  31. HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity, position, hitFxRadius);
  32. }
  33. /// <summary>
  34. /// Performs a hit effect using desired color, fade out duration and optionally initial intensity (0-1)
  35. /// </summary>
  36. public void HitFX(Color color, float fadeOutDuration, float initialIntensity = 1f) {
  37. hitInitialIntensity = initialIntensity;
  38. hitFadeOutDuration = fadeOutDuration;
  39. hitColor = color;
  40. hitStartTime = Time.time;
  41. hitActive = true;
  42. if (overlay == 0) {
  43. UpdateMaterialProperties();
  44. }
  45. }
  46. /// <summary>
  47. /// Performs a hit effect using desired color, fade out duration, initial intensity (0-1), hit position and radius of effect
  48. /// </summary>
  49. public void HitFX(Color color, float fadeOutDuration, float initialIntensity, Vector3 position, float radius) {
  50. hitInitialIntensity = initialIntensity;
  51. hitFadeOutDuration = fadeOutDuration;
  52. hitColor = color;
  53. hitStartTime = Time.time;
  54. hitActive = true;
  55. hitPosition = position;
  56. hitRadius = radius;
  57. if (overlay == 0) {
  58. UpdateMaterialProperties();
  59. }
  60. }
  61. /// <summary>
  62. /// Initiates the target FX on demand using predefined configuration (see targetFX... properties)
  63. /// </summary>
  64. public void TargetFX() {
  65. targetFxStartTime = Time.time;
  66. if (!targetFX) {
  67. targetFX = true;
  68. UpdateMaterialProperties();
  69. }
  70. }
  71. }
  72. }