using Unity.Mathematics;
using UnityEngine;
///
/// MergerController is a sensor that activates or deactivates
/// when multiple connections are active.
///
public class MergerController : Activateable
{
[Header("Configuration")]
public Color activatedColor = new(148 / 255f, 209 / 255f, 124 / 255f);
public Color deactivatedColor = new(219 / 255f, 219 / 255f, 219 / 255f);
public int connectionCount = 2;
public Activateable[] activateables;
private int _activeConnectionCount = 0;
private SpriteRenderer _spriteRenderer;
private void Awake()
{
_spriteRenderer = GetComponent();
}
protected override void OnActivation()
{
_activeConnectionCount++;
if (_activeConnectionCount < connectionCount) return;
_spriteRenderer.color = activatedColor;
foreach (Activateable activatable in activateables)
{
activatable.SetActivation(true);
}
}
protected override void OnDeactivation()
{
_activeConnectionCount = math.max(0, _activeConnectionCount - 1);
if (_activeConnectionCount >= connectionCount) return;
_spriteRenderer.color = deactivatedColor;
foreach (Activateable activatable in activateables)
{
activatable.SetActivation(false);
}
}
}