Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 6
0
 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);
 }