]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - svvm_cmds.c
eliminated calls to Matrix4x4_CreateIdentity (now copies from the already existing...
[xonotic/darkplaces.git] / svvm_cmds.c
index 40d6c1755a5ae3f56ab4f1a08eda1a6499910bef..c178bab907c7bce6997d476526a2def700b2e183 100644 (file)
@@ -439,6 +439,9 @@ void PF_traceline (void)
        move = PRVM_G_FLOAT(OFS_PARM2);
        ent = PRVM_G_EDICT(OFS_PARM3);
 
+       if (IS_NAN(v1[0]) || IS_NAN(v1[1]) || IS_NAN(v1[2]) || IS_NAN(v2[0]) || IS_NAN(v1[2]) || IS_NAN(v2[2]))
+               PRVM_ERROR("%s: NAN errors detected in traceline('%f %f %f', '%f %f %f', %i, entity %i)\n", PRVM_NAME, v1[0], v1[1], v1[2], v2[0], v2[1], v2[2], move, PRVM_EDICT_TO_PROG(ent));
+
        trace = SV_Move (v1, vec3_origin, vec3_origin, v2, move, ent);
 
        prog->globals.server->trace_allsolid = trace.allsolid;
@@ -485,6 +488,9 @@ void PF_tracebox (void)
        move = PRVM_G_FLOAT(OFS_PARM4);
        ent = PRVM_G_EDICT(OFS_PARM5);
 
+       if (IS_NAN(v1[0]) || IS_NAN(v1[1]) || IS_NAN(v1[2]) || IS_NAN(v2[0]) || IS_NAN(v1[2]) || IS_NAN(v2[2]))
+               PRVM_ERROR("%s: NAN errors detected in tracebox('%f %f %f', '%f %f %f', '%f %f %f', '%f %f %f', %i, entity %i)\n", PRVM_NAME, v1[0], v1[1], v1[2], m1[0], m1[1], m1[2], m2[0], m2[1], m2[2], v2[0], v2[1], v2[2], move, PRVM_EDICT_TO_PROG(ent));
+
        trace = SV_Move (v1, m1, m2, v2, move, ent);
 
        prog->globals.server->trace_allsolid = trace.allsolid;
@@ -2252,7 +2258,7 @@ int SV_GetEntityLocalTagMatrix(prvm_edict_t *ent, int tagindex, matrix4x4_t *out
                        frame = 0;
                return Mod_Alias_GetTagMatrix(model, model->animscenes[frame].firstframe, tagindex, out);
        }
-       Matrix4x4_CreateIdentity(out);
+       *out = identitymatrix;
        return 0;
 }
 
@@ -2274,7 +2280,7 @@ int SV_GetTagMatrix (matrix4x4_t *out, prvm_edict_t *ent, int tagindex)
        matrix4x4_t entitymatrix, tagmatrix, attachmatrix;
        model_t *model;
 
-       Matrix4x4_CreateIdentity(out); // warnings and errors return identical matrix
+       *out = identitymatrix; // warnings and errors return identical matrix
 
        if (ent == prog->edicts)
                return 1;
@@ -2287,7 +2293,7 @@ int SV_GetTagMatrix (matrix4x4_t *out, prvm_edict_t *ent, int tagindex)
 
        model = sv.models[modelindex];
 
-       Matrix4x4_CreateIdentity(&tagmatrix);
+       tagmatrix = identitymatrix;
        // DP_GFX_QUAKE3MODELTAGS, scan all chain and stop on unattached entity
        attachloop = 0;
        for (;;)
@@ -2693,7 +2699,7 @@ NULL,                                             // #476
 NULL,                                          // #477
 NULL,                                          // #478
 NULL,                                          // #479
-e10, e10                                       // #471-499 (LordHavoc)
+e10, e10                                       // #480-499 (LordHavoc)
 };
 
 const int vm_sv_numbuiltins = sizeof(vm_sv_builtins) / sizeof(prvm_builtin_t);