Пример #1
0
        private bool UpdateSourceAsset(SlotDataAsset newObj)
        {
            MeshHideAsset source = target as MeshHideAsset;
            bool          update = false;

            if (source.asset != null)
            {
                if (EditorUtility.DisplayDialog("Warning", "Setting a new source slot will clear the existing data on this asset!", "OK", "Cancel"))
                {
                    update = true;
                }
            }
            else
            {
                update = true;
            }

            if (update)
            {
                source.AssetSlotName = newObj.slotName;
                source.Initialize();
                UpdateMeshPreview();
                AssetDatabase.SaveAssets();
                EditorUtility.SetDirty(target);
                return(true);
            }
            return(false);
        }
Пример #2
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            MeshHideAsset source            = target as MeshHideAsset;
            bool          beginSceneEditing = false;

            //DrawDefaultInspector();
            var obj = EditorGUILayout.ObjectField("SlotDataAsset", source.asset, typeof(SlotDataAsset), false);

            if (obj != null && obj != source.asset)
            {
                source.asset = obj as SlotDataAsset;
                source.Initialize();
                UpdateMeshPreview();
                AssetDatabase.SaveAssets();
                EditorUtility.SetDirty(target);
            }

            //If we had a slotData added and we set it to none, then lets clear everything.
            if (obj == null && source.asset != null)
            {
                source.asset = null;
                source.Initialize();
                AssetDatabase.SaveAssets();
                EditorUtility.SetDirty(target);
            }

            if (source.asset == null)
            {
                EditorGUILayout.HelpBox("No SlotDataAsset set! Begin by adding a SlotDataAsset to the object field above.", MessageType.Error);
            }

            GUILayout.Space(20);
            if (source.TriangleCount > 0)
            {
                EditorGUILayout.LabelField("Triangle Indices Count: " + source.TriangleCount);
                EditorGUILayout.LabelField("Submesh Count: " + source.SubmeshCount);
                EditorGUILayout.LabelField("Hidden Triangle Count: " + source.HiddenCount);
            }
            else
            {
                EditorGUILayout.LabelField("No triangle array found");
            }

            GUILayout.Space(20);
            if (!GeometrySelectorWindow.IsOpen)
            {
                EditorGUI.BeginDisabledGroup(source.asset == null);
                if (GUILayout.Button("Begin Editing", GUILayout.MinHeight(50)))
                {
                    if (source.asset != null)
                    {
                        beginSceneEditing = true;
                    }
                }
                EditorGUI.EndDisabledGroup();
                GUILayout.Space(20);
                GUILayout.Label("Editing will be done in an empty scene.");
                GUILayout.Label("You will be prompted to save the scene");
                GUILayout.Label("if there are any unsaved changes.");
            }
            serializedObject.ApplyModifiedProperties();

            if (beginSceneEditing)
            {
                // This has to happen outside the inspector
                EditorApplication.delayCall += CreateSceneEditObject;
            }
        }