Files
Simulation/Assets/Scripts/ActionAnimator/StatusLED.cs
2025-07-16 16:31:18 +09:00

66 lines
1.7 KiB
C#

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;
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;
}
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;
break;
case "End":
LED_O.sharedMaterial = mat_LED_O_On;
break;
default:
LED_O.sharedMaterial = mat_LED_O_On;
break;
}
}
// Update is called once per frame
void Update()
{
}
}