]> git.seodisparate.com - EntityComponentMetaSystem/log
EntityComponentMetaSystem
3 years agoAdd missing include for "array"
Stephen Seo [Tue, 7 Sep 2021 09:28:44 +0000 (18:28 +0900)]
Add missing include for "array"

3 years agoAdd .clangd specifying use of C++14
Stephen Seo [Tue, 7 Sep 2021 09:17:31 +0000 (18:17 +0900)]
Add .clangd specifying use of C++14

3 years agoMerge branch 'refactoring'
Stephen Seo [Tue, 7 Sep 2021 09:15:12 +0000 (18:15 +0900)]
Merge branch 'refactoring'

3 years agoWorkaround for gcc debug build fail
Stephen Seo [Tue, 7 Sep 2021 09:11:06 +0000 (18:11 +0900)]
Workaround for gcc debug build fail

Instead of defining temporary structs in functions, the temporary
structs are defined as part of the Manager class.

3 years agoHeavy refactorings
Stephen Seo [Tue, 7 Sep 2021 08:03:08 +0000 (17:03 +0900)]
Heavy refactorings

Use temporary structs instead of tuples.
Enforce max line width of 80 characters.
Fix warning related to ECTest.cpp .

Note that currently this commit appears to be unable to be built by GCC,
but compiles OK with Clang.

3 years agoFix failing to wait for ThreadPool to finish
Stephen Seo [Tue, 7 Sep 2021 03:24:27 +0000 (12:24 +0900)]
Fix failing to wait for ThreadPool to finish

3 years agoFix CMakeLists.txt to use FindThreads
Stephen Seo [Tue, 7 Sep 2021 03:09:02 +0000 (12:09 +0900)]
Fix CMakeLists.txt to use FindThreads

3 years agoMerge branch 'threadpool'
Stephen Seo [Tue, 7 Sep 2021 03:07:05 +0000 (12:07 +0900)]
Merge branch 'threadpool'

3 years agoUpdate documentation
Stephen Seo [Tue, 7 Sep 2021 03:04:42 +0000 (12:04 +0900)]
Update documentation

3 years agoAllow ThreadPool to be created with < 2 ThreadCount
Stephen Seo [Tue, 7 Sep 2021 02:46:38 +0000 (11:46 +0900)]
Allow ThreadPool to be created with < 2 ThreadCount

3 years agoAdd isQueueEmpty() to ThreadPool
Stephen Seo [Tue, 7 Sep 2021 02:29:06 +0000 (11:29 +0900)]
Add isQueueEmpty() to ThreadPool

3 years agoTweak sleep times for threadpool to finish
Stephen Seo [Mon, 6 Sep 2021 12:01:01 +0000 (21:01 +0900)]
Tweak sleep times for threadpool to finish

Remove debug print

3 years agoUsage of ThreadPool fixes
Stephen Seo [Mon, 6 Sep 2021 11:57:13 +0000 (20:57 +0900)]
Usage of ThreadPool fixes

3 years agoWIP convert Manager to use ThreadPool
Stephen Seo [Mon, 6 Sep 2021 10:52:23 +0000 (19:52 +0900)]
WIP convert Manager to use ThreadPool

valgrind seems to report memory issues, and documentation may need more
updating.

3 years agoImpl ThreadPool
Stephen Seo [Mon, 6 Sep 2021 06:54:24 +0000 (15:54 +0900)]
Impl ThreadPool

3 years agoAdd UnitTest for previously fixed bug
Stephen Seo [Mon, 17 May 2021 03:34:12 +0000 (12:34 +0900)]
Add UnitTest for previously fixed bug

3 years agoUpdate LICENSE year
Stephen Seo [Sun, 16 May 2021 11:08:06 +0000 (20:08 +0900)]
Update LICENSE year

3 years agoFix bug using callForMatchingFunction(s)
Stephen Seo [Sun, 16 May 2021 11:07:14 +0000 (20:07 +0900)]
Fix bug using callForMatchingFunction(s)

Fixed bug where invalid entity ids were used when using the
callForMatchingFunction(s) functions.

5 years agoUpdate LICENSE year
Stephen Seo [Wed, 6 Nov 2019 07:44:28 +0000 (16:44 +0900)]
Update LICENSE year

5 years agoAdd forMatchingSimple, refactorings
Stephen Seo [Wed, 6 Nov 2019 07:33:12 +0000 (16:33 +0900)]
Add forMatchingSimple, refactorings

