X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cgamevm.c;h=666afd845be727db5cb445a80064d5252f89aa4b;hp=ed2bc411c96d21c5cb2b8e5b0baf99a8da0c6876;hb=63b71af98eaf4eb802fc828896e8a0e939761b0a;hpb=c10cd5ef15e3211797e91900f6ada528faa93e92 diff --git a/cgamevm.c b/cgamevm.c index ed2bc411..666afd84 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); @@ -169,7 +174,7 @@ void CGVM_Draw_Light(const cgdrawlight_t *l) { matrix4x4_t matrix; Matrix4x4_CreateTranslate(&matrix, l->origin[0], l->origin[1], l->origin[2]); - CL_AllocDlight(NULL, &matrix, l->radius, l->color[0], l->color[1], l->color[2], 0, 0, 0, 0, true, 1, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); + CL_AllocDlight(NULL, &matrix, l->radius, l->color[0], l->color[1], l->color[2], 0, 0, 0, -1, true, 1, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); } void *CGVM_Malloc(const int size) @@ -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) @@ -254,7 +253,7 @@ int CGVM_Model(const char *name) } if (i >= MAX_CGVM_MODELS) return 0; - model = Mod_ForName((char *)name, false, false, false); + model = Mod_ForName(name, false, false, false); if (!model) return 0; strcpy(cgvm_modelname[i], name);