I am currently working on Godot game engine version 4.4.1 Stable. I am touching source codes (C++) of Godot Editor to introduce features that I want to implement. My goal is to have game engine which supports editing models in various ways.
Youtube: https://www.youtube.com/watch?v=d6PZXRioSTU
1. Custom Mesh Creation
Introducing CustomMesh which is inherit from BoxMesh, added few more capabilities
2. Rendering Modes (Vertex / Wireframe / Vertex-Wireframe / Solid-Wireframe / Vertex-Solid-Wireframe)
You can change rendering modes, rendering modes are implemented through godot Shader
3. Segmentation
You can update the segmentation of Cube in realtime
4. Selection Modes (Object / Quad / Triangle / Vertex)
You can toggle selection modes
5. Operations Modes (Object / Edit / Paint / Pose)
You can choose different modes for its purpose (to have Pose related functionalities added later)
6. Shading & Texture (Toggle)
Default custom shading is available for all type of Meshes, Texture can be toggled (On or Off)
You can also color selected triangles
7. Lighting (Toggle)
Lighting can be toggled (On or Off) based on the Texture, light strength will be adjusted if Texture is turned off so that Mesh doesn’t become too bright
8. Basic Surface Transformation
You can transform Mesh with given selection modes
9. Mirror Surface Transformation
Selection can be done in Mirror, within same face or opposite face and the action itself can be mirrored
10. Face Extrude
Face can be extruded, meaning that another CustomCube will be created and attached to selected face, once then both Meshes will be connected as one
11. Segmentation Sync
Segmentation can be synced across all the connected Meshes
12. Transformation Sync
Transformation will be in sync across all the connected vertices in realtime
13. Transformation Lock
Each Meshes have transformation lock available (Translation / Rotation / Scale)
14. Morphing Animation
Introducing Mesh Snapshots, and morphing between based on given Frame Rates and Frames per Seconds
15. To dos
Bug fixes, code refactoring