Kengine 5.0
This release comes with a ZIP file containing the entire source code, including its putils submodule. This makes it easier for people not used to working with Git submodules to download the entire source code.
Changelog
Major changes
- Improved reflection API
- Removed load/save functionality
"System Entity' model
- Systems are now represented by
Entitieswith "function Components" - Datapackets have been replaced by "function Components"
- This lets systems be queried and extended by users (by adding new "function Components" or any other type of components, e.g. for profiling)
"Type Entities"
- Replaced
ComponentFunctionswith "meta Components", attached to type Entities
Features
Architecture
- conan for dependency management
- ViewportComponent and WindowComponent
- Graphics-agnostic InputSystem
- KinematicSystem
Helpers
Tools
kengine::no<T>option forEntityManager::getEntitiesto filter outEntitieswith a given component- ImGuiToolSystem and ImGuiToolComponent
- Adjustable
enumsin ImGui tools - termcolor
- Shader profiler for
OpenGL - putils::gl::Uniform for
OpenGLshaders - ForEachEntity and ForEachEntityWithout meta functions
OpenGL
- Render to texture
- Cascaded shadow maps
Minor changes
Behaviors
- OpenGL sprites and text are now drawn upright
ComponentJSONLoadernow works with arrays- Optimized MagicaVoxelSystem loading through binary serialization
- Light shaders are now responsible for clearing their shadow maps
- Optimized
OpenGL"entity in pixel" queries
ImGui tools
- Improved ImGuiAdjustableSystem and ImGuiEntityEditorSystem layout
- .6f precision for ImGui
InputFloats - ImGui inputs only apply changes after pressing Enter
- Editor windows are named according to NameComponent
Components
- Replaced
ModelLoaderComponentwith ModelDataComponent - Relative parameters in InputComponent::onMouseMove
- Grouped parameters in
InputComponentcallbacks loopfield in AnimationComponent- Add
pitch,yawandrollto PhysicsComponent - Replace
PhysicsComponent::kinematicwith KinematicComponent - Light constants are now set in LightComponents instead of through global adjustables
- TextureModelComponent now stores the file name, is not used in combination with ModelComponent
- Updated putils::Point API
Misc
- Replaced
putils_for_each_typemacro with a function
Optimizations
- Added LuaTableComponent to separate responsibility from LuaComponent and have it not be tied to sol
- Optimized for empty components (no memory allocation)
Fixes
- Fixed
ImGuiAdjustableSystemnot loading colors properly - Fixed crash in
OpenGLSystemwhen requesting theEntity::IDfor pixel iny == 0 - Fixed camera orientation in
OpenGLSystem