//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// using System.Collections.Generic; using BansheeEngine; namespace BansheeEditor { /** @addtogroup Inspectors * @{ */ /// /// Renders an inspector for the resource. /// [CustomInspector(typeof(PhysicsMaterial))] internal class PhysicsMaterialInspector : Inspector { private GUIFloatField staticFrictionField; private GUIFloatField dynamicFrictionField; private GUISliderField restitutionField; /// protected internal override void Initialize() { LoadResource(); BuildGUI(); } /// protected internal override InspectableState Refresh() { PhysicsMaterial material = InspectedObject as PhysicsMaterial; if (material == null) return InspectableState.NotModified; staticFrictionField.Value = material.StaticFriction; dynamicFrictionField.Value = material.DynamicFriction; restitutionField.Value = material.Restitution; return InspectableState.NotModified; } /// /// Recreates all the GUI elements used by this inspector. /// private void BuildGUI() { Layout.Clear(); PhysicsMaterial material = InspectedObject as PhysicsMaterial; if (material == null) return; staticFrictionField = new GUIFloatField(new LocEdString("Static friction")); dynamicFrictionField = new GUIFloatField(new LocEdString("Dynamic friction")); restitutionField = new GUISliderField(0.0f, 1.0f, new LocEdString("Restitution")); staticFrictionField.OnChanged += x => { material.StaticFriction = x; EditorApplication.SetDirty(material); }; dynamicFrictionField.OnChanged += x => { material.DynamicFriction = x; EditorApplication.SetDirty(material); }; restitutionField.OnChanged += x => { material.Restitution = x; EditorApplication.SetDirty(material); }; Layout.AddElement(staticFrictionField); Layout.AddElement(dynamicFrictionField); Layout.AddElement(restitutionField); } } /** @} */ }