//********************************** 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(MeshCollider))]
internal class MeshColliderInspector : ColliderInspector
{
private GUIResourceField meshField = new GUIResourceField(typeof(PhysicsMesh), new LocEdString("Mesh"));
///
protected internal override void Initialize()
{
MeshCollider collider = InspectedObject as MeshCollider;
if (collider != null)
BuildGUI(collider);
}
///
protected internal override InspectableState Refresh()
{
MeshCollider collider = InspectedObject as MeshCollider;
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 mesh collider.
///
protected void BuildGUI(MeshCollider collider)
{
meshField.OnChanged += x =>
{
PhysicsMesh mesh = Resources.Load(x);
collider.Mesh = mesh;
MarkAsModified();
ConfirmModify();
};
Layout.AddElement(meshField);
base.BuildGUI(collider);
}
///
/// Updates all GUI elements from current values in the collider.
///
/// Collider to update the GUI from.
protected void Refresh(MeshCollider collider)
{
meshField.Value = collider.Mesh;
base.Refresh(collider);
}
}
/** @} */
}