internal SceneCondition CreateNewCondition(string name, System.Type conditionType) { if (string.IsNullOrEmpty(name)) { Debug.LogError("Name not provided"); return(null); } if (conditionType == null) { return(null); } if (!conditionType.IsOrIsSubclassOf(typeof(SceneCondition))) { Debug.LogError("Provided type does not derive from Scene Condition, cannot create"); return(null); } SceneCondition newCondition = AssetDatabaseExtensions.CreateSubScriptableObject(TargetManager, conditionType, name) as SceneCondition; Undo.RegisterCreatedObjectUndo(newCondition, "Create Condition"); return(newCondition); }
private void InitializeDefaults() { SceneManagerAssetPath = AssetDatabase.GetAssetPath(SerializedManager.targetObject); bool wasCreated = false; AssetFilter assetFilter = AssetDatabaseExtensions. FindOrCreateSubScriptableObject <AssetFilter>(SceneManagerAssetPath, "SceneFilter", out wasCreated); if (wasCreated) { assetFilter.IncludeIfNoMatch = true; } SerializedSceneFilter = new SerializedObject(assetFilter); SceneHunter sceneHunter = AssetDatabaseExtensions. GetFirstSubAssetOf <SceneHunter>(SceneManagerAssetPath); if (sceneHunter == null) { sceneHunter = AssetDatabaseExtensions. CreateSubScriptableObject <UnitySceneHunter>(SceneManagerAssetPath, "SceneHunter"); } ScenePopulator = new SerializedObject(sceneHunter); SceneNodes = AssetDatabaseExtensions. FindOrCreateSubScriptableObject <SceneNodeCollection>(SceneManagerAssetPath, "SceneNodes", out wasCreated); if (wasCreated) { SceneNodes.SceneManager = TargetManager; } SceneNodes.PopulateSceneInfos(); SceneNodesObject = new SerializedObject(SceneNodes); SceneNodesProp = SceneNodesObject.FindProperty("sceneNodes"); if (AssetDatabaseExtensions.GetSubAssetsOfType <SceneVariableContainer>(TargetManager).Count() == 0) { TargetManager.SceneVariables.name = "ManagerVariables"; AssetDatabase.AddObjectToAsset(TargetManager.SceneVariables, TargetManager); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(TargetManager)); } SerializedManager.ApplyModifiedProperties(); ScenesProp = SerializedManager.FindProperty("scenes"); EntrySceneIdProp = SerializedManager.FindProperty("entrySceneId"); AnyScenesProp = SerializedManager.FindProperty("anyScene"); UseOnPlayProp = SerializedManager.FindProperty("useOnPlay"); GoToOnPlay = SerializedManager.FindProperty("goToOnPlay"); SerializedVariables = new SerializedSceneVariableCollection(TargetManager.SceneVariables); }
internal void CreateNewVariable(string name, System.Type typeToCreate) { if (!CanCreateVariable(name, typeToCreate)) { return; } ScriptableObject variableType = AssetDatabaseExtensions.CreateSubScriptableObject(SceneVariablesContainer, typeToCreate, name); Undo.SetCurrentGroupName("Variable " + name + " creation"); int undoGroup = Undo.GetCurrentGroup(); Undo.RegisterCreatedObjectUndo(variableType, "Created " + name); Undo.RegisterCompleteObjectUndo(SceneVariablesContainer, "Created " + name); SceneVariablesContainer.CreateNewVariable(name, variableType); SerializedContainer.Update(); Undo.CollapseUndoOperations(undoGroup); }