ABOUT US
In this area we make a short explanation of the tasks done by each one of us in the engine.
Marc Latorre Freixes
Game Objects Transformations
Calulating each game object position and transformatons including the hierarchy transformations.
Bounds
With those transformations I also calculated and transformed each game object bounds, which includes a Sphere, an AABB and an OBB, which are used mainly in optimizing mouse picking and frustum culling.
Editor Camera
Calculating the view and projection matrices, and, as I also did the game objects transformations, passing all of them into the renderer so the scene can print those in the correct position.
Frustum Culling
Of course, the camera also has frustum culling, optimized as I said with the use of each game object boundaries.
Time Manager
I also created the Time Manager of the Engine, including the timers (game timer and real timer) and the buttons Play/Stop, Pause, Play one frame.
ImGui Docking
The base of the docking was created by nem0 in his Lumix Engine.
However his code had to be changed a little to adapt to our engine. This mainly included a save and load from the docking windows in a JSON file.
The docking also meant rendering the scene in a window.
Martí Majó Ylla-Català
Render:
Drawing geometry with openGL with multitexturing by using diferent active textures, there can be as many textures used in the same material as there can be active textures. Depends on the computer.
File System:
Directory acces, read and whrite and any needed acces to files. Folder generation, file deletion are also suported.
Game objects
Generated the game object class with its compnents so that instances could exsist within our engine. Functionality for meshes, textures, materials, animations and skeletons is also mine
Resources:
a unique binary format for each and every usable resource. Importers for each class as well providing a wide range of import options. Resource types are:
- Materials
- Meshes
- Prefabs
- Skeleton
- Animations
- Textures
Resource Manager:
A way to automaticlly mantain all usable files up to date with the outside versions by consecutive update checks and a binary meta file system.
All files are imported and loaded automaticaly. Reference counting takes care of having everything loaded if need be and not having it so if it is not in use.
I also implemented a class to handle various directories inside the one "Assets" folder.
UIDs:
Implementing a unique identifier system by using an outside md5 generator.
KD-Tree:
A kdt class to optimize handling of game objects. Ray casting for example is greatlly optimized through a tree, Also there is another tree to optimize triangles of any mesh in the same way.
Skeleton Animation Module:
Importing animations and skeletons into the engine. Generating the skeletons in the world and moving them acording to animations.
Skining deformable meshes so that vertices can be altered by a skeleton producing movevment over time.
Others:
various little things like creating own extensions of the imgui library to suite our own needs.