Simplify DefineModelPart packet reading

This commit is contained in:
UnknownShadow200 2020-08-01 09:33:45 +10:00
parent 2c191a847b
commit 4cf4db4607
2 changed files with 23 additions and 46 deletions

View File

@ -1466,7 +1466,7 @@ static void CPE_DefineModel(cc_uint8* data) {
static void CPE_DefineModelPart(cc_uint8* data) {
/* 103 = 1 + 3*4 + 3*4 + 6*(2*2 + 2*2) + 3*4 + 3*4 + 1 + 4 + 1 */
cc_uint8 id = *data++;
cc_uint8 id = data[0];
struct CustomModel* m = &custom_models[id];
struct CustomModelPart* part;
cc_uint8 flags;
@ -1476,55 +1476,35 @@ static void CPE_DefineModelPart(cc_uint8* data) {
part = &m->parts[m->curPartIndex];
m->curPartIndex++;
/* read min, max vec3 coords */
part->min.X = GetFloat(data);
data += 4;
part->min.Y = GetFloat(data);
data += 4;
part->min.Z = GetFloat(data);
data += 4;
part->max.X = GetFloat(data);
data += 4;
part->max.Y = GetFloat(data);
data += 4;
part->max.Z = GetFloat(data);
data += 4;
part->min.X = GetFloat(data + 1);
part->min.Y = GetFloat(data + 5);
part->min.Z = GetFloat(data + 9);
part->max.X = GetFloat(data + 13);
part->max.Y = GetFloat(data + 17);
part->max.Z = GetFloat(data + 21);
/* read u, v coords for our 6 faces */
for (i = 0; i < 6; i++) {
part->u1[i] = Stream_GetU16_BE(data);
data += 2;
part->v1[i] = Stream_GetU16_BE(data);
data += 2;
part->u2[i] = Stream_GetU16_BE(data);
data += 2;
part->v2[i] = Stream_GetU16_BE(data);
data += 2;
part->u1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 0));
part->v1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 2));
part->u2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 4));
part->v2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 6));
}
/* read rotation origin point */
part->rotationOrigin.X = GetFloat(data);
data += 4;
part->rotationOrigin.Y = GetFloat(data);
data += 4;
part->rotationOrigin.Z = GetFloat(data);
data += 4;
part->rotationOrigin.X = GetFloat(data + 73);
part->rotationOrigin.Y = GetFloat(data + 77);
part->rotationOrigin.Z = GetFloat(data + 81);
/* read rotation angles */
part->rotation.X = GetFloat(data);
data += 4;
part->rotation.Y = GetFloat(data);
data += 4;
part->rotation.Z = GetFloat(data);
data += 4;
part->rotation.X = GetFloat(data + 85);
part->rotation.Y = GetFloat(data + 89);
part->rotation.Z = GetFloat(data + 93);
if (cpe_customModelsVer == 1) {
/* ignore animations */
data++;
data += 4;
data += 102;
} else if (cpe_customModelsVer == 2) {
data += 97;
for (i = 0; i < MAX_CUSTOM_MODEL_ANIMS; i++) {
cc_uint8 tmp = *data++;
part->anims[i].type = tmp & 0x3F;
@ -1541,10 +1521,9 @@ static void CPE_DefineModelPart(cc_uint8* data) {
}
}
/* read bool flags */
flags = *data++;
part->fullbright = (flags >> 0) & 1;
part->firstPersonArm = (flags >> 1) & 1;
flags = *data;
part->fullbright = flags & 0x01;
part->firstPersonArm = flags & 0x02;
if (m->curPartIndex == m->numParts) {
/* we're the last part, so register our model */

View File

@ -82,8 +82,6 @@ int TextureCache_ClearDenied(void);
/* Sets the filename of the default texture pack used. */
void TexturePack_SetDefault(const String* texPack);
/* Extracts user's default texture pack. */
void TexturePack_ExtractDefault(void);
/* If World_TextureUrl is empty, extracts user's default texture pack. */
/* Otherwise extracts the cached texture pack for that URL. */
void TexturePack_ExtractCurrent(cc_bool forceReload);