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) { 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 */ /* 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 CustomModel* m = &custom_models[id];
struct CustomModelPart* part; struct CustomModelPart* part;
cc_uint8 flags; cc_uint8 flags;
@ -1476,55 +1476,35 @@ static void CPE_DefineModelPart(cc_uint8* data) {
part = &m->parts[m->curPartIndex]; part = &m->parts[m->curPartIndex];
m->curPartIndex++; m->curPartIndex++;
/* read min, max vec3 coords */ part->min.X = GetFloat(data + 1);
part->min.X = GetFloat(data); part->min.Y = GetFloat(data + 5);
data += 4; part->min.Z = GetFloat(data + 9);
part->min.Y = GetFloat(data); part->max.X = GetFloat(data + 13);
data += 4; part->max.Y = GetFloat(data + 17);
part->min.Z = GetFloat(data); part->max.Z = GetFloat(data + 21);
data += 4;
part->max.X = GetFloat(data);
data += 4;
part->max.Y = GetFloat(data);
data += 4;
part->max.Z = GetFloat(data);
data += 4;
/* read u, v coords for our 6 faces */ /* read u, v coords for our 6 faces */
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
part->u1[i] = Stream_GetU16_BE(data); part->u1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 0));
data += 2; part->v1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 2));
part->v1[i] = Stream_GetU16_BE(data); part->u2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 4));
data += 2; part->v2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 6));
part->u2[i] = Stream_GetU16_BE(data);
data += 2;
part->v2[i] = Stream_GetU16_BE(data);
data += 2;
} }
/* read rotation origin point */ part->rotationOrigin.X = GetFloat(data + 73);
part->rotationOrigin.X = GetFloat(data); part->rotationOrigin.Y = GetFloat(data + 77);
data += 4; part->rotationOrigin.Z = GetFloat(data + 81);
part->rotationOrigin.Y = GetFloat(data);
data += 4;
part->rotationOrigin.Z = GetFloat(data);
data += 4;
/* read rotation angles */ part->rotation.X = GetFloat(data + 85);
part->rotation.X = GetFloat(data); part->rotation.Y = GetFloat(data + 89);
data += 4; part->rotation.Z = GetFloat(data + 93);
part->rotation.Y = GetFloat(data);
data += 4;
part->rotation.Z = GetFloat(data);
data += 4;
if (cpe_customModelsVer == 1) { if (cpe_customModelsVer == 1) {
/* ignore animations */ /* ignore animations */
data++; data += 102;
data += 4;
} else if (cpe_customModelsVer == 2) { } else if (cpe_customModelsVer == 2) {
data += 97;
for (i = 0; i < MAX_CUSTOM_MODEL_ANIMS; i++) { for (i = 0; i < MAX_CUSTOM_MODEL_ANIMS; i++) {
cc_uint8 tmp = *data++; cc_uint8 tmp = *data++;
part->anims[i].type = tmp & 0x3F; part->anims[i].type = tmp & 0x3F;
@ -1541,10 +1521,9 @@ static void CPE_DefineModelPart(cc_uint8* data) {
} }
} }
/* read bool flags */ flags = *data;
flags = *data++; part->fullbright = flags & 0x01;
part->fullbright = (flags >> 0) & 1; part->firstPersonArm = flags & 0x02;
part->firstPersonArm = (flags >> 1) & 1;
if (m->curPartIndex == m->numParts) { if (m->curPartIndex == m->numParts) {
/* we're the last part, so register our model */ /* 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. */ /* Sets the filename of the default texture pack used. */
void TexturePack_SetDefault(const String* texPack); 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. */ /* If World_TextureUrl is empty, extracts user's default texture pack. */
/* Otherwise extracts the cached texture pack for that URL. */ /* Otherwise extracts the cached texture pack for that URL. */
void TexturePack_ExtractCurrent(cc_bool forceReload); void TexturePack_ExtractCurrent(cc_bool forceReload);