コード例 #1
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();
        //}
    }