public static string AddCSharpClassTemplate( string friendlyName, string defaultFileName, string templateStr, string folderPath) { var absolutePath = EditorUtility.SaveFilePanel( "Choose name for " + friendlyName, folderPath, defaultFileName + ".cs", "cs"); if (absolutePath == "") { // Dialog was cancelled return(null); } if (!absolutePath.ToLower().EndsWith(".cs")) { absolutePath += ".cs"; } var className = Path.GetFileNameWithoutExtension(absolutePath); File.WriteAllText(absolutePath, templateStr.Replace("CLASS_NAME", className)); AssetDatabase.Refresh(); var assetPath = UniDiUnityEditorUtil.ConvertFullAbsolutePathToAssetPath(absolutePath); EditorUtility.FocusProjectWindow(); Selection.activeObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(assetPath); return(assetPath); }
static void CreateProjectContextInternal(string absoluteDir) { var assetPath = UniDiUnityEditorUtil.ConvertFullAbsolutePathToAssetPath(absoluteDir); var prefabPath = (Path.Combine(assetPath, ProjectContext.ProjectContextResourcePath) + ".prefab").Replace("\\", "/"); var gameObject = new GameObject(); try { gameObject.AddComponent <ProjectContext>(); #if UNITY_2018_3_OR_NEWER var prefabObj = PrefabUtility.SaveAsPrefabAsset(gameObject, prefabPath); #else var prefabObj = PrefabUtility.ReplacePrefab(gameObject, PrefabUtility.CreateEmptyPrefab(prefabPath)); #endif Selection.activeObject = prefabObj; } finally { GameObject.DestroyImmediate(gameObject); } Debug.Log("Created new ProjectContext at '{0}'".Fmt(prefabPath)); }
static LoadedSceneInfo TryCreateLoadedSceneInfo(Scene scene) { var sceneContext = UniDiUnityEditorUtil.TryGetSceneContextForScene(scene); var decoratorContext = UniDiUnityEditorUtil.TryGetDecoratorContextForScene(scene); if (sceneContext == null && decoratorContext == null) { return(null); } var info = new LoadedSceneInfo { Scene = scene }; if (sceneContext != null) { Assert.IsNull(decoratorContext, "Found both SceneContext and SceneDecoratorContext in scene '{0}'", scene.name); info.SceneContext = sceneContext; } else { Assert.IsNotNull(decoratorContext); info.DecoratorContext = decoratorContext; } return(info); }
public static void ValidateAllActiveScenes() { UniDiUnityEditorUtil.SaveThenRunPreserveSceneSetup(() => { var numValidated = UniDiUnityEditorUtil.ValidateAllActiveScenes(); Log.Info("Validated all '{0}' active scenes successfully", numValidated); }); }
static bool ValidateCurrentSceneInternal() { return(UniDiUnityEditorUtil.SaveThenRunPreserveSceneSetup(() => { SceneParentAutomaticLoader.ValidateMultiSceneSetupAndLoadDefaultSceneParents(); UniDiUnityEditorUtil.ValidateCurrentSceneSetup(); Log.Info("All scenes validated successfully"); })); }
public static void CreateDefaultSceneContractConfig() { var folderPath = UniDiUnityEditorUtil.GetCurrentDirectoryAssetPathFromSelection(); if (!folderPath.EndsWith("/Resources")) { EditorUtility.DisplayDialog("Error", "UniDiDefaultSceneContractConfig objects must be placed directly underneath a folder named 'Resources'. Please try again.", "Ok"); return; } var config = ScriptableObject.CreateInstance <DefaultSceneContractConfig>(); UniDiUnityEditorUtil.SaveScriptableObjectAsset( Path.Combine(folderPath, DefaultSceneContractConfig.ResourcePath + ".asset"), config); }
public static void CreateProjectContext() { var absoluteDir = UniDiUnityEditorUtil.TryGetSelectedFolderPathInProjectsTab(); if (absoluteDir == null) { EditorUtility.DisplayDialog("Error", "Could not find directory to place the '{0}.prefab' asset. Please try again by right clicking in the desired folder within the projects pane." .Fmt(ProjectContext.ProjectContextResourcePath), "Ok"); return; } var parentFolderName = Path.GetFileName(absoluteDir); if (parentFolderName != "Resources") { EditorUtility.DisplayDialog("Error", "'{0}.prefab' must be placed inside a directory named 'Resources'. Please try again by right clicking within the Project pane in a valid Resources folder." .Fmt(ProjectContext.ProjectContextResourcePath), "Ok"); return; } CreateProjectContextInternal(absoluteDir); }
public static string AddCSharpClassTemplate( string friendlyName, string defaultFileName, string templateStr) { return(AddCSharpClassTemplate( friendlyName, defaultFileName, templateStr, UniDiUnityEditorUtil.GetCurrentDirectoryAssetPathFromSelection())); }