Commit graph

24 commits

Author SHA1 Message Date
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
c18ac54265 -LinearLayout proggress:
*EntityTemplate.getComponent
 *Adding/removing components for Entitites
-better code for adding components
2018-09-26 10:57:42 +02:00
cb9bac5dde -LinearLayout implemntation:
*Entity.getComponent works
 *adding/removing objects work
 *update work
2018-09-26 09:02:16 +02:00
8cb5d6ce62 -EntitesBlock freeing
-IDManager now increment counter on ID releasing (previously while creating new ID)
2018-09-20 20:33:55 +02:00
45110e236c -fixed removingComponents issue (object was transferred to another block, but count of entities in block doesn't increase)
-functions to get System by ID or ECS System by Type
-added system_id to system
-fixed issue with registering systems without update() function
2018-09-20 19:12:53 +02:00
4ad81fe116 -changes in EntityAlocator
* renamed to BlockAllocator
 * now it's template with compile time assingable block_size and block_in_allocation variables
-WIP Event management
 * probably working sendSelfEvent()
 * registerEvent()
-added win_dll.d as Windows DLL require functionality
2018-09-19 17:50:05 +02:00
cb0f56b0fb -EntityAllocator fixed issue with not initialized block pointer
-deffered adding entities
-deffered adding and removeing components
2018-09-17 14:46:30 +02:00
b3dce6560a -suport system callback: onCreate, onDestroy, onBegin, onEnd
-support for optional Components for System
-Components IDs in Systems are now stored as ushorts
2018-09-16 22:40:55 +02:00
8fdb56e840 -fixed crash on getComponent when component doesn't exist
-fixed Components ids sorting
-added deferred object removing
-new EntityManager functions: begin(), end().
2018-09-16 14:16:18 +02:00
a066a97f01 -added removeComponents() function (removing by ids array, or components types)
-sorting IDs in addComponents() and removeComponents()
2018-09-14 12:03:27 +02:00
5b2a6e9890 -added EntityBlocks allocating in blocks (no memory freeing, currently block contain 128 EntityBlocks) 2018-09-13 22:37:37 +02:00
1aa1fbf36b -support for system priority
-fixed callers system pointer update
-fixed HashMap issue
2018-09-13 22:04:43 +02:00
4b19907c03 -formatted all files with dfmt
-more messy tests
-some documentation
-some useful code moved to functions
-adding components to existing entity
-opportunity to get entity by ID
-fixed calculating deltas
-sorting IDs arrays for allocating Templates
-fixed alignment caluclation
-added compile-time checks for "component_id" member existing in component
2018-09-13 00:10:48 +02:00
d3222eefbb -some usefull functions for IDManager
-added EntityManager.removeEntity(EntityID)
-EntitiesBlock now has ID usefull for updating first_free_block in EntityInfo
2018-09-12 17:38:41 +02:00
ae53e13d42 -add systemCaller to entity only if their components matches
-System onEnable() and onDisable() callbacks
2018-09-12 15:28:10 +02:00
17551b08a5 -IDManager
-times counting for tests
2018-09-12 14:01:35 +02:00
9c5a60447c Update for all entities 2018-09-10 18:52:31 +02:00
4d35bc2a1b Support more than one bucket for given entity type 2018-09-10 18:34:40 +02:00
a61a54b43f -components and infos are now stored in hash maps
-adding entities
-Template allocating and freeing
-Deltas calulating for components in EntityType
-Updating for every EntityType and System
-Generate deltas, components list, and functions callers for Systems
2018-09-09 23:28:18 +02:00
6217aec6be -changed README
-license changed to BSD (maybe temporary)
-added configurations to dub.json
-initial ECS implementation (WIP):
	-Manager, System, Entity, Component
	-registering components
	-registering systems
	-calling update
2018-09-07 20:54:29 +02:00