89 lines
2.2 KiB
C#
89 lines
2.2 KiB
C#
using System.Collections;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
|
|
public class StatusLED : ActionAnimator
|
|
{
|
|
public MeshRenderer LED_R;
|
|
public MeshRenderer LED_O;
|
|
public MeshRenderer LED_G;
|
|
|
|
public Material mat_LED_R_On;
|
|
public Material mat_LED_R_Off;
|
|
public Material mat_LED_O_On;
|
|
public Material mat_LED_O_Off;
|
|
public Material mat_LED_G_On;
|
|
public Material mat_LED_G_Off;
|
|
|
|
Material currentOnMaterial;
|
|
|
|
public override void AnimationEnd()
|
|
{
|
|
SetColor("End");
|
|
}
|
|
|
|
public override void AnimationStart()
|
|
{
|
|
SetColor("Start");
|
|
}
|
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
void Start()
|
|
{
|
|
var leds = GetComponentsInChildren<MeshRenderer>();
|
|
LED_R = leds.First(x => x.name.Equals(nameof(LED_R)));
|
|
LED_O = leds.First(x => x.name.Equals(nameof(LED_O)));
|
|
LED_G = leds.First(x => x.name.Equals(nameof(LED_G)));
|
|
|
|
LED_R.sharedMaterial = mat_LED_R_Off;
|
|
LED_G.sharedMaterial = mat_LED_G_Off;
|
|
LED_O.sharedMaterial = mat_LED_O_Off;
|
|
|
|
Invoke("Flicker", 1f);
|
|
}
|
|
|
|
bool isOn = false;
|
|
|
|
public void Flicker()
|
|
{
|
|
if (currentOnMaterial == null)
|
|
return;
|
|
|
|
if (isOn == false)
|
|
{
|
|
isOn = true;
|
|
currentOnMaterial.EnableKeyword("_Emission");
|
|
}
|
|
else if (isOn == true)
|
|
{
|
|
isOn = false;
|
|
currentOnMaterial.DisableKeyword("_Emission");
|
|
|
|
}
|
|
}
|
|
|
|
private void SetColor(string progStatus, string status = null)
|
|
{
|
|
LED_R.sharedMaterial = mat_LED_R_Off;
|
|
LED_G.sharedMaterial = mat_LED_G_Off;
|
|
LED_O.sharedMaterial = mat_LED_O_Off;
|
|
|
|
switch (progStatus)
|
|
{
|
|
case "Start":
|
|
LED_G.sharedMaterial = mat_LED_G_On;
|
|
currentOnMaterial = LED_G.sharedMaterial;
|
|
break;
|
|
case "End":
|
|
LED_O.sharedMaterial = mat_LED_O_On;
|
|
currentOnMaterial = LED_O.sharedMaterial;
|
|
break;
|
|
default:
|
|
LED_O.sharedMaterial = mat_LED_O_On;
|
|
currentOnMaterial = LED_O.sharedMaterial;
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|