Commit Graph

195 Commits

Author SHA1 Message Date
Michele Caini
faceff620a exclude is now a variable template 2019-02-08 17:20:21 +01:00
Michele Caini
45fdab27c9 meta_any: fixed #180 2019-02-01 23:48:00 +01:00
Michele Caini
7f1abab9ae bug fixing (find on views) 2019-01-29 09:00:34 +01:00
corystegel
9f997fe1fa Fix sparse_set invalid state when component constructor throws (#176)
Fix sparse_set invalid state when component constructor throws

Previously, a component's constructor that throws would cause the sparse
set to think that the entity still exists in the set. This is because the underlying
sparse set that stores the entities will have its entry added before the component
is added to the component set.

This could cause a number of invalid memory access problems such as the following:

1) Exception triggers destructor of enclosing object that then tries to remove
   the component that was just added. SparseSet<entity_t, Component>::has() will
   return true for the entity but when destroy() is called "instances" will be empty
   so instances.back() will be invalid.

2) If the exception is handled then calling get(entity) for the same entity
   identifier that initially threw the exception will give a position for that
   entity even though it was not added. This can cause an invalid memory access
   or accessing the data of a different stored component.
2019-01-25 22:36:30 +01:00
Michele Caini
f558126854 fixed typo + added tests (thanks to Kerndog73) 2019-01-24 08:36:55 +01:00
Michele Caini
fe3f6aa22b signal: review 2019-01-23 15:42:29 +01:00
Michele Caini
4b1d3a7b6f allow for null entity members (#174) 2019-01-13 22:28:40 +01:00
Michele Caini
c91f9beddb removed raw view + added extended each member function to all the other views 2019-01-04 10:44:27 +01:00
Michele Caini
3c9a6ad218 delegate: curried functions can accept linked parameters either by value or by reference 2019-01-01 15:01:13 +01:00
Michele Caini
76eab21738 appveyor runs the tests now 2018-12-29 00:57:23 +01:00
Michele Caini
d119032cb9 added support for extra arguments to dispatcher 2018-12-28 16:10:09 +01:00
Michele Caini
d32c8e9457 empty type optimization 2018-12-26 14:50:30 +01:00
Michele Caini
ebb2974ca7 added exclude alias for type_list 2018-12-21 16:23:23 +01:00
Michele Caini
d9de7fe3b0 more tests 2018-12-19 15:26:21 +01:00
Michele Caini
24ba692884 delegate: support for curried functions 2018-12-19 14:18:59 +01:00
Michele Caini
960bbbde29 more on registry::clone (close #161) 2018-12-17 21:39:30 +01:00
Michele Caini
8212ed6d87 monostate: helper template variable 2018-12-16 13:49:13 +01:00
Michele Caini
c639cb5285 added hashed_string::to_value for direct computation 2018-12-16 13:49:09 +01:00
Michele Caini
b053f23d15 registry::clone supports type list now (close #165) 2018-12-14 22:24:52 +01:00
Michele Caini
cb9a147fff clone functionality (close #161) 2018-12-13 08:55:43 +01:00
Michele Caini
c9fddedbf1 UB/Crash in entt::insertion_sort (#167) 2018-12-11 14:17:39 +01:00
Michele Caini
73e5a9f45b support for filtered persistent views 2018-12-09 13:50:41 +01:00
Michele Caini
52b36f38a0 delegate: a few more tests 2018-11-30 11:52:39 +01:00
Michele Caini
781f283c89 utility: as_view (resolve #157) 2018-11-29 11:49:15 +01:00
Michele Caini
7e3abb27a4 added find functionality to sparse sets/views 2018-11-28 10:47:09 +01:00
Michele Caini
f0c11daa37 cleanup 2018-11-27 23:44:40 +01:00
Michele Caini
167c174f4d added support for const instances * to the delegate 2018-11-27 23:16:55 +01:00
Michele Caini
2a4e098645 persistent views are now more reliable (fix #160) 2018-11-23 09:40:42 +01:00
Michele Caini
c13fe3feb6 views: const, non-const and all in between (fix #152) 2018-11-20 14:45:28 +01:00
Michele Caini
0ced60e712 added get overload with default value to registry (#152) 2018-11-19 16:08:26 +01:00
Michele Caini
d0764d5854 accommodate => assign_or_replace (#153) 2018-11-19 14:14:01 +01:00
Michele Caini
f7905e3bc2 get_if => try_get (#153) 2018-11-19 14:00:22 +01:00
Michele Caini
8f9934a7f4 boost persistent views (around 100x) 2018-11-12 23:13:23 +01:00
Michele Caini
fe519b3acf (maybe) suppress error on vs2017 2018-10-31 22:34:27 +01:00
Michele Caini
66e7141415 meta: support for setters/getters 2018-10-31 17:39:40 +01:00
Michele Caini
6f0cdc864f added registry::create overload to create multiple entities at once 2018-10-30 15:14:57 +01:00
Michele Caini
5859a18b3a added get_if where possible 2018-10-27 13:45:51 +02:00
Michele Caini
78f2267b06 delegate: deduction guidelines 2018-10-22 15:32:18 +02:00
Michele Caini
0a34f22240 dispatcher: allow for deduced types for events 2018-10-21 22:48:06 +02:00
Michele Caini
b0651fcaed delegate: empty -> operator bool 2018-10-21 14:59:24 +02:00
Michele Caini
6a3bc37dc1 minor changes 2018-10-19 22:54:11 +02:00
Michele Caini
2ea7796b26 coverage purposes 2018-10-17 09:58:40 +02:00
Michele Caini
cf0057bac4 coverage purposes 2018-10-17 09:25:23 +02:00
Michele Caini
a86ba1fdf6 a few changes to the meta system 2018-10-15 15:29:40 +02:00
Michele Caini
6010f5b7a6 meta: final review 2018-10-12 16:18:51 +02:00
Michele Caini
9c164e1cea meta: full support for constant values and enums 2018-10-12 00:09:58 +02:00
Michele Caini
17d57ee49a value types and meta objects 2018-10-10 08:42:41 +02:00
Michele Caini
618a325057 reflection system 2018-10-05 13:38:22 +02:00
Michele Caini
d81cb7f866 EnTT v3 (draft) 2018-09-30 14:04:39 +02:00
Michele Caini
2d945e426b fixed #133 2018-08-29 23:10:03 +02:00