/// <summary> /// Creates and loads a new .utmodule /// @NOTE The module only exists in memory until Save() is called /// </summary> public static void NewModule() { var context = new UTinyContext(); var registry = context.Registry; UTinyPersistence.LoadAllModules(registry); // Create a `workspace` project to host the module for editing purposes var project = registry.CreateProject(UTinyId.Generate(KWorkspaceProjectName), KWorkspaceProjectName); // Create objects for the new module var module = registry.CreateModule(UTinyId.New(), "NewModule"); // Setup initial state for the module module.Namespace = "module"; SetupModule(registry, module); project.Module = (UTinyModule.Reference)module; var workspace = new UTinyEditorWorkspace(); UTinyEditorPrefs.SaveWorkspace(workspace); var editorContext = new UTinyEditorContext((UTinyProject.Reference)project, EditorContextType.Module, context, workspace); LoadContext(editorContext, isChanged: true); }
/// <summary> /// Creates and loads a new .utproject /// @NOTE The project only exists in memory until Save() is called /// </summary> public static void NewProject() { Assert.IsFalse(EditorApplication.isPlayingOrWillChangePlaymode); var context = new UTinyContext(); var registry = context.Registry; UTinyPersistence.LoadAllModules(registry); // Create new objects for the project var project = registry.CreateProject(UTinyId.New(), "NewProject"); var module = registry.CreateModule(UTinyId.New(), "Main"); // Setup the start scene var entityGroup = registry.CreateEntityGroup(UTinyId.New(), "NewEntityGroup"); var entityGroupRef = (UTinyEntityGroup.Reference)entityGroup; var cameraEntity = registry.CreateEntity(UTinyId.New(), "Camera"); var transform = cameraEntity.AddComponent(registry.GetTransformType()); transform.Refresh(); var camera = cameraEntity.AddComponent(registry.GetCamera2DType()); camera.Refresh(); camera["clearFlags"] = new UTinyEnum.Reference(registry.GetCameraClearFlagsType().Dereference(registry), 1); camera.AssignPropertyFrom("backgroundColor", Color.black); camera["depth"] = -1.0f; entityGroup.AddEntityReference((UTinyEntity.Reference)cameraEntity); // Setup initial state for the project module.Options |= UTinyModuleOptions.ProjectModule; module.Namespace = "game"; module.StartupEntityGroup = (UTinyEntityGroup.Reference)entityGroup; module.AddEntityGroupReference(entityGroupRef); project.Module = (UTinyModule.Reference)module; project.Settings.EmbedAssets = true; project.Settings.CanvasWidth = 1920; project.Settings.CanvasHeight = 1080; SetupProject(registry, project); module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.Core2D")); // Always include a dependency on core, math, core2d by default // And HTML for now, since it is the only renderer we have right now. module.AddExplicitModuleDependency((UTinyModule.Reference)registry.FindByName <UTinyModule>("UTiny.HTML")); var workspace = new UTinyEditorWorkspace { OpenedEntityGroups = { entityGroupRef }, ActiveEntityGroup = entityGroupRef }; UTinyEditorPrefs.SaveWorkspace(workspace); var editorContext = new UTinyEditorContext((UTinyProject.Reference)project, EditorContextType.Project, context, workspace); LoadContext(editorContext, isChanged: true); }
/// <summary> /// Loads the workspace for the given id /// </summary> /// <returns>Workspace for the given Id or an empty workspace</returns> public static UTinyEditorWorkspace LoadWorkspace(string persistenceId) { var workspace = new UTinyEditorWorkspace(); var json = EditorPrefs.GetString($"{GetWorkspaceKey(persistenceId)}", string.Empty); workspace.FromJson(json); return(workspace); }
/// <summary> /// Loads the last saved workspace /// </summary> public static UTinyEditorWorkspace LoadLastWorkspace() { var workspace = new UTinyEditorWorkspace(); var persistenceId = EditorPrefs.GetString(KLastWorkspaceKey, string.Empty); var json = EditorPrefs.GetString(GetWorkspaceKey(persistenceId), string.Empty); workspace.FromJson(json); return(workspace); }
/// <summary> /// Sets the workspace /// </summary> /// <param name="workspace">Workspace to save</param> /// <param name="persistenceId">The persistenceId for this workspace</param> public static void SaveWorkspace(UTinyEditorWorkspace workspace, string persistenceId = null) { if (string.IsNullOrEmpty(persistenceId)) { persistenceId = "Temp"; } EditorPrefs.SetString(GetWorkspaceKey(persistenceId), workspace.ToJson()); EditorPrefs.SetString(KLastWorkspaceKey, persistenceId); }
public UTinyEditorContext(UTinyProject.Reference project, EditorContextType type, UTinyContext context, UTinyEditorWorkspace workspace) { m_Project = project; ContextType = type; Context = context ?? new UTinyContext(); Workspace = workspace ?? new UTinyEditorWorkspace(); Undo = new UTinyUndo(Registry, Caretaker); EntityGroupManager = new UTinyEntityGroupManager(this); }