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();
            }
        }
    }
Ejemplo n.º 2
0
    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();
        //}
    }
Ejemplo n.º 4
0
    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();
        //}
    }