// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEditor;
using UnityEngine;
namespace Microsoft.MixedReality.GraphicsTools.Editor
{
///
/// Improves object selection and adds a shortcut to create a configured game object and component from the game object context menu.
///
[CustomEditor(typeof(ProximityLight))]
public class ProximityLightInspector : UnityEditor.Editor
{
private void OnSceneGUI()
{
ProximityLight light = target as ProximityLight;
if (light == null)
{
return;
}
if (light.enabled)
{
Handles.color = new Color(light.Settings.CenterColor.r, light.Settings.CenterColor.g, light.Settings.CenterColor.b);
}
else
{
Handles.color = Color.gray;
}
float nearRadius = Handles.RadiusHandle(Quaternion.identity, light.transform.position, light.Settings.NearRadius);
if (GUI.changed)
{
Undo.RecordObject(light, "Adjust Proximity Light Near Radius");
light.Settings.NearRadius = nearRadius;
}
if (light.enabled)
{
Handles.color = new Color(light.Settings.OuterColor.r, light.Settings.OuterColor.g, light.Settings.OuterColor.b);
}
else
{
Handles.color = Color.gray;
}
float farRadius = Handles.RadiusHandle(Quaternion.identity, light.transform.position, light.Settings.FarRadius);
if (GUI.changed)
{
Undo.RecordObject(light, "Adjust Proximity Light Far Radius");
light.Settings.NearRadius = farRadius;
}
switch (light.Settings.HandednessType)
{
case ProximityLight.LightSettings.Handedness.Left:
{
Handles.Label(light.transform.position,"Left");
}
break;
case ProximityLight.LightSettings.Handedness.Right:
{
Handles.Label(light.transform.position, "Right");
}
break;
}
}
private bool HasFrameBounds() { return true; }
private Bounds OnGetFrameBounds()
{
var light = target as ProximityLight;
Debug.Assert(light != null);
return new Bounds(light.transform.position, Vector3.one * Mathf.Max(light.Settings.NearRadius, light.Settings.FarRadius));
}
[MenuItem("GameObject/Light/Graphics Tools/Proximity Light")]
private static void CreateProximityLight(MenuCommand menuCommand)
{
InspectorUtilities.CreateGameObjectFromMenu(menuCommand);
}
}
}