5 years agoReplace vector with deque for Component storage
Stephen Seo [Wed, 6 Nov 2019 06:47:16 +0000 (15:47 +0900)]
Replace vector with deque for Component storage

When reallocating more data, vector moves the original data to a new
buffer. Deque preserves the location of the original data, preventing
invalidated pointers to existing data when additional allocation is
required.

5 years agoAdd fn to Manager allowing iterable indices as sig
Stephen Seo [Thu, 11 Jul 2019 12:11:03 +0000 (21:11 +0900)]
Add fn to Manager allowing iterable indices as sig

As an alternative to forMatchingSignatures, which calls the given
function on entities matching the given Components/Tags in the
signature, forMatchingIterable allows filtering entities by an iterable
of indices that corresponds to Components/Tags.

5 years agoMinor whitespace fixes, minor .gitignore change
Stephen Seo [Thu, 11 Jul 2019 10:47:39 +0000 (19:47 +0900)]
Minor whitespace fixes, minor .gitignore change

6 years agoFix stored functions not being called in order
Stephen Seo [Thu, 22 Nov 2018 05:28:31 +0000 (14:28 +0900)]
Fix stored functions not being called in order

Manager::callForMatchingFunctions should now call all functions in the
order they were added.

6 years agoAdd static_assert, components must be def-const
Stephen Seo [Tue, 11 Sep 2018 03:16:04 +0000 (12:16 +0900)]
Add static_assert, components must be def-const

EC::Manager will fail to compile if any given Component is not default
constructible, so a static_assert and ctest was added.

6 years agoAPI change: context/userdata provided to functions
Stephen Seo [Wed, 8 Aug 2018 07:52:12 +0000 (16:52 +0900)]
API change: context/userdata provided to functions

All functions called by EC/Manager now accept an additional parameter
as a void* to support user-provided data (or context) for functions
(useful when the function is not a lambda function and doesn't have any
other data stored with it).

6 years agoFix C++14 requirement in CMakeLists.txt
Stephen Seo [Mon, 21 May 2018 10:23:25 +0000 (19:23 +0900)]
Fix C++14 requirement in CMakeLists.txt

6 years agoUpdate README.md
Stephen Seo [Mon, 21 May 2018 07:49:37 +0000 (16:49 +0900)]
Update README.md

6 years agoUpdate LICENSE year
Stephen Seo [Mon, 21 May 2018 07:46:31 +0000 (16:46 +0900)]
Update LICENSE year

6 years agoMinor fixes/improvements
Stephen Seo [Sat, 19 May 2018 07:09:31 +0000 (16:09 +0900)]
Minor fixes/improvements

6 years agoUpdate documentation
Stephen Seo [Fri, 18 May 2018 11:47:34 +0000 (20:47 +0900)]
Update documentation

6 years agoAdd ability to handle unknown types
Stephen Seo [Thu, 17 May 2018 08:05:49 +0000 (17:05 +0900)]
Add ability to handle unknown types

EC/Manager and EC/Bitset can now handle types that are not known
(Components or Tags not in the given Components or Tags when created).

Manager::getEntityData now returns a pointer instead of a reference.
Functions passed to Manager::forMatchingFunction (and other similar fns)
should now accept Component fields as pointer types, not reference
types.

6 years agoFix warning about unused capture for lambda fn
Stephen Seo [Wed, 16 May 2018 07:18:11 +0000 (16:18 +0900)]
Fix warning about unused capture for lambda fn

6 years agoAdd type reference to Components/Tags in Manager
Stephen Seo [Wed, 16 May 2018 05:48:33 +0000 (14:48 +0900)]
Add type reference to Components/Tags in Manager

7 years agoFix bug with multiple sig/func call
Stephen Seo [Fri, 1 Dec 2017 10:20:59 +0000 (19:20 +0900)]
Fix bug with multiple sig/func call

Fixed bug where if an entity is deleted during a multiple
signature/function call but matched a later signature/function, it would
still be called in that later function.

Minor fixes as well.

7 years agoRemove .gitlab-ci.yml
Stephen Seo [Fri, 1 Dec 2017 05:03:47 +0000 (14:03 +0900)]
Remove .gitlab-ci.yml

7 years agoReplace garbage-collection-like cleanup
Stephen Seo [Fri, 1 Dec 2017 05:00:49 +0000 (14:00 +0900)]
Replace garbage-collection-like cleanup

