The overlord engine is a c++ engine framework of Howest. It lacks any tools to aid development so i created a small editor to make creating games easier with it.
This was my first time working on tool development. I started by looking at Unreal and Unity engine to see what features a basic editor should have.
I decided on three main visual tools
A scene graph that allows for the selecting and parenting of actors.
A content browser to display all the users assets.
A parameter editor to edit the selected asset or scene object.
For Gui library i decided to use ImGui since it would allow me to iterate faster and was faster to start with.
To display the component variables of the selected game object, i wanted to create something that could be reused for all objects that had variables that could be altered. So i implemented a reflection system that uses std::function. With 2 structs, a base struct to hold the variable type and a derived struct to hold the methods and name.
A vector of these is then stored withing the base object. To register the variable i added this method as wel.
Allowing for any supported variable to be reflected via a getter and setter.
I implemented object selection using the DIrectX11 BoundingOrientedBox. A bounding box is stored alongside a model component. The box is created with the middle and furthest extent of the model. And is updated when a different model is assigned. when a collision check is called done the box is transformed with the objects world matrix and then tests for an intersection with the given ray. If a collision happens the distance from the ray origin and the center of the box is returned.