Rewriting the engine in C++#7
Conversation
|
I didn't log the changes here, but I will do for now: As of the latest commit I finished implemented settings (Camera sensitivity + autoupdates checks at startup). More settings can be added in the future, but that's just the basics, and I consider this to be good enough for now. |
|
The physics initialization needs to be tested, otherwise it is done. What follows are implementing physics objects such as rigidbodies, character controller, etc... |
|
I tested the physics engine initialization under a separate VS2022 project. I fixed some strange issue with vertices seeming to be skewed to the side because of a erroneous calculation inside I attempted implementing mesh picking without success. |
|
SpriteBatch is almost finished, I just need to fix the rotation affine transformation. (I'm not including Font in this list). Fonts currently have a major memory bug involving reading the glyps from FreeType. I have added support for source rectangles (i.e custom UV coordinates) so it is possible to only render a part of a image. I didn't test that feature, but it will be used when I add the translation/rotation/scale buttons. |
|
Project files are in a JSON format. Compiled projects will be generated using a compiler (i.e MSVC), so they won't be used in final projects. |
|
Need to use font atlases and a preallocated vertex buffer for the SpriteBatch implementation. |
|
CMake building works with VS2022 on Windows 10. Post build processes are broken at the moment. |
|
For the moment, I will consider the reflection component (without reflecting member functions) and the spritebatch (despite text rendering not being optimised with one single draw call) tasklists complete. I'm switching the goal to a earlier but more unstable release. |
|
Marking #1 as complete, since I won't bother editing the git history. |
Work on writing a C API for the Audio library.
- Currently cannot move the character controller - Sometimes falling trough the static colliders
Also: - Fixed Font asset serialization/deserialization not being handled - Fixed heap-use-after-free when creating a new project when an object was selected previously - ObjectList::Find() fix compile error, swap object, type. - GraphicsDevice dtor cleanup context state
As far as I understand, the virtual table for any object is not initialized in the ctor, thus _getMass was being called instead of _getPosition, resulting in undefined behiavour. As a consequence, I have removed the GetSet utility class from the entire codebase. C++ moment. Also fixed ObjectList::Find(size_t) returning nullptr.
|
After some polishing(especially the C# scripting part), this could be merged into the main repository. |
- Fix rendering breaking when approaching pole singularities - Fill world center gap if cursor3D isn't at (0,0,0)
- Rename "RenderWindow" to "EditorGame" - IGame::IsEditor() - Fix Color serialization - Rename FPCharacter::JumpHeight to JumpPower - IGraphicsDeviceContext::ToggleFullscreen separated into an getter and setter -
- Fix double serialization - Deserialize object hierarchy AFTER all objects were initialized - Fix Quaternion Z coordinate in editor deserialization - IObject3D::GetLocalMatrix - IObject3D::GetModelMatrix accumulates transforms
Credits to David MacDermot





Rewriting the engine in C++ could allow more control and performance compared to the old Monogame releases. Monogame has limited 3D rendering capabilities, namely the assimp implementation allows a maxiumum of 72 bones, BasicEffect (Blinn-Phong with limited control over the variables), broken UVW mapping, and some cross compatibility issues.
I do realise this will take months, but I think it is worth it.
Currently, it is being written using plain Winapi32 and DirectX11 (native windows technologies, duh). Future implementation could use NVRHI and a cross platform GUI library.
Tasks are placed in the order they are finished.
Complete tasks
Tasks that are currently being worked on
TO DO Tasks
Tasks list taken from: 3DRadSpace C++ rewrite (0.1.0a)