Entity IDs are now guaranteed to not change for a living entity.
Cleanup is replaced by using a std::unordered_set to store deleted
Entity IDs to be reclaimed on later calls to addEntity().

7 years agoMinor fixes to documentation
Stephen Seo [Fri, 24 Nov 2017 06:06:57 +0000 (15:06 +0900)]
Minor fixes to documentation

7 years agoChange CleanupReturnType to std::vector
Stephen Seo [Fri, 24 Nov 2017 05:58:00 +0000 (14:58 +0900)]
Change CleanupReturnType to std::vector

7 years agoFix bug with duplicate signatures
Stephen Seo [Wed, 15 Nov 2017 06:36:04 +0000 (15:36 +0900)]
Fix bug with duplicate signatures

Fixed bug where if forMatchingSignatures and forMatchingSignaturesPtr
was called with some signatures in the TypeList being duplicates, then
only the first duplicate and function pair would be called, and all
other functions paired with other duplicate signatures would not be
called.

7 years agoImprove efficiency of stored function calling
Stephen Seo [Tue, 14 Nov 2017 04:51:24 +0000 (13:51 +0900)]
Improve efficiency of stored function calling

Previously, every called function iterated through all entities for
calling the function on matching entities.

Now, callForMatchingFunctions iterates through all entities once,
stores matching entities for each function, then calls the functions on
the matching entities.

7 years agoAdd ptr versions of forMatchingSignature fns
Stephen Seo [Tue, 14 Nov 2017 04:11:32 +0000 (13:11 +0900)]
Add ptr versions of forMatchingSignature fns

7 years agoFix crash bug, improve Unit Test
Stephen Seo [Fri, 10 Nov 2017 04:19:50 +0000 (13:19 +0900)]
Fix crash bug, improve Unit Test

Crash bug from improperly implemented std::lock_guard for multi-threaded
usage of forMatchingSignatures fixed.

7 years agoImplement forMatchingSignatures for efficiency
Stephen Seo [Thu, 9 Nov 2017 12:10:01 +0000 (21:10 +0900)]
Implement forMatchingSignatures for efficiency

EC::Manager::forMatchingSignatures is different from
EC::Manager::forMatchingSignature in that it takes multiple signatures
and functions and iterates through all entities once. The trade-off is
that a vector of vectors is created to store matching entities.
This function can be called to use multiple threads as well, similar
to the "non-plural" version of this function.

See the doxygen-style documentation in src/EC/Manager.hpp for
forMatchingSignatures (or the generated doxygen html) for how to use.
Usage example is in the last unit test function in src/test/ECTest.hpp .

7 years agoAdd getCurrentSize and getCurrentCapacity
Stephen Seo [Fri, 3 Nov 2017 08:11:20 +0000 (17:11 +0900)]
Add getCurrentSize and getCurrentCapacity

7 years agoFix minor typo
Stephen Seo [Tue, 31 Oct 2017 05:10:21 +0000 (14:10 +0900)]
Fix minor typo

7 years agoFix cleanup function's return value
Stephen Seo [Tue, 31 Oct 2017 04:25:27 +0000 (13:25 +0900)]
Fix cleanup function's return value

Unordered map does not preserve order in which items were inserted.
This is a problem because an entity id relocated to a previously deleted
one could be read as deleted when iterating through the unordered map.
Thus, it has been replaced with a queue.

7 years agoFix unit test
Stephen Seo [Fri, 6 Oct 2017 05:35:37 +0000 (14:35 +0900)]
Fix unit test

7 years agoReplace variable length arrays with std::vector
Stephen Seo [Fri, 6 Oct 2017 03:58:49 +0000 (12:58 +0900)]
Replace variable length arrays with std::vector

7 years agoImplement multithreading for function calls
Stephen Seo [Fri, 6 Oct 2017 03:47:05 +0000 (12:47 +0900)]
Implement multithreading for function calls

Each of the EC::Manager's function calls over entities can now be
multi-threaded.

7 years agoAdd feature to cleanup function in manager
Stephen Seo [Thu, 28 Sep 2017 07:05:05 +0000 (16:05 +0900)]
Add feature to cleanup function in manager

ECManager's cleanup function now returns a map detailing info on all
entities changed by cleanup.

7 years agoAdd const fns to Manager, obey 80 char line limit
Stephen Seo [Wed, 20 Sep 2017 08:16:26 +0000 (17:16 +0900)]
Add const fns to Manager, obey 80 char line limit

