forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			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();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |