Kengine 4.2
For the first time, this release comes with a ZIP file containing the entire source code, including its putils
submodule. This will make it easier for people not used to working with Git submodules to download the entire source code.
Changelog
Features
- Added "component function" system, which lets users register function template specializations for specific components (such as a serializer, JSON parser, string matcher...)
- Added an
ImGuiEditor
"component function" that displays aComponent
as a tree structure in ImGui - Added a
LoadFromJSON
"component function" that loads aComponent
from aJSON
object - Added a
MatchString
"component function" that returns whether aComponent
(when serialized) contains a specific string - Added an
ImGuiEntityEditorSystem
that displays an ImGui editor for anyEntity
with aSelectedComponent
- Added an
ImGuiEntitySelectorSystem
that displays an ImGui window letting users search forEntities
and add aSelectedComponent
to them - Added a Bullet Physics system and a
QueryPosition
datapacket - Added
OnClickComponent
andOnClickSystem
Major changes
- Moved to a "model entity" architecture for OpenGL rendering systems, where
Entities
with aModelComponent
hold flyweight-style information for allGraphicsComponents
pointing to a same resource
Minor changes
- Added
GodRaysComponent
- Added
roll
toTransformComponent
andCameraComponent
- Added
color
andalpha
toGraphicsComponent::Layer
- Removed
GraphicsComponent::Layer
as it was mostly unused and only complicated code
Optimizations
- Made
BaseModule::receive
non-virtual - Made the engine thread-safe
Fixes
- Various fixes in OpenGL rendering systems, both about functionality and architecture
Note
The master
, develop
and v4.2
commit histories have been emptied to reduce the repository size. This is due to my (very unfortunately) poor use of Git. While trying to make the repository easier to use, I switched from submodules to subtrees. This made it easier to clone the repository, but much harder for me to work with it. The commit history quickly became polluted and the repository size basically exploded.
I found no better solution than to clear the history, which shouldn't have too many downsides, apart from people who forked the engine and would have liked to submit a merge request (but I haven't had any of those in ages).
I will be much more careful with my use of Git from now on, and will try to keep the repository size sane.