THE ENGINE
Main Core Sub-Systems
Game Objects
New game objects can be added from the assets folder of what you have imported. You can also create empty game objects. Those will be added in the hierarchy and their parent will be the current selected object.
Game objects can be selected by clicking them with the mouse, which is optimizated as each game object has a sphere, an AABB and an OBB with them for this (and for the camera frustum culling). They also can be deleted with the delete key, which deletes the selected game object and all its childrens.
Components
Each game object can have different components, such as a Mesh, an Animator, ... but they all have a transformation (local transformation), which determinates their position in the world.
Camera
The camera movement is unity-like.
Of course it has frustum culling.
KDTree
A binary tree class to optimize space through space partition in x,y,z dimencions
Docking Windows (ImGui)
Each window in the engine can be moved and put into another place.
Impoter
Skeletal Animation
The skeletal animation module takes care of generating skeletons and moving them. Then it moves all vertices acordinglly generating real time animations. All this is done through cpu.