7 years agoAdd a test to unit tests
Stephen Seo [Tue, 29 Aug 2017 06:27:58 +0000 (15:27 +0900)]
Add a test to unit tests

7 years agoFixed keepSomeMatchingFunctions
Stephen Seo [Thu, 13 Jul 2017 08:28:45 +0000 (17:28 +0900)]
Fixed keepSomeMatchingFunctions

Previous implementation would fail if functionIndex had wrapped around

7 years agoChanged clearSomeMatchingFunctions, line lengths
Stephen Seo [Thu, 13 Jul 2017 07:13:37 +0000 (16:13 +0900)]
Changed clearSomeMatchingFunctions, line lengths

clearSomeMatchingFunctions removed for
keepSomeMatchingFunctions and removeSomeMatchingFunctions to
avoid confusion.

Lines now respect 80 column limit.

7 years agoAdded two new functions
Stephen Seo [Wed, 12 Jul 2017 13:02:02 +0000 (22:02 +0900)]
Added two new functions

Added "removeForMatchingFunction" and "callForMatchingFunction".
The former deletes a specific function and the latter calls a specific
function.

7 years agoUpdated README.md
Stephen Seo [Sat, 10 Jun 2017 13:17:37 +0000 (22:17 +0900)]
Updated README.md

7 years agoUpdated README.md
Stephen Seo [Sat, 10 Jun 2017 13:16:55 +0000 (22:16 +0900)]
Updated README.md

7 years agoAdded readme
Stephen Seo [Sat, 10 Jun 2017 13:15:59 +0000 (22:15 +0900)]
Added readme

8 years agoChanged implementation of stored functions to map
Stephen Seo [Wed, 21 Sep 2016 12:01:48 +0000 (21:01 +0900)]
Changed implementation of stored functions to map

An unordered_map stores functions, allowing for functions to be
removed by index, and bulk removals with filtering by index.

Also added reset(), which changes the state of the Manager to be
almost identical to a newly constructed one.

8 years agoFixed docs, ids changed to const references
Stephen Seo [Tue, 20 Sep 2016 11:31:56 +0000 (20:31 +0900)]
Fixed docs, ids changed to const references

8 years agoAdded capability to store functions
Stephen Seo [Tue, 20 Sep 2016 11:07:28 +0000 (20:07 +0900)]
Added capability to store functions

EC::Manager can now store functions similar to functions
given to EC::Manager::forMatchingSignature.

8 years agoFixed bug where deleted entities retain info
Stephen Seo [Tue, 30 Aug 2016 08:34:34 +0000 (17:34 +0900)]
Fixed bug where deleted entities retain info

8 years agoTemporary(?) bugfix
Stephen Seo [Sun, 28 Aug 2016 07:11:23 +0000 (16:11 +0900)]
Temporary(?) bugfix

8 years agoFixed not working as cmake subproject
Stephen Seo [Sat, 27 Aug 2016 04:32:32 +0000 (13:32 +0900)]
Fixed not working as cmake subproject

9 years agoFixed missing include
Stephen Seo [Wed, 20 Apr 2016 13:18:25 +0000 (22:18 +0900)]
Fixed missing include

9 years agoAdded missing includes
Stephen Seo [Wed, 20 Apr 2016 12:59:47 +0000 (21:59 +0900)]
Added missing includes

9 years agoFixed include gtest on nonstanndard gtest install
Stephen Seo [Mon, 11 Apr 2016 05:59:56 +0000 (14:59 +0900)]
Fixed include gtest on nonstanndard gtest install

9 years agoAdded note about manager's addComponent
Stephen Seo [Wed, 6 Apr 2016 10:35:24 +0000 (19:35 +0900)]
Added note about manager's addComponent

AddComponent overwrites an already existing component
if it exists.

