Av3boy / Av3boy/SharpEngine

Advanced editor

Open
#26 0 comments 0 reactions 0 assignees View on GitHub
editor enhancement rendering window
Dominant language
C#
Stars
6
Forks
0
Avg merge
1h 1m
Merged PRs (30d)
2

Description

# Advanced editor
Instead of rendering everything to a single window, users may want to break off specific parts like the inspector to another screen. For this we need to implement a [Docking System](#docking-system).

TODO: This issue should be broken down to smaller chunks

Editor design (WIP):
https://www.figma.com/design/vFi8jKlqeXuKmjELkEvlnE/SharpEngine?node-id=0-1&p=f&t=ucWN7jFlWoYdRQNh-0

## Docking system
The basic docking system enables users to break off editor windows like the [Inspector](#inspector) into their own os-level windows. By default the docked windows are rendered as components like imgui windows or custom [UI Components](#ui-components).

The `EditorWindow` components should be modified so that different components can be derived from it like the [Inspector](#inspector).

## Inspector
TBD

### Picker component
TBD

## Menu bar
The menu bar should be a container at the top of the main editor window that can be extended using chaining.

The menu bar needs to support nested context menus.

## Asset view
The see what assets are associated with a given project we need to store that information somewhere. We need to create a directory to contain all the assets within a project.

For the first iteration, let's just render the file extension onto the asset container. If it's longer than 8 characters, take the first 5 and add '...'.

We need a context menu forr assets:
- Delete
- Clone
- Open in IDE -> IDE opening support (The preferred IDE that should open the file should be defined in the [Launcher settings](#launcher-settings))

### Layout components
Layout components sould contain scrollbars when contents to not fit in their containers.

Flex component to space items evenly. TBD: Based on css rules?

Grid component to show n items per row. When n items have been reached, a new row should be created.
https://chatgpt.com/c/67cc19ed-876c-8004-92ba-20e37b0751ac

### Moving assets
TBD: Can we leverage the docking system.

### Exit dialog
We need to create a dialog that should confirm whether the user wants to exit without saving their changes. The dialog should be a shared component.

The `UnsavedChangesDialog` component should contain the following:
- Title: "Unsaved changes!"
- Content: "You have unsaved changes in your project, are you sure you want to exit?"
- Save button, which saves the scene.
- Close button which closes down the application.

## Launcher?
Since the asset view requires storing the assets in a specific location, we need to introduce projects. We also need a container that stores all the project file locations.

We can create new file ProgramData/SharpEngine/projects.json which contains all the project file locations that can be shown in the launcher UI.

### Launcher settings
TBD

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.