using UnityEngine; using UnityEngine.XR.ARFoundation; /// /// A component that can be used to access the most /// recently received light estimation information /// for the physical environment as observed by an /// AR device. /// [RequireComponent(typeof(Light))] public class LightEstimation : MonoBehaviour { Light m_Light; /// /// The estimated brightness of the physical environment, if available. /// public float? brightness { get; private set; } /// /// The estimated color temperature of the physical environment, if available. /// public float? colorTemperature { get; private set; } /// /// The estimated color correction value of the physical environment, if available. /// public Color? colorCorrection { get; private set; } void Awake () { m_Light = GetComponent(); } void OnEnable() { ARSubsystemManager.cameraFrameReceived += FrameChanged; } void OnDisable() { ARSubsystemManager.cameraFrameReceived -= FrameChanged; } void FrameChanged(ARCameraFrameEventArgs args) { if (args.lightEstimation.averageBrightness.HasValue) { brightness = args.lightEstimation.averageBrightness.Value; m_Light.intensity = brightness.Value; } if (args.lightEstimation.averageColorTemperature.HasValue) { colorTemperature = args.lightEstimation.averageColorTemperature.Value; m_Light.colorTemperature = colorTemperature.Value; } if (args.lightEstimation.colorCorrection.HasValue) { colorCorrection = args.lightEstimation.colorCorrection.Value; m_Light.color = colorCorrection.Value; } } }