diff --git a/src/game/propobj.c b/src/game/propobj.c index 604e6efc3..6b5922a6c 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -77,6 +77,10 @@ #include "textures.h" #include "types.h" #include "string.h" +#ifndef PLATFORM_N64 +#include "system.h" +#include "debugger.h" +#endif void rng2SetSeed(u32 seed); @@ -6694,6 +6698,10 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) || prop->pos.y < -20000.0f || prop->pos.y > 32000.0f || prop->pos.x < -32000.0f || prop->pos.x > 32000.0f || prop->pos.z < -32000.0f || prop->pos.z > 32000.0f) { + if (g_DebuggerActive) { + sysLogPrintf(LOG_WARNING, "DBG: prop %p (%02x) obj %p (%02x) at (%.2f, %.2f, %.2f) expired", + prop, prop->type, obj, obj->type, prop->pos.x, prop->pos.y, prop->pos.z); + } obj->hidden |= OBJHFLAG_DELETING; } @@ -10865,6 +10873,16 @@ u32 objTick(struct prop *prop) u32 padnum; struct defaultobj *newparent; + if (g_DebuggerActive) { + if (obj->type != OBJTYPE_HOVERCAR && prop->pos.y <= -20000.f) { + if ((obj->hidden & OBJHFLAG_FALLOUT) == 0) { + sysLogPrintf(LOG_WARNING, "DBG: prop %p (%02x) obj %p (%02x) at (%.2f, %.2f, %.2f) fell out of world", + prop, prop->type, obj, obj->type, prop->pos.x, prop->pos.y, prop->pos.z); + obj->hidden |= OBJHFLAG_FALLOUT; + } + } + } + if (prop->timetoregen > 0) { // Prop is taken/unavailable regenning = true; diff --git a/src/include/constants.h b/src/include/constants.h index c5a2e17cb..102e2c79c 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -3164,6 +3164,7 @@ #define OBJHFLAG_BLOCKEDPATH 0x02000000 #define OBJHFLAG_MOUNTED 0x04000000 // for hoverbike #define OBJHFLAG_GRABBED 0x08000000 +#define OBJHFLAG_FALLOUT 0x10000000 // obj->hidden2 #define OBJH2FLAG_HASOPA 0x01 // obj has opaque polygons (ie. most objects)