Skip to content

Kengine 4.2

Compare
Choose a tag to compare
@phisko phisko released this 17 Sep 14:59

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 a Component as a tree structure in ImGui
  • Added a LoadFromJSON "component function" that loads a Component from a JSON object
  • Added a MatchString "component function" that returns whether a Component (when serialized) contains a specific string
  • Added an ImGuiEntityEditorSystem that displays an ImGui editor for any Entity with a SelectedComponent
  • Added an ImGuiEntitySelectorSystem that displays an ImGui window letting users search for Entities and add a SelectedComponent to them
  • Added a Bullet Physics system and a QueryPosition datapacket
  • Added OnClickComponent and OnClickSystem

Major changes

  • Moved to a "model entity" architecture for OpenGL rendering systems, where Entities with a ModelComponent hold flyweight-style information for all GraphicsComponents pointing to a same resource

Minor changes

  • Added GodRaysComponent
  • Added roll to TransformComponent and CameraComponent
  • Added color and alpha to GraphicsComponent::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.