X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cgamevm.c;h=3af510f0c9e854c357d68c6d172fc69f32b008a0;hp=f3250df194a551832129146ce52bd41f08b89824;hb=865b28b52f6355449fabb3e9d7be26e586ef967b;hpb=c42c24d6b75aeb95fd9a8df27364042ad68df64a diff --git a/cgamevm.c b/cgamevm.c index f3250df1..3af510f0 100644 --- a/cgamevm.c +++ b/cgamevm.c @@ -26,6 +26,11 @@ void CL_CGVM_Init(void) cgvm_mempool = Mem_AllocPool("CGVM", 0, NULL); } +void CL_CGVM_Shutdown(void) +{ + Mem_FreePool (&cgvm_mempool); +} + void CL_CGVM_Clear(void) { Mem_EmptyPool(cgvm_mempool); @@ -189,19 +194,13 @@ float CGVM_RandomRange(const float r1, const float r2) float CGVM_TracePhysics(const float *start, const float *end, const float *worldmins, const float *worldmaxs, const float *entitymins, const float *entitymaxs, const cgphysentity_t *physentities, const int numphysentities, float *impactpos, float *impactnormal, int *impactentnum) { - float frac; - vec3_t start2, end2, middle; + trace_t trace; // FIXME: do tracing agains network entities and physentities here - // placeholder world only code assuming 0 size - middle[0] = (worldmins[0] + worldmaxs[0]) * 0.5f; - middle[1] = (worldmins[1] + worldmaxs[1]) * 0.5f; - middle[2] = (worldmins[2] + worldmaxs[2]) * 0.5f; - VectorAdd(start, middle, start2); - VectorAdd(end, middle, end2); - frac = CL_TraceLine((float *)start2, (float *)end2, impactpos, impactnormal, true, NULL, SUPERCONTENTS_SOLID); - VectorSubtract(impactpos, middle, impactpos); + trace = CL_TraceBox(start, vec3_origin, vec3_origin, end, true, NULL, SUPERCONTENTS_SOLID, false); + VectorCopy(trace.endpos, impactpos); + VectorCopy(trace.plane.normal, impactnormal); *impactentnum = -1; - return frac; + return trace.fraction; } char *CGVM_GetCvarString(const char *name)