-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[EPIC] Editor #112
Comments
This was referenced Aug 2, 2023
Merged
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Although Final Engine is not ready for a fully featured editor it's been over 3 years in the making and I think it's about time I create something to show for it. I don't expect to design something perfect but I think something with the following features will be enough for now:
The Why
Final Engine will require an editor in the somewhat near future.
The How
Technologies
I believe the editor should be created using WPF for the following reasons:
Further more, when it comes to rendering OpenGL within a WPF application we can use GLWpfControl as the events issue has been fixed since I last started prototyping.
Architecture
I believe MVVM would be the best route to go for the reasons mentioned above as well as the fact that XAML and MVVM will allow for easier integration when (and if) the UI is updated to .NET MAUI. Furthermore, MVVM allows for a (somewhat) strict design pattern which in turn will result in better code design and maintainability.
Organization
I believe three main projects should be setup in order to maintain good quality and organized code:
IApplicationContext
that contains information pertaining to the application. This interface could be used by both the view models and desktop application.Keep in mind, the desktop application should never be referenced by the view models or common project. ever.
The Associated C# Solution
See here and here for a start.
Requirements
Tool Windows
Project Explorer
The project explorer tool window will be responsible for showing all resources that are contained within the currently loaded project. These resources can include, but are not limited too:
The project explorer will have the ability to navigate through the projects folders, create, delete, rename, etc all available resources and folders within the currently loaded project. It should also watch for files that are added via the File Explorer, if a file is added to the projects folder via the File Explorer the project explorer should refresh it's contents.
Scene hierarchy
🚧🚧🚧
Entity Systems
🚧🚧🚧
Console
🚧🚧🚧
Properties
🚧🚧🚧
Document Views
Scene View
🚧🚧🚧
Plugin Architecture
I think it's super important that users can provide plugins that add extra functionality to the editor. These plugins can likely be provided via NuGet packages and should not require a restart of the main application. This way, once the core editor functionality has been implemented all that remains is creating and maintaining the plugins. Some examples of the plugins can be:
The text was updated successfully, but these errors were encountered: