#define _spawnfunc_check(fld) \
if (fieldname == #fld) continue;
+ noref bool __spawnfunc_expecting;
noref entity __spawnfunc_expect;
bool __spawnfunc_unreachable_workaround = true;
void __spawnfunc_##id(entity this); \
[[accumulate]] void spawnfunc_##id(entity this) \
{ \
- if (self == __spawnfunc_expect) \
+ if (__spawnfunc_expecting) \
{ \
/* engine call */ \
+ __spawnfunc_expecting = false; \
+ this = __spawnfunc_expect; \
__spawnfunc_expect = NULL; \
- this = self; \
} \
else \
{ \
assert(this); \
} \
- if (!this.sourceLocFile) \
+ if (!this.sourceLoc) \
{ \
- this.sourceLocFile = __FILE__; \
- this.sourceLocLine = __LINE__; \
+ this.sourceLoc = __FILE__ ":" STR(__LINE__); \
} \
if (!this.spawnfunc_checked) \
{ \
#define FIELDS_COMMON(fld) \
FIELD_SCALAR(fld, classname) \
- FIELD_SCALAR(fld, sourceLocFile) \
- FIELD_SCALAR(fld, sourceLocLine) \
+ FIELD_SCALAR(fld, sourceLoc) \
FIELD_SCALAR(fld, spawnfunc_checked) \
FIELD_VEC(fld, origin) \
/**/
FIELD_SCALAR(fld, platmovetype) \
FIELD_SCALAR(fld, race_place) \
FIELD_SCALAR(fld, radius) \
+ FIELD_SCALAR(fld, respawntimestart) \
FIELD_SCALAR(fld, respawntimejitter) \
FIELD_SCALAR(fld, respawntime) \
FIELD_SCALAR(fld, restriction) \