using UnityEditor; using UnityEngine; using System; using System.Collections; using System.Collections.Generic; namespace Obi{ [CustomEditor(typeof(ObiRopeChainRenderer)), CanEditMultipleObjects] public class ObiRopeChainRendererEditor : Editor { ObiRopeChainRenderer renderer; public void OnEnable(){ renderer = (ObiRopeChainRenderer)target; } [MenuItem("CONTEXT/ObiRopeChainRenderer/Bake mesh")] static void Bake(MenuCommand command) { ObiRopeChainRenderer renderer = (ObiRopeChainRenderer)command.context; if (renderer.actor.isLoaded) { var system = renderer.actor.solver.GetRenderSystem() as ObiChainRopeRenderSystem; if (system != null) { var mesh = new Mesh(); system.BakeMesh(renderer, ref mesh, true); ObiEditorUtils.SaveMesh(mesh, "Save chain mesh", "chain mesh"); GameObject.DestroyImmediate(mesh); } } } public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); Editor.DrawPropertiesExcluding(serializedObject,"m_Script"); // Apply changes to the serializedProperty if (GUI.changed){ serializedObject.ApplyModifiedProperties(); } } } }