Skip to content

Commit

Permalink
reflection system
Browse files Browse the repository at this point in the history
  • Loading branch information
skypjack committed Oct 5, 2018
1 parent d81cb7f commit 618a325
Show file tree
Hide file tree
Showing 23 changed files with 4,183 additions and 99 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ install:

script:
- mkdir -p build && cd build
- cmake .. && make -j4
- cmake -DCMAKE_BUILD_TYPE=Release .. && make -j4
- CTEST_OUTPUT_ON_FAILURE=1 make test

deploy:
Expand Down
42 changes: 22 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,25 @@ a while the codebase has grown and more and more classes have become part of the
repository.<br/>
Here is a brief, yet incomplete list of what it offers today:

* Statically generated integer identifiers for types (assigned either at
compile-time or at runtime).
* A constexpr utility for human readable resource identifiers.
* A minimal configuration system built on top of the monostate pattern.
* An incredibly fast entity-component system based on sparse sets, with its own
views and a _pay for what you use_ policy to adjust performance and memory
* Statically generated integer **identifiers for types** (assigned either at
**compile-time** or at **runtime**).
* A **constexpr utility** for **human readable resource identifiers**.
* A minimal **configuration system** built on top of the **monostate pattern**.
* **An incredibly fast entity-component system** based on sparse sets, with its
own views and a _pay for what you use_ policy to adjust performance and memory
usage according to users' requirements.
* A lot of facilities built on top of the entity-component system to help
developers and avoid reinventing the wheel (ie dependencies, snapshot, actor
class for those who aren't confident with the architecture and so on).
* The smallest and most basic implementation of a service locator ever seen.
* A cooperative scheduler for processes of any type.
* All what is needed for resource management (cache, loaders, handles).
* Delegates, signal handlers (with built-in support for collectors) and a tiny
event dispatcher.
* A general purpose event emitter, that is a CRTP idiom based class template.
* An event dispatcher for immediate and delayed events to integrate in loops.
* A lot of **facilities built on top of the entity-component system** to help
developers and avoid reinventing the wheel (ie **dependencies**, **snapshot**,
**actor class** for those who aren't confident with the architecture and so
on).
* The smallest and most basic implementation of a **service locator** ever seen.
* A built-in, non-intrusive and macro-free **runtime reflection system**.
* A **cooperative scheduler** for processes of any type.
* All what is needed for **resource management** (cache, loaders, handles).
* **Delegates**, **signal handlers** (with built-in support for collectors) and
a tiny **event dispatcher** for immediate and delayed events to integrate in
loops.
* A general purpose **event emitter** as a CRTP idiom based class template.
* ...
* Any other business.

Expand Down Expand Up @@ -257,10 +259,10 @@ The API reference will be created in HTML format within the directory
<!--
@cond TURN_OFF_DOXYGEN
-->
The API reference is also available [online](https://skypjack.github.io/entt/)
for the latest version.<br/>
There exists also a [wiki](https://github.com/skypjack/entt/wiki) dedicated to
the project where users can find all related documentation pages.
It's also available [online](https://skypjack.github.io/entt/) for the latest
version.<br/>
Finally, there exists a [wiki](https://github.com/skypjack/entt/wiki) dedicated
to the project where users can find all related documentation pages.
<!--
@endcond TURN_OFF_DOXYGEN
-->
Expand Down
14 changes: 12 additions & 2 deletions TODO
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
* suggestion/request: cache made with flat_map + object pools + new/delete overloads so as to get rid of shared pointers (+ cache coherency)
# suggestion/request: add iterative sorter to the algorithms
* custom allocators and EnTT allocator-aware in general (long term feature, I don't actually need it at the moment) - see #22
* scene management (I prefer the concept of spaces, that is a kind of scene anyway)
* debugging tools (#60): the issue online already contains interesting tips on this, look at it
* define basic reactive systems (track entities to which component is attached, track entities from which component is removed, and so on)
* define systems as composable mixins (initializazion, reactive, update, whatever) with flexible auto-detected arguments (registry, views, etc)
* registry::create with a "hint" on the entity identifier to use, it should ease combining multiple registries
* optimize for empty components, it would be a mid improvement in terms of memory usage (see std::is_empty)
* deep copy of a registry (or use the snapshot stuff to copy components and keep intact ids at least)
* is it possible to iterate all the components assigned to an entity through a common base class?
* optimize for empty components, it would be a mid improvement in terms of memory usage
* prototype should offer a way to retrieve its internal registry
* can we do more for shared libraries? who knows... see #144
* work stealing job system (see #100)
* reflection system (maybe)
* composable looper so as to pack erased systems, compose runners at different rates and run them at once in the loop
* meta: sort of meta view based on meta stuff to iterate entities, void * and meta info objects
* registry::probe<component>(entt) (returns a component * if entt has the component, nullptr otherwise)
* hashed string: add implicit check on construction for uniqueness (optional)
* add a note about multithreading support to the README file
* signals on entity creation/destruction
* flexible views with "composable" filters
* do not set BUILD_TESTING to ON by default anymore
* add https://github.com/Kerndog73/EnTT-Pacman to entt in action
1 change: 1 addition & 0 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ add_custom_target(
core.md
entity.md
locator.md
meta.md
process.md
resource.md
shared.md
Expand Down
Loading

0 comments on commit 618a325

Please sign in to comment.