blob: ed49ef1051367e863f7ed325cf8f050c5ac2f6d9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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));
}
}
}
|