X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=clvm_cmds.c;h=ce253af6852530d0ea50b96248585e60abd80af1;hb=73e441dcaf8470073e3b48755c15085790f2abed;hp=bbb29e248a5a34ce2662de30c95c58ffd8fe8e1a;hpb=420be816bba26e6457f6c6001f0ceba564e889f0;p=xonotic%2Fdarkplaces.git diff --git a/clvm_cmds.c b/clvm_cmds.c index bbb29e24..ce253af6 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -1705,14 +1705,14 @@ static void VM_CL_ReadPicture (prvm_prog_t *prog) const char *name; unsigned char *data; unsigned char *buf; - int size; + unsigned short size; int i; cachepic_t *pic; VM_SAFEPARMCOUNT(0, VM_CL_ReadPicture); name = MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)); - size = MSG_ReadShort(&cl_message); + size = (unsigned short) MSG_ReadShort(&cl_message); // check if a texture of that name exists // if yes, it is used and the data is discarded @@ -3429,7 +3429,7 @@ void VM_CL_AddPolygonsToMeshQueue (prvm_prog_t *prog) for (i = 0;i < polys->num_triangles;i++) { VectorMAMAM(1.0f / 3.0f, polys->data_vertex3f + 3*polys->data_triangles[i].elements[0], 1.0f / 3.0f, polys->data_vertex3f + 3*polys->data_triangles[i].elements[1], 1.0f / 3.0f, polys->data_vertex3f + 3*polys->data_triangles[i].elements[2], center); - R_MeshQueue_AddTransparent(MESHQUEUE_SORT_DISTANCE, center, VM_DrawPolygonCallback, (entity_render_t *)polys, i, NULL); + R_MeshQueue_AddTransparent(TRANSPARENTSORT_DISTANCE, center, VM_DrawPolygonCallback, (entity_render_t *)polys, i, NULL); } /*polys->num_triangles = 0; // now done after rendering the scene, @@ -3964,13 +3964,12 @@ static void VM_CL_skel_build(prvm_prog_t *prog) int firstbone = PRVM_G_FLOAT(OFS_PARM4) - 1; int lastbone = PRVM_G_FLOAT(OFS_PARM5) - 1; dp_model_t *model = CL_GetModelByIndex(modelindex); - float blendfrac; int numblends; int bonenum; int blendindex; framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS]; frameblend_t frameblend[MAX_FRAMEBLENDS]; - matrix4x4_t blendedmatrix; + matrix4x4_t bonematrix; matrix4x4_t matrix; PRVM_G_FLOAT(OFS_RETURN) = 0; if (skeletonindex < 0 || skeletonindex >= MAX_EDICTS || !(skeleton = prog->skeletons[skeletonindex])) @@ -3980,19 +3979,18 @@ static void VM_CL_skel_build(prvm_prog_t *prog) lastbone = min(lastbone, skeleton->model->num_bones - 1); VM_GenerateFrameGroupBlend(prog, framegroupblend, ed); VM_FrameBlendFromFrameGroupBlend(frameblend, framegroupblend, model, cl.time); - blendfrac = 1.0f - retainfrac; for (numblends = 0;numblends < MAX_FRAMEBLENDS && frameblend[numblends].lerp;numblends++) - frameblend[numblends].lerp *= blendfrac; + ; for (bonenum = firstbone;bonenum <= lastbone;bonenum++) { - memset(&blendedmatrix, 0, sizeof(blendedmatrix)); - Matrix4x4_Accumulate(&blendedmatrix, &skeleton->relativetransforms[bonenum], retainfrac); + memset(&bonematrix, 0, sizeof(bonematrix)); for (blendindex = 0;blendindex < numblends;blendindex++) { Matrix4x4_FromBonePose7s(&matrix, model->num_posescale, model->data_poses7s + 7 * (frameblend[blendindex].subframe * model->num_bones + bonenum)); - Matrix4x4_Accumulate(&blendedmatrix, &matrix, frameblend[blendindex].lerp); + Matrix4x4_Accumulate(&bonematrix, &matrix, frameblend[blendindex].lerp); } - skeleton->relativetransforms[bonenum] = blendedmatrix; + Matrix4x4_Normalize3(&bonematrix, &bonematrix); + Matrix4x4_Interpolate(&skeleton->relativetransforms[bonenum], &bonematrix, &skeleton->relativetransforms[bonenum], retainfrac); } PRVM_G_FLOAT(OFS_RETURN) = skeletonindex + 1; }