using UnityEngine;
using System.Linq;
using System.Collections.Generic;
namespace DestroyIt
{
///
/// This script checks if an object that contains lights is getting power from its
/// parent, determined by whether the parent is tagged as "Powered".
///
public class PoweredLight : MonoBehaviour
{
public PowerSource powerSource; // The source of power for this light.
public MeshRenderer emissiveMesh; // Any additional mesh for which to turn off the emissive property of its shader when this light is unpowered. (For example, the lampshade of a light bulb.)
public Material emissiveOffMaterial;
private List lights;
private Transform parent;
private bool isPowered;
void Start()
{
isPowered = false;
lights = gameObject.GetComponentsInChildren().ToList();
if (lights.Count == 0)
{
Debug.Log("PoweredLight: No Light components found on [" + gameObject.name + "]. Removing script.");
Destroy(this);
}
parent = this.gameObject.transform.parent;
if (parent == null)
{
Debug.Log("PoweredLight: No parent found for [" + gameObject.name + "]. Removing script.");
Destroy(this);
}
}
void Update()
{
// remove any light from the list that is null or missing.
lights.RemoveAll(x => x == null);
// find out if we have power from the parent.
if (parent.gameObject.HasTag(Tag.Powered))
isPowered = true;
else
isPowered = false;
if (isPowered)
{
for (int i = 0; i < lights.Count; i++)
lights[i].enabled = true;
}
else
{
for (int i = 0; i < lights.Count; i++)
lights[i].enabled = false;
// Turn off emissive material
emissiveMesh.material = emissiveOffMaterial;
}
}
}
}