예제 #1
0
        public override void OnInspectorGUI()
        {
            EmptyMarker o = (EmptyMarker)target;

            EditorGUI.BeginChangeCheck();
            var newMf = (MeshFilter)EditorGUILayout.ObjectField("MeshFilter", o.mf, typeof(MeshFilter), true);

            if (EditorGUI.EndChangeCheck())
            {
                o.mf = newMf;
                EUtil.SetDirty(o);
            }

            EUtil.PushGUIEnable(o.mf != null);
            {
                EditorGUI.BeginChangeCheck();
                var newMesh = (Mesh)EditorGUILayout.ObjectField("Mesh", o.mesh, typeof(Mesh), false);
                if (EditorGUI.EndChangeCheck())
                {
                    o.mesh = newMesh;
                    EUtil.SetDirty(o);
                }

                EditorGUI.BeginChangeCheck();
                var newMat = (Material)EditorGUILayout.ObjectField("Material", o.material, typeof(Material), false);
                if (EditorGUI.EndChangeCheck())
                {
                    o.material = newMat;
                    EUtil.SetDirty(o);
                }

                EditorGUI.BeginChangeCheck();
                var newSelMat = (Material)EditorGUILayout.ObjectField("Selected Material", o.selectedMaterial, typeof(Material), false);
                if (EditorGUI.EndChangeCheck())
                {
                    o.selectedMaterial = newSelMat;
                    EUtil.SetDirty(o);
                }
            }
            EUtil.PopGUIEnable();

            EditorGUI.BeginChangeCheck();
            o.jumpTo = (Transform)EditorGUILayout.ObjectField("Jump To", o.jumpTo, typeof(Transform), true);
            if (EditorGUI.EndChangeCheck())
            {
                EUtil.SetDirty(o);
            }

            // create "mesh" child object to hold marker
            EditorGUILayout.BeginHorizontal();
            {
                Rect rc = GUILayoutUtility.GetRect(new GUIContent("Presets"), GUI.skin.button);
                if (GUI.Button(rc, new GUIContent("Presets", "select presets marker")))
                {
                    PopupWindow.Show(rc, new EmptyMarkerPresetsPopup(o));
                }

                if (GUILayout.Button(new GUIContent("Delete", "delete marker")))
                {
                    if (o.mf != null)
                    {
                        MUndo.DestroyObj(o.mf.gameObject);
                    }

                    MUndo.DestroyObj(o);

                    EditorGUIUtility.ExitGUI();
                }

                if (o.jumpTo != null)
                {
                    if (GUILayout.Button(new GUIContent("Target", "jump to the target transform")))
                    {
                        Selection.activeTransform = o.jumpTo;
                    }
                }
            }
            EditorGUILayout.EndHorizontal();
        }
        public override void OnInspectorGUI()
        {
            AngleConstraintMB mb = (AngleConstraintMB)target;

            mb.enabled = EditorGUILayout.Toggle("Enabled", mb.enabled);

            EditorGUI.BeginChangeCheck();
            mb.nextJoint = EditorGUILayout.ObjectField("nextJoint", mb.nextJoint, typeof(Transform), true) as Transform;
            if (EditorGUI.EndChangeCheck())
            {
                EUtil.SetDirty(mb);
                EUtil.RepaintSceneView();
            }

            if (mb.nextJoint == null)
            {
                EditorGUILayout.LabelField("Set the nextJoint first...");
                return;
            }
            else
            {
                EUtil.PushGUIEnable(mb.enabled);

                GUILayout.BeginHorizontal();
                {
                    GUILayout.Space(30f);
                    if (EUtil.Button("ReInit", "decide all the parameters with default method", Color.green))
                    {
                        Undo.RecordObject(mb, "ReInit");
                        mb.AutoSetParameters();
                        EUtil.SetDirty(mb);
                        EUtil.RepaintSceneView();
                    }
                    GUILayout.Space(30f);
                }
                GUILayout.EndHorizontal();

                // min/max limit
                float min = mb.minLimit;
                float max = mb.maxLimit;
                EditorGUI.BeginChangeCheck();
                EUtil.DrawMinMaxSlider("Angle Limits", ref min, ref max, -180f, 180f);
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(mb, "Modify Angle limits");
                    mb.minLimit = min;
                    mb.maxLimit = max;
                    EUtil.SetDirty(mb);
                    EUtil.RepaintSceneView();
                }

                EditorGUI.BeginChangeCheck();
                Vector3 newRotAxis  = EUtil.DrawV3P(new GUIContent("Rotation Axis", "in parent space, in world space if no parent joint"), mb.rotAxis);
                Vector3 newPrimAxis = EUtil.DrawV3P(new GUIContent("Primary Axis", "in parent space, in world space if no parent joint"), mb.primAxis);
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(mb, "Modify Constraint parameters");
                    mb.rotAxis  = newRotAxis;
                    mb.primAxis = newPrimAxis;
                    mb.CalcInitData(); //!! recalc the startLocalRot
                    EUtil.SetDirty(mb);
                    EUtil.RepaintSceneView();
                }

                ms_showDisplaySetting = EditorGUILayout.Foldout(ms_showDisplaySetting, "Display Settings:");
                if (ms_showDisplaySetting)
                {
                    EditorGUI.BeginChangeCheck();
                    ms_markerSize = EditorGUILayout.FloatField("ArcSize", ms_markerSize);
                    ms_arcColor   = EditorGUILayout.ColorField("ArcColor", ms_arcColor);
                    if (EditorGUI.EndChangeCheck())
                    {
                        EUtil.RepaintSceneView();
                    }
                }

                EUtil.PopGUIEnable();
            }
        }