diff options
author | chai <215380520@qq.com> | 2024-05-20 22:36:58 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-05-20 22:36:58 +0800 |
commit | a22c505984697881f5f911a165ee022087b69e09 (patch) | |
tree | d3c030aef1ae9b8a01c889dd2902bb1e3324e72b /Thronefall_v1.0/Decompile/MaterialFlasherFX.cs | |
parent | 4a4cc82d069b26bc4d4532e73860f86b211ca239 (diff) |
Diffstat (limited to 'Thronefall_v1.0/Decompile/MaterialFlasherFX.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/MaterialFlasherFX.cs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/MaterialFlasherFX.cs b/Thronefall_v1.0/Decompile/MaterialFlasherFX.cs new file mode 100644 index 0000000..ed49ef1 --- /dev/null +++ b/Thronefall_v1.0/Decompile/MaterialFlasherFX.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MaterialFlasherFX : MonoBehaviour +{ + public class RendererMaterialPair + { + public Renderer renderer; + + public Material originalMaterial; + + public RendererMaterialPair(Renderer targetRenderer) + { + renderer = targetRenderer; + originalMaterial = renderer.sharedMaterial; + } + } + + public List<Renderer> targetRenderers; + + public Material flashMaterial; + + public Material specialFlashMaterial; + + public Material unitSelectedMaterial; + + private bool unitSelected; + + private List<RendererMaterialPair> targetRendererMaterialPairs = new List<RendererMaterialPair>(); + + public void SetSelected(bool _selected) + { + unitSelected = _selected; + foreach (RendererMaterialPair targetRendererMaterialPair in targetRendererMaterialPairs) + { + targetRendererMaterialPair.renderer.sharedMaterial = (unitSelected ? unitSelectedMaterial : targetRendererMaterialPair.originalMaterial); + } + } + + private void Start() + { + foreach (Renderer targetRenderer in targetRenderers) + { + if (!(targetRenderer == null)) + { + targetRendererMaterialPairs.Add(new RendererMaterialPair(targetRenderer)); + } + } + } + + private IEnumerator FlashAnimation(float flashTime, Material mat) + { + foreach (RendererMaterialPair targetRendererMaterialPair in targetRendererMaterialPairs) + { + targetRendererMaterialPair.renderer.sharedMaterial = mat; + } + yield return new WaitForSeconds(flashTime); + foreach (RendererMaterialPair targetRendererMaterialPair2 in targetRendererMaterialPairs) + { + targetRendererMaterialPair2.renderer.sharedMaterial = (unitSelected ? unitSelectedMaterial : targetRendererMaterialPair2.originalMaterial); + } + } + + public void TriggerFlash(bool special, float flashTime = 0.25f) + { + StopAllCoroutines(); + if (special) + { + StartCoroutine(FlashAnimation(flashTime, specialFlashMaterial)); + } + else + { + StartCoroutine(FlashAnimation(flashTime, flashMaterial)); + } + } +} |