using System; using NaughtyAttributes; using Station46.Runtime; using UnityEngine; namespace Station46.Dispenser.Scripts { [Serializable] public struct DispenserLightRow { public bool[] lights; } /// /// This component controls the grid of lights on the dispenser. /// public class DispenserLights : MonoBehaviour { [Tooltip("Control the pattern of lights on a dispenser.")] [SerializeField] private DispenserLightRow[] lights; [BoxGroup("Internal")] [SerializeField] private GameObject lightPrefab; [BoxGroup("Internal")] [SerializeField] private Vector2Int gridDimensions; [BoxGroup("Internal")] [SerializeField] private Vector2 lightOffset; private void Start() { for (var y = 0; y < gridDimensions.y; y++) { var row = lights[y].lights; for (var x = 0; x < gridDimensions.x; x++) { var instance = Instantiate(lightPrefab, transform, false); instance.transform.localPosition = new Vector3(-x * lightOffset.x, 0, y * lightOffset.y); instance.GetComponent().active = row[x]; } } } } }