9 years agoAdded support for components of type UniquePtr
Stephen Seo [Wed, 6 Apr 2016 10:32:30 +0000 (19:32 +0900)]
Added support for components of type UniquePtr

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 16:05:43 +0000 (01:05 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:59:30 +0000 (00:59 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:53:40 +0000 (00:53 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:47:04 +0000 (00:47 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:38:32 +0000 (00:38 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:32:13 +0000 (00:32 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:27:21 +0000 (00:27 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:23:36 +0000 (00:23 +0900)]
Updated .gitlab-ci.yml

9 years agoUpdated .gitlab-ci.yml
Stephen Seo [Fri, 18 Mar 2016 15:14:55 +0000 (00:14 +0900)]
Updated .gitlab-ci.yml

9 years agoadded .gitlab-ci.yml
Stephen Seo [Thu, 17 Mar 2016 08:43:31 +0000 (17:43 +0900)]
added .gitlab-ci.yml

9 years agoAdded License and legal related requirements
Stephen Seo [Tue, 15 Mar 2016 10:29:13 +0000 (19:29 +0900)]
Added License and legal related requirements

All source files in src/EC now has some text describing
attribution notice to the original work this work derives from.

9 years agoSlight change to docs
Stephen Seo [Mon, 14 Mar 2016 11:39:09 +0000 (20:39 +0900)]
Slight change to docs

9 years agoSlight change to unit tests, docs
Stephen Seo [Mon, 14 Mar 2016 11:36:05 +0000 (20:36 +0900)]
Slight change to unit tests, docs

Unit test now creates Component with
Manager::addComponent.

9 years agoSlight addition to EC::Manager documentation
Stephen Seo [Mon, 14 Mar 2016 11:09:51 +0000 (20:09 +0900)]
Slight addition to EC::Manager documentation

9 years agoFix to EC::Manager::cleanup
Stephen Seo [Mon, 14 Mar 2016 11:05:49 +0000 (20:05 +0900)]
Fix to EC::Manager::cleanup

9 years agoAdded Doxygen comments
Stephen Seo [Mon, 14 Mar 2016 11:01:55 +0000 (20:01 +0900)]
Added Doxygen comments

Slight change to EC::Manager::isAlive

9 years agoMinor fixes/changes
Stephen Seo [Mon, 14 Mar 2016 09:25:38 +0000 (18:25 +0900)]
Minor fixes/changes

9 years agoMinor fixes/changes
Stephen Seo [Mon, 14 Mar 2016 09:16:09 +0000 (18:16 +0900)]
Minor fixes/changes

9 years agoMade some Meta stuff more generic
Stephen Seo [Mon, 14 Mar 2016 08:53:57 +0000 (17:53 +0900)]
Made some Meta stuff more generic

9 years agoFixed entity deletion bug
Stephen Seo [Mon, 14 Mar 2016 02:39:37 +0000 (11:39 +0900)]
Fixed entity deletion bug

Fixed bug where deleted entity would retain Components/Tags.

9 years agoFix to Meta/Matching
Stephen Seo [Sun, 13 Mar 2016 09:17:06 +0000 (18:17 +0900)]
Fix to Meta/Matching

9 years agoAdded Meta/Matching, progress on Bitset/Manager
Stephen Seo [Sun, 13 Mar 2016 09:07:49 +0000 (18:07 +0900)]
Added Meta/Matching, progress on Bitset/Manager

9 years agoAdded forEach to EC/Meta
Stephen Seo [Sun, 13 Mar 2016 05:06:57 +0000 (14:06 +0900)]
Added forEach to EC/Meta

9 years agoFixed 'make install'
Stephen Seo [Tue, 8 Mar 2016 13:59:17 +0000 (22:59 +0900)]
Fixed 'make install'

9 years agoAdded EC/Meta/TypeListGet, WIP in Bitset, Manager
Stephen Seo [Sat, 5 Mar 2016 14:33:24 +0000 (23:33 +0900)]
Added EC/Meta/TypeListGet, WIP in Bitset, Manager

TODO, get a ForEach type recursion working for Bitset.

9 years agoFixed support for Clang
Stephen Seo [Sat, 5 Mar 2016 11:16:32 +0000 (20:16 +0900)]
Fixed support for Clang

Minor addition to unit tests.

9 years agoAdded EC/Meta/Morph.hpp
Stephen Seo [Fri, 4 Mar 2016 13:59:43 +0000 (22:59 +0900)]
Added EC/Meta/Morph.hpp

Started work on EC/Manager.hpp

9 years agoUpdated CMakeLists.txt to include EC/Meta/Combine
Stephen Seo [Fri, 4 Mar 2016 12:43:46 +0000 (21:43 +0900)]
Updated CMakeLists.txt to include EC/Meta/Combine

9 years agoChanged Bitset to use Combined lists
Stephen Seo [Fri, 4 Mar 2016 12:39:25 +0000 (21:39 +0900)]
Changed Bitset to use Combined lists

9 years agoAdded EC/Meta/Combine.hpp
Stephen Seo [Fri, 4 Mar 2016 12:35:26 +0000 (21:35 +0900)]
Added EC/Meta/Combine.hpp

Also some renaming in MetaTest.hpp