public override void OnInspectorGUI() { MegaModifyGroup mod = (MegaModifyGroup)target; //EditorGUIUtility.LookLikeInspector(); MegaModifiers.GlobalDisplay = EditorGUILayout.Toggle("GlobalDisplayGizmos", MegaModifiers.GlobalDisplay); mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled); mod.recalcnorms = EditorGUILayout.Toggle("Recalc Normals", mod.recalcnorms); MegaNormalMethod method = mod.NormalMethod; mod.NormalMethod = (MegaNormalMethod)EditorGUILayout.EnumPopup("Normal Method", mod.NormalMethod); mod.recalcbounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcbounds); mod.recalcCollider = EditorGUILayout.Toggle("Recalc Collider", mod.recalcCollider); mod.recalcTangents = EditorGUILayout.Toggle("Recalc Tangents", mod.recalcTangents); mod.DoLateUpdate = EditorGUILayout.Toggle("Do Late Update", mod.DoLateUpdate); //mod.GrabVerts = EditorGUILayout.Toggle("Grab Verts", mod.GrabVerts); mod.DrawGizmos = EditorGUILayout.Toggle("Draw Gizmos", mod.DrawGizmos); if (mod.NormalMethod != method && mod.NormalMethod == MegaNormalMethod.Mega) { mod.BuildNormalMapping(mod.mesh, false); } if (GUILayout.Button("Threading Options")) { showmulti = !showmulti; } if (showmulti) { MegaModifiers.ThreadingOn = EditorGUILayout.Toggle("Threading Enabled", MegaModifiers.ThreadingOn); mod.UseThreading = EditorGUILayout.Toggle("Thread This Object", mod.UseThreading); } #if !UNITY_5 EditorGUIUtility.LookLikeControls(); #endif if (GUI.changed) { EditorUtility.SetDirty(target); } showorder = EditorGUILayout.Foldout(showorder, "Modifier Order"); if (showorder && mod.mods != null) { for (int i = 0; i < mod.mods.Length; i++) { EditorGUILayout.LabelField("", i.ToString() + " - " + mod.mods[i].ModName() + " " + mod.mods[i].Order); } } if (GUILayout.Button("Targets")) { showtargets = !showtargets; } if (showtargets) { if (GUILayout.Button("Add Target")) { MegaModifierTarget targ = new MegaModifierTarget(); mod.targets.Add(targ); } for (int i = 0; i < mod.targets.Count; i++) { EditorGUILayout.BeginHorizontal(); mod.targets[i].go = (GameObject)EditorGUILayout.ObjectField("Target " + i, mod.targets[i].go, typeof(GameObject), true); if (GUILayout.Button("Del")) { mod.targets.Remove(mod.targets[i]); i--; } EditorGUILayout.EndHorizontal(); } } }
void OnGUI() { //name = EditorGUILayout.TextField("Name", name); scroll = EditorGUILayout.BeginScrollView(scroll); GameObject obj = Selection.activeGameObject; float width = this.position.width; // / 2.0f; //if ( obj ) { //MeshFilter mf = obj.GetComponent<MeshFilter>(); //if ( mf != null ) { //if ( GUILayout.Button("Modify Object") ) AddMod(obj, null, true); //.AddComponent<MegaModifyObject>(); float butwidth = 80.0f; int bstep = (int)(width / butwidth); if (bstep == 0) { bstep = 1; } //int off = 0; //showmods = EditorGUILayout.Foldout(showmods, "Modifiers"); toolbarInt = GUILayout.Toolbar(toolbarInt, toolbarStrings, GUILayout.MaxWidth(250.0f)); //if ( showmods ) { int off = 0; //DoScrollIcons(obj, buts, 48.0f, (int)(width / 48.0f), true); //DoIcons(obj, buts, 48.0f, (int)(width / 48.0f), true); switch (toolbarInt) { case 0: off = DoButtons(obj, mods, (width / bstep) - 6.0f, bstep, true, off); off = DoButtons(obj, warpmods, (width / bstep) - 6.0f, bstep, true, off); off = DoButtons(obj, uvmods, (width / bstep) - 6.0f, bstep, true, off); off = DoButtons(obj, selmods, (width / bstep) - 6.0f, bstep, true, off); off = DoButtons(obj, utilmods, (width / bstep) - 6.0f, bstep, true, off); break; case 1: DoButtons(obj, mods, (width / bstep) - 6.0f, bstep, true, off); break; case 2: DoButtons(obj, warpmods, (width / bstep) - 6.0f, bstep, true, off); break; case 3: DoButtons(obj, uvmods, (width / bstep) - 6.0f, bstep, true, off); break; case 4: DoButtons(obj, selmods, (width / bstep) - 6.0f, bstep, true, off); break; case 5: DoButtons(obj, utilmods, (width / bstep) - 6.0f, bstep, true, off); break; } if (off != 0) { EditorGUILayout.EndHorizontal(); } //GUI.backgroundColor = Color.grey; #if false if (GUILayout.Button("Modify Object")) { AddMod(obj, null, true); //.AddComponent<MegaModifyObject>(); } showcommon = EditorGUILayout.Foldout(showcommon, "Common"); if (showcommon) { NormalMethod = (MegaNormalMethod)EditorGUILayout.EnumPopup("Normal Method", NormalMethod); //axis = (MegaAxis)EditorGUILayout.EnumPopup("Axis", axis); col1 = EditorGUILayout.ColorField("Color 1", col1); col2 = EditorGUILayout.ColorField("Color 2", col2); } #endif #if false for (int i = 0; i < mods.Length; i += 2) { if (off == 0) { EditorGUILayout.BeginHorizontal(); } if (GUILayout.Button(mods[i], GUILayout.Width((width / bstep) - 6.0f))) { AddMod(obj, mods[i + 1]); } off++; if (off == bstep) { off = 0; EditorGUILayout.EndHorizontal(); } } #endif } //showuvmods = EditorGUILayout.Foldout(showuvmods, "UV Modifiers"); //if ( showuvmods ) // DoButtons(obj, uvmods, (width / bstep) - 6.0f, bstep, true); //showmorphmods = EditorGUILayout.Foldout(showmorphmods, "Morph"); //if ( showmorphmods ) // DoButtons(obj, morphmods, (width / bstep) - 6.0f, bstep, true); //showselmods = EditorGUILayout.Foldout(showselmods, "Selection"); //if ( showselmods ) // DoButtons(obj, selmods, (width / bstep) - 6.0f, bstep, true); //showutilsmods = EditorGUILayout.Foldout(showutilsmods, "Utils"); //if ( showutilsmods ) // DoButtons(obj, utils, (width / bstep) - 6.0f, bstep, false); } } EditorGUILayout.EndScrollView(); }
//[DrawGizmo(GizmoType.SelectedOrChild)] //static void RenderGizmoSelected(ModifyObject mod, GizmoType gizmoType) //{ //mod.ColliderTest(); //} public override void OnInspectorGUI() { MegaModifyObject mod = (MegaModifyObject)target; //showhelp = EditorGUILayout.Foldout(showhelp, "Help"); //if ( showhelp ) //{ //if ( image == null ) //image = (Texture)EditorGUIUtility.LoadRequired("mod_help.png"); //if ( image != null ) //{ //float w = Screen.width - 12.0f; //float h = (w / image.width) * image.height; //GUILayout.Label((Texture)image, GUIStyle.none, GUILayout.Width(w), GUILayout.Height(h)); //} //} EditorGUIUtility.LookLikeInspector(); MegaModifiers.GlobalDisplay = EditorGUILayout.Toggle("GlobalDisplayGizmos", MegaModifiers.GlobalDisplay); mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled); mod.recalcnorms = EditorGUILayout.Toggle("Recalc Normals", mod.recalcnorms); MegaNormalMethod method = mod.NormalMethod; mod.NormalMethod = (MegaNormalMethod)EditorGUILayout.EnumPopup("Normal Method", mod.NormalMethod); mod.recalcbounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcbounds); mod.recalcCollider = EditorGUILayout.Toggle("Recalc Collider", mod.recalcCollider); mod.recalcTangents = EditorGUILayout.Toggle("Recalc Tangents", mod.recalcTangents); mod.DoLateUpdate = EditorGUILayout.Toggle("Do Late Update", mod.DoLateUpdate); mod.GrabVerts = EditorGUILayout.Toggle("Grab Verts", mod.GrabVerts); mod.DrawGizmos = EditorGUILayout.Toggle("Draw Gizmos", mod.DrawGizmos); if (mod.NormalMethod != method && mod.NormalMethod == MegaNormalMethod.Mega) { mod.BuildNormalMapping(mod.mesh, false); } //showmulti = EditorGUILayout.Foldout(showmulti, "Multi Core"); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Copy Object")) { GameObject obj = MegaCopyObject.DoCopyObjects(mod.gameObject); if (obj) { obj.transform.position = mod.gameObject.transform.position; Selection.activeGameObject = obj; } } if (GUILayout.Button("Copy Hierarchy")) { GameObject obj = MegaCopyObject.DoCopyObjectsChildren(mod.gameObject); Selection.activeGameObject = obj; } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Threading Options")) { showmulti = !showmulti; } if (showmulti) { MegaModifiers.ThreadingOn = EditorGUILayout.Toggle("Threading Enabled", MegaModifiers.ThreadingOn); mod.UseThreading = EditorGUILayout.Toggle("Thread This Object", mod.UseThreading); } EditorGUIUtility.LookLikeControls(); if (GUI.changed) { EditorUtility.SetDirty(target); } showorder = EditorGUILayout.Foldout(showorder, "Modifier Order"); if (showorder && mod.mods != null) { for (int i = 0; i < mod.mods.Length; i++) { EditorGUILayout.LabelField("", i.ToString() + " - " + mod.mods[i].ModName() + " " + mod.mods[i].Order); } } // Group stuff if (GUILayout.Button("Group Members")) { showgroups = !showgroups; } if (showgroups) { //if ( GUILayout.Button("Add Object") ) //{ //MegaModifierTarget targ = new MegaModifierTarget(); // mod.group.Add(targ); //} for (int i = 0; i < mod.group.Count; i++) { EditorGUILayout.BeginHorizontal(); mod.group[i] = (GameObject)EditorGUILayout.ObjectField("Obj " + i, mod.group[i], typeof(GameObject), true); if (GUILayout.Button("Del")) { mod.group.Remove(mod.group[i]); i--; } EditorGUILayout.EndHorizontal(); } GameObject newobj = (GameObject)EditorGUILayout.ObjectField("Add", null, typeof(GameObject), true); if (newobj) { mod.group.Add(newobj); } if (GUILayout.Button("Update")) { // for each group member check if it has a modify object comp, if not add one and copy values over // calculate box for all meshes and set, and set the Offset for each one // then for each modifier attached find or add and set instance value // in theory each gizmo should overlap the others // Have a method to update box and offsets if we allow moving in the group } } //if ( GUILayout.Button("Create Copy") ) //{ // CloneObject(); //} }
public override void OnInspectorGUI() { MegaModifyObject mod = (MegaModifyObject)target; MegaModifiers.GlobalDisplay = EditorGUILayout.Toggle("GlobalDisplayGizmos", MegaModifiers.GlobalDisplay); mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled); mod.recalcnorms = EditorGUILayout.Toggle("Recalc Normals", mod.recalcnorms); MegaNormalMethod method = mod.NormalMethod; mod.NormalMethod = (MegaNormalMethod)EditorGUILayout.EnumPopup("Normal Method", mod.NormalMethod); mod.recalcbounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcbounds); mod.recalcCollider = EditorGUILayout.Toggle("Recalc Collider", mod.recalcCollider); mod.recalcTangents = EditorGUILayout.Toggle("Recalc Tangents", mod.recalcTangents); //mod.DoLateUpdate = EditorGUILayout.Toggle("Do Late Update", mod.DoLateUpdate); mod.UpdateMode = (MegaUpdateMode)EditorGUILayout.EnumPopup("Update Mode", mod.UpdateMode); mod.InvisibleUpdate = EditorGUILayout.Toggle("Invisible Update", mod.InvisibleUpdate); bool dynamicMesh = EditorGUILayout.Toggle("Dynamic Mesh", mod.dynamicMesh); if (dynamicMesh != mod.dynamicMesh) { mod.dynamicMesh = dynamicMesh; mod.GetMesh(true); } //mod.GrabVerts = EditorGUILayout.Toggle("Grab Verts", mod.GrabVerts); mod.DrawGizmos = EditorGUILayout.Toggle("Draw Gizmos", mod.DrawGizmos); if (mod.NormalMethod != method && mod.NormalMethod == MegaNormalMethod.Mega) { mod.BuildNormalMapping(mod.mesh, false); } //showmulti = EditorGUILayout.Foldout(showmulti, "Multi Core"); #if !UNITY_FLASH && !UNITY_METRO && !UNITY_WP8 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Copy Object")) { GameObject obj = MegaCopyObject.DoCopyObjects(mod.gameObject); if (obj) { obj.transform.position = mod.gameObject.transform.position; Selection.activeGameObject = obj; } } if (GUILayout.Button("Copy Hierarchy")) { GameObject obj = MegaCopyObject.DoCopyObjectsChildren(mod.gameObject); Selection.activeGameObject = obj; } EditorGUILayout.EndHorizontal(); #endif if (GUILayout.Button("Threading Options")) { showmulti = !showmulti; } if (showmulti) { MegaModifiers.ThreadingOn = EditorGUILayout.Toggle("Threading Enabled", MegaModifiers.ThreadingOn); mod.UseThreading = EditorGUILayout.Toggle("Thread This Object", mod.UseThreading); } #if !UNITY_5 EditorGUIUtility.LookLikeControls(); #endif if (GUI.changed) { EditorUtility.SetDirty(target); } showorder = EditorGUILayout.Foldout(showorder, "Modifier Order"); if (showorder && mod.mods != null) { for (int i = 0; i < mod.mods.Length; i++) { EditorGUILayout.BeginHorizontal("box"); EditorGUILayout.LabelField("", i.ToString() + " - " + mod.mods[i].ModName() + " " + mod.mods[i].Order + " MaxLOD: " + mod.mods[i].MaxLOD); if (mod.mods[i].Label != "") { EditorGUILayout.LabelField("\t" + mod.mods[i].Label); } #if false if (i > 0) { if (GUILayout.Button("Up", GUILayout.Width(40))) { MegaModifier m = mod.mods[i - 1]; mod.mods[i - 1] = mod.mods[i]; mod.mods[i] = m; } } if (i < mod.mods.Length - 1) { if (GUILayout.Button("Down", GUILayout.Width(40))) { MegaModifier m = mod.mods[i + 1]; mod.mods[i + 1] = mod.mods[i]; mod.mods[i] = m; } } #endif EditorGUILayout.EndHorizontal(); } } // Group stuff if (GUILayout.Button("Group Members")) { showgroups = !showgroups; } if (showgroups) { //if ( GUILayout.Button("Add Object") ) //{ //MegaModifierTarget targ = new MegaModifierTarget(); // mod.group.Add(targ); //} for (int i = 0; i < mod.group.Count; i++) { EditorGUILayout.BeginHorizontal(); mod.group[i] = (GameObject)EditorGUILayout.ObjectField("Obj " + i, mod.group[i], typeof(GameObject), true); if (GUILayout.Button("Del")) { mod.group.Remove(mod.group[i]); i--; } EditorGUILayout.EndHorizontal(); } GameObject newobj = (GameObject)EditorGUILayout.ObjectField("Add", null, typeof(GameObject), true); if (newobj) { mod.group.Add(newobj); } if (GUILayout.Button("Update")) { // for each group member check if it has a modify object comp, if not add one and copy values over // calculate box for all meshes and set, and set the Offset for each one // then for each modifier attached find or add and set instance value // in theory each gizmo should overlap the others // Have a method to update box and offsets if we allow moving in the group } } //if ( GUILayout.Button("Create Copy") ) //{ // CloneObject(); //} }