//********************************** 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); } } /** @} */ }