Commit graph

136 commits

Author SHA1 Message Date
b0760228b1 -changed assertion infos 2019-04-06 18:03:14 +00:00
71c7df2ab3 -added third mmcomando commit 2019-04-06 17:51:42 +00:00
eaf2d1581c -removed next two mixins:
*catchFunc
*catchEntityFunc
2019-04-06 16:28:59 +00:00
f39d5ab403 -removed next mixin genParamsChecking() 2019-04-06 15:30:49 +00:00
fd6e6c0355 -changed naming style to match whole project 2019-04-06 15:11:44 +00:00
bf8fac84cf -removed comments 2019-04-06 15:03:29 +00:00
e7d3d08feb -fixed mmcomando commit bug 2019-04-06 15:02:07 +00:00
be5de2ae9c -added second mmcommando commit
-removed some stupid feature
2019-04-06 14:47:33 +00:00
dbdbdb35e1 -added assert message 2019-04-06 14:36:50 +00:00
7e7658af3b -added first mmcommando commit 2019-04-06 14:24:31 +00:00
77f67004dd -removed string_intern
-removed unused traits
2019-04-06 14:15:02 +00:00
201681e4ca -fixed small issue, now Template.getComponent should return null if component doesn't exist in template 2019-04-04 17:54:39 +02:00
0608fe6e89 -added new listener callback: onChangeEntity. Callback is called when entity optional components are changed. There is no info about which components are changed (added/removed), but should be in the future).This is probably slowest callback. 2019-03-28 20:25:08 +01:00
7a33e4f94f -renamed callbacks:
*onAdd -> onAddEntity
*onRemove -> onRemoveEntity
*update -> onUpdate
2019-03-28 18:01:43 +01:00
d118adc028 -code foramtted with dfmt 2019-03-28 17:57:28 +01:00
280d7b8ec4 -onAdd/onRemove order is determined by system priority
-fixed many bug with onAdd/onRemove
-onAdd/onRemove now works even when system haven't update callback
2019-03-28 12:19:30 +01:00
c64d621f0e -fixed critical bug with onAdd callback 2019-03-26 13:13:32 +00:00
4ac80d7025 -onAdd/onRemove called when components are changed 2019-03-24 14:42:21 +00:00
e4be23ee96 -onRemove() called when entity is removed from EntityManager 2019-03-23 21:47:39 +00:00
1841c9c244 -working onAdd listener when new Entity is added to EntityManager 2019-03-23 20:34:50 +00:00
3aad89fc56 -fillInputData created as local function in register process
-call onAdd (WIP)
2019-03-23 20:18:26 +00:00
6bbc8b5152 -git now should ignore .dub/dub.json
-added onAdd/onRemove to test
-added onAdd/onRemove callbacks for system
-generating onAdd/onRemove listeners
2019-03-23 19:48:24 +00:00
a82ca1e659 -some documentation changes
-added Component onCreate callback which is called after allocating entity from template
2019-03-21 13:19:03 +01:00
b18440e9bc -fixed problems with new DMD 2019-01-16 13:51:28 +01:00
dec0582398 -removed some unittest and unused code 2018-11-07 19:53:33 +01:00
204ce9dc79 -almost every funtion is marked as @nogc and nothrow (only problem with HashMap) 2018-11-02 16:36:38 +01:00
fef55bd790 -removed imports (temporarly) 2018-11-02 15:52:35 +01:00
60f720151e -changed .gitignore
-imports temporarly removed from repo
2018-11-02 15:47:50 +01:00
3bc5ff2423 -changes in gitignore
-changed "absent" to "excluded" everywhere
-added Events support:
 *systems are scanned by handleEvent() function
 *generate system callers for events
 *event sending have (untested) multithreaded support
 *EventInput structure in System has input components for event
