This is an Hierarchical Data-Oriented Entity System (wow) highly inspired on bitsquid's blog post series.
From Wikipedia:
Entity-component system (ECS) is an architectural pattern that is mostly used in game development. An ECS follows the Composition over inheritance principle that allows greater flexibility in defining entities where every object in a game's scene is an entity (e.g. enemies, bullets, vehicles, etc.). Every Entity consists of one or more components which add additional behavior or functionality. Therefore, the behavior of an entity can be changed at runtime by adding or removing components. This eliminates the ambiguity problems of deep and wide inheritance hierarchies that are difficult to understand, maintain and extend. Common ECS approaches are highly compatible and often combined with data oriented design techniques.
(Tested on Linux Manjaro)
sudo pacman -S sfml boost cmake
git submodule update --init --recursive
mkdir Build && cd Build
cmake ..
make -j
./Entity/Core/SystemTest
./Entity/Core/PropertyTest
./Entity/Core/HierarchyTest
./Entity/Core/TupleVectorTest
./Entity/Graph/GraphTest
- Entity System without erase operation
- Entity System with erase operation
- Property creation for both types of Entity Systems
- Composition (hierarchy)
- Strong: Erasing an Entity will erase its children
- Weak: As you can imagine, erasing an entity will not erase its children
- Graph
- Directed and Undirected Graph (the former is more mature than the latter)
- Dijkstra
- Shortest Path View (ranges-v3)
- Improve this readme :)
- Make Dijkstra work on both Graph and Digraph
- Create Graphs with support for erase operation
- Create a wiki for presenting the memory model