//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
//**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************//
using BansheeEngine;
namespace BansheeEditor
{
/** @addtogroup Inspectors
* @{
*/
///
/// Renders an inspector for the component.
///
[CustomInspector(typeof(BoxCollider))]
internal class BoxColliderInspector : ColliderInspector
{
private GUIVector3Field centerField = new GUIVector3Field(new LocEdString("Center"));
private GUIVector3Field extentsField = new GUIVector3Field(new LocEdString("Extents"));
///
protected internal override void Initialize()
{
BoxCollider collider = InspectedObject as BoxCollider;
if(collider != null)
BuildGUI(collider);
}
///
protected internal override InspectableState Refresh()
{
BoxCollider collider = InspectedObject as BoxCollider;
if (collider == null)
return InspectableState.NotModified;
Refresh(collider);
InspectableState oldState = modifyState;
if (modifyState.HasFlag(InspectableState.Modified))
modifyState = InspectableState.NotModified;
return oldState;
}
///
/// Creates GUI elements for fields specific to the box collider.
///
protected void BuildGUI(BoxCollider collider)
{
centerField.OnChanged += x => { collider.Center = x; MarkAsModified(); };
centerField.OnFocusLost += ConfirmModify;
centerField.OnConfirmed += ConfirmModify;
extentsField.OnChanged += x => { collider.Extents = x; MarkAsModified(); };
extentsField.OnFocusLost += ConfirmModify;
extentsField.OnConfirmed += ConfirmModify;
Layout.AddElement(centerField);
Layout.AddElement(extentsField);
base.BuildGUI(collider);
}
///
/// Updates all GUI elements from current values in the collider.
///
/// Collider to update the GUI from.
protected void Refresh(BoxCollider collider)
{
if (!centerField.HasInputFocus)
centerField.Value = collider.Center;
if(!extentsField.HasInputFocus)
extentsField.Value = collider.Extents;
base.Refresh(collider);
}
}
/** @} */
}