2018-11-02 15:39:46 +01:00
16a5696840 -removed UpdateBySystems version switch (it's now default behaviour)
-beginRegister() and endRegister() was added (every register functions must be called between this calls, update calls can't be called there)
-SystemCallers and Systems dependecies is rebuild always in endRegister();
-beginRegister() clear all SystemCallers and Systems dependencies
-possibility to get System ID and execution state
-JobGroup has now pointer to it's parent (SystemCaller)
-SystemCaller clean up destructor
2018-10-27 17:34:27 +02:00
f666dfd1d5 -onBegin() return type was changed from void to bool
-disabling system execution in onBegin() funciton
2018-10-26 17:43:51 +02:00
d3f7593afc -BlockAllocator is no longer template
-Multithreaded IDManager.getNewID()
 *use implementation with free IDs stack (instead of classic pool)
-support for multiple UpdatePasses. Passes are added by name, and must be called between begin() end() functions.
-removed mutex from addEntity()
-commit() function added. Used to commit all changes made while update() call. Called automatically by begin() end() functions.
2018-10-25 11:46:08 +02:00
430ce8074c -multithreading jobs dependencies:
*system has arrays of read only and modified components
 *new attribute "readonly" usable for variables which should be visible as read only. Const can be used instead for enable checks by compiler.
 *JobGroup was added. JobGroup contain array of jobs and array of dependencies (JobGroups)
 *new function generateDependencies() generate exclusion between systems, and then generate dependencies for SystemCallers and JobGroups
-fixed issue with jobs generating (empty blocks with only newly added entities was used, and led to crash)
-fixed small typo mistake
2018-10-20 11:42:29 +02:00
2824bdb55b -multithreaded addEntity(). Works good, but:
*IDManager has mutex (no multithreaded support)
 *allocating blocks has mutex (probably it's possible to do diffrent mutex for diffrent EntityInfo)
-addEntity() if slightly better optimized
2018-10-15 22:25:28 +02:00
6e2c00f608 -formatted with dfmt
-cleaned up code
2018-10-14 18:39:48 +02:00
5dd24b6462 -Systems, Components and Events now must have proper mixin. Mixins are located in ecs.core module. (i.e. mixin ECS.Component)
-Multithreading support:
 *multithreaded update - updateMT(), function generates jobs to execute
 *added dispatch callback function to dispatch generated jobs (setJobDispachFunc)
 *added getID callback for get thread ID by EntityManager
-added Job structure. Job has one function "execute()".
-calling partial info update (required to multithreading)
-multithreaded removeEntity, addCompoenents, removeComponents. Every thread has own data and remove/change lists.
-multithreaded addEntity (WIP)
-fixed issue with duplicating components
-simpler and faster "findBlockWithFreeSpace" function
-CallDataAllocator, allocator for CallDatas (used for Jobs)
-fixed some bugs/issues
2018-10-14 17:00:53 +02:00
3a767babc0 -call update by Systems instead of EntityTypes (version UpdateBySystems)
-memory packing (every block in EntityType except last one are always full)
2018-10-10 18:35:20 +02:00
fddfc78ec1 -removed system components sorting due to fact that it's make an issue
-workaround for DMD phobos issues
2018-10-02 15:36:00 +02:00
2004909642 -sorting components ids in systems
-changed callUpdate() prototype
2018-10-01 22:11:27 +02:00
437c672478 -documentation 2018-10-01 19:40:24 +02:00
288ad4c6cd -removed unused CallData.deltas member 2018-10-01 17:29:43 +02:00
e4573f1ec7 -better compile time code generation
-support for AbsenComponents. Absen components can't exist in entity which are
	used by system. There are three possibilities to add absen component. Add
	'@absen' property to EntitiesData mebmer, create AbsenComponents enum with fields
	names corresponding to components names, or create AbsenComponents AliasSeq
	with strings expressions corresponding to components names.
2018-10-01 17:17:40 +02:00
125c9e7d40 -support for 'length' parameter in EntitiesData (for convenience) 2018-10-01 15:08:14 +02:00
0e13fafefd -removed 'InputStruct' version switch (now it's default behaviour)
-checking if System struct has valid update(EntitiesData) prototype
2018-10-01 13:17:31 +02:00
d5780a6252 -working update() with EntitiesData structure input
-added support for 'const' components input (read only, future usage)
2018-09-30 23:12:20 +02:00
ed589bbd71 -added absen components list to system
-added ECS uda attributes
-added InputStruct version switch (gets update() input as structure of arrays)
-initial (WIP) EntitiesData update() input structure compile time parsing
2018-09-29 23:10:31 +02:00
8468335b50 Merge branch 'master' of https://Mergul@bitbucket.org/mmcomando/ecs.git 2018-09-29 20:54:15 +02:00
ef17f5595a Merged linear-layout into master 2018-09-29 20:51:15 +02:00
275699da90 -removed unnecessary executable file 2018-09-29 20:50:36 +02:00
bb3f07ac70 -removed LinearLayout switch (from now it's default behaviour) 2018-09-29 20:49:07 +02:00