mirror of
https://udrimavric.com/MAVRIC/Stratasys-450mc-VR.git
synced 2025-01-23 15:48:33 -05:00
60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
namespace UnityEngine.XR.Content.Interaction
|
|
{
|
|
/// <summary>
|
|
/// This class is responsible for creating the perler sockets grid and turning on/off the machine.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Call this method to activate or deactivate the machine. This will also turn on/off its lights.
|
|
/// Used by the BatterySlot GameObject socket.
|
|
/// </summary>
|
|
/// <param name="active">Value of <see langword="true"/> to activate the machine; <see langword="false"/> otherwise.</param>
|
|
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();
|
|
}
|
|
}
|
|
}
|