Example #1
0
        public EmptyMarkerPresetsPopup(EmptyMarker o)
        {
            m_marker = o;

            m_defMat = (Material)AssetDatabase.LoadAssetAtPath(DefaultMaterial, typeof(Material));
            Dbg.Assert(m_defMat != null, "EmptyMarkerPresetsPopup.ctor: failed to get defMat at {0}", DefaultMaterial);
            m_defSelMat = (Material)AssetDatabase.LoadAssetAtPath(DefaultSelectedMaterial, typeof(Material));
            Dbg.Assert(m_defSelMat != null, "EmptyMarkerPresetsPopup.ctor: failed to get defSelMat at {0}", DefaultSelectedMaterial);

            var guids = AssetDatabase.FindAssets("t:Mesh", ModelsPath);

            foreach (var id in guids)
            {
                string path = AssetDatabase.GUIDToAssetPath(id);
                string name = Path.GetFileNameWithoutExtension(path);
                Mesh   m    = AssetDatabase.LoadAssetAtPath(path, typeof(Mesh)) as Mesh;
                Dbg.Assert(m != null, "EmptyMarkerPresetsPopup.ctor: failed to get mesh at: {0}", path);

                m_names.Add(name);
                m_meshes.Add(m);
            }
        }
Example #2
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();
        }