]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
pitch inversion in gettaginfo: also do the mod_alias check on the client
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 7 Apr 2009 05:14:38 +0000 (05:14 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 7 Apr 2009 05:14:38 +0000 (05:14 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8881 d7cf8633-e32d-0410-b094-e92efae38249

clvm_cmds.c
svvm_cmds.c

index da4832ed4b0cb87dd7c340c5b188f9c17f5c0260..3cd92468ef0b2a79b1bef41f6d64d2d2403430cb 100644 (file)
@@ -2215,6 +2215,8 @@ void CL_GetEntityMatrix (prvm_edict_t *ent, matrix4x4_t *out, qboolean viewmatri
 {
        prvm_eval_t *val;
        float scale;
+       float pitchsign;
+       dp_model_t *model;
 
        scale = 1;
        val = PRVM_EDICTFIELDVALUE(ent, prog->fieldoffsets.scale);
@@ -2225,7 +2227,12 @@ void CL_GetEntityMatrix (prvm_edict_t *ent, matrix4x4_t *out, qboolean viewmatri
        if(viewmatrix)
                Matrix4x4_CreateFromQuakeEntity(out, cl.csqc_origin[0], cl.csqc_origin[1], cl.csqc_origin[2], cl.csqc_angles[0], cl.csqc_angles[1], cl.csqc_angles[2], scale * cl_viewmodel_scale.value);
        else
-               Matrix4x4_CreateFromQuakeEntity(out, ent->fields.client->origin[0], ent->fields.client->origin[1], ent->fields.client->origin[2], -ent->fields.client->angles[0], ent->fields.client->angles[1], ent->fields.client->angles[2], scale);
+       {
+               pitchsign = 1;
+               if ((model = CL_GetModelFromEdict(ent)) && model->type == mod_alias)
+                       pitchsign = -1;
+               Matrix4x4_CreateFromQuakeEntity(out, ent->fields.client->origin[0], ent->fields.client->origin[1], ent->fields.client->origin[2], pitchsign * ent->fields.client->angles[0], ent->fields.client->angles[1], ent->fields.client->angles[2], scale);
+       }
 }
 
 
index 7243558dbb22123092a78972900c1ad3df3cdc1e..25ffe6efcc99fd814ffed9173d3d14c4c17dc414 100644 (file)
@@ -2612,7 +2612,7 @@ void SV_GetEntityMatrix (prvm_edict_t *ent, matrix4x4_t *out, qboolean viewmatri
 {
        prvm_eval_t *val;
        float scale;
-       float WTFsign;
+       float pitchsign;
        int modelindex;
        dp_model_t *model;
 
@@ -2625,7 +2625,7 @@ void SV_GetEntityMatrix (prvm_edict_t *ent, matrix4x4_t *out, qboolean viewmatri
                Matrix4x4_CreateFromQuakeEntity(out, ent->fields.server->origin[0], ent->fields.server->origin[1], ent->fields.server->origin[2] + ent->fields.server->view_ofs[2], ent->fields.server->v_angle[0], ent->fields.server->v_angle[1], ent->fields.server->v_angle[2], scale * cl_viewmodel_scale.value);
        else
        {
-               WTFsign = 1;
+               pitchsign = 1;
                if (
                        ((modelindex = (int)ent->fields.server->modelindex) >= 1 && modelindex < MAX_MODELS && (model = sv.models[(int)ent->fields.server->modelindex]))
                        ?
@@ -2637,8 +2637,8 @@ void SV_GetEntityMatrix (prvm_edict_t *ent, matrix4x4_t *out, qboolean viewmatri
                                        ((gamemode == GAME_TENEBRAE) && ((unsigned int)ent->fields.server->effects & (16 | 32)))
                                )
                )
-                       WTFsign = -1;
-               Matrix4x4_CreateFromQuakeEntity(out, ent->fields.server->origin[0], ent->fields.server->origin[1], ent->fields.server->origin[2], WTFsign * ent->fields.server->angles[0], ent->fields.server->angles[1], ent->fields.server->angles[2], scale);
+                       pitchsign = -1;
+               Matrix4x4_CreateFromQuakeEntity(out, ent->fields.server->origin[0], ent->fields.server->origin[1], ent->fields.server->origin[2], pitchsign * ent->fields.server->angles[0], ent->fields.server->angles[1], ent->fields.server->angles[2], scale);
        }
 }