namespace UnityEngine.XR.Content.Interaction { /// /// This class is responsible for creating the perler sockets grid and turning on/off the machine. /// public class PerlerMachineController : MonoBehaviour { static readonly string k_EmissionKeyword = "_EMISSION"; [SerializeField] [Tooltip("The emissive materials that will change state whenever the machine is turned on/off")] Material[] m_EmissiveMaterials; bool m_MachineActive; void Awake() { DisableEmissiveMaterials(); } #if UNITY_EDITOR void OnDestroy() { EnableEmissiveMaterials(); } #endif void DisableEmissiveMaterials() { foreach (var material in m_EmissiveMaterials) material.DisableKeyword(k_EmissionKeyword); } void EnableEmissiveMaterials() { foreach (var material in m_EmissiveMaterials) material.EnableKeyword(k_EmissionKeyword); } /// /// Call this method to activate or deactivate the machine. This will also turn on/off its lights. /// Used by the BatterySlot GameObject socket. /// /// Value of to activate the machine; otherwise. public void SetMachineActive(bool active) { // It's the same state? if (active == m_MachineActive) return; // Change the machine light state m_MachineActive = active; if (m_MachineActive) EnableEmissiveMaterials(); else DisableEmissiveMaterials(); } } }