Пример #1
0
    protected override void OnBeginDrawEditors()
    {
        OdinMenuTreeSelection selected = this.MenuTree.Selection;

        if (selected.SelectedValue != null)
        {
            SirenixEditorGUI.BeginHorizontalToolbar();

            GUILayout.Label(this.MenuTree.Selection.FirstOrDefault().Name);

            if (selected.SelectedValue.GetType() == typeof(SceneEssentialObjects))
            {
                {
                    GUILayout.FlexibleSpace();
                    if (SirenixEditorGUI.ToolbarButton("Delete Current"))
                    {
                        SceneEssentialObjects asset = selected.SelectedValue as SceneEssentialObjects;
                        string path = AssetDatabase.GetAssetPath(asset);
                        AssetDatabase.DeleteAsset(path);
                        AssetDatabase.SaveAssets();
                    }
                }
            }
            SirenixEditorGUI.EndHorizontalToolbar();
        }
    }
Пример #2
0
    private void CheckScene(SceneEssentialObjects asset)
    {
        GameObject[] objectsInScene = Object.FindObjectsOfType <GameObject>();

        if (_missingGameObjects != null)
        {
            _missingGameObjects = null;
        }

        _missingGameObjects = new List <GameObject>();

        foreach (GameObject assetObj in asset.Prefabs)
        {
            bool objectExists = false;
            foreach (GameObject sceneObj in objectsInScene)
            {
                if (PrefabUtility.GetCorrespondingObjectFromSource(sceneObj) == assetObj)
                {
                    objectExists = true;
                }
            }

            if (!objectExists)
            {
                _missingGameObjects.Add(assetObj);
            }
        }

        if (_missingGameObjects.Count == 0)
        {
            _missingGameObjects = null;
        }
    }
Пример #3
0
        private void CreateNewSceneType()
        {
            AssetDatabase.CreateAsset(EssentialObjects, "Assets/Resources/Tools/SceneEssentials/" + EssentialsName + ".asset");
            AssetDatabase.SaveAssets();

            // Create new Instance of the Scriptable Object
            EssentialObjects         = ScriptableObject.CreateInstance <SceneEssentialObjects>();
            EssentialObjects.Prefabs = new List <GameObject>();
            EssentialsName           = null;
        }
Пример #4
0
    protected override void OnEndDrawEditors()
    {
        Debug.Log(_missingGameObjects);
        OdinMenuTreeSelection selected = this.MenuTree.Selection;

        if (selected.SelectedValue != null)
        {
            if (selected.SelectedValue.GetType() == typeof(SceneEssentialObjects))
            {
                SceneEssentialObjects asset = selected.SelectedValue as SceneEssentialObjects;

                if (_missingGameObjects != null)
                {
                    foreach (GameObject obj in _missingGameObjects)
                    {
                        SirenixEditorGUI.WarningMessageBox("Missing -" + obj.name + "- Prefab.");
                    }
                }
                else
                {
                    if (asset.HasBeenChecked)
                    {
                        SirenixEditorGUI.InfoMessageBox("No missing Objects.");
                    }
                    else
                    {
                        SirenixEditorGUI.InfoMessageBox("Not Checked Yet.");
                    }
                }

                GUILayout.FlexibleSpace();
                SirenixEditorGUI.BeginHorizontalToolbar();
                {
                    GUILayout.FlexibleSpace();
                    if (_missingGameObjects != null)
                    {
                        if (SirenixEditorGUI.ToolbarButton("Add Missing Objects"))
                        {
                            AddMissing();
                        }
                    }

                    if (SirenixEditorGUI.ToolbarButton("Check Scene"))
                    {
                        CheckScene(asset);
                        asset.HasBeenChecked = true;
                    }
                }
                SirenixEditorGUI.EndHorizontalToolbar();
            }
        }
    }