MCPcopy Create free account
hub / github.com/ClassiCube/ClassiCube / CPE_DefineModelPart

Function CPE_DefineModelPart

src/Protocol.c:1742–1803  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1740}
1741
1742static void CPE_DefineModelPart(cc_uint8* data) {
1743 struct CustomModel* m;
1744 struct CustomModelPart* part;
1745 struct CustomModelPartDef p;
1746 int i;
1747
1748 m = CustomModel_Get(data[0]);
1749 if (!m || !m->defined || m->curPartIndex >= m->numParts) return;
1750 part = &m->parts[m->curPartIndex];
1751
1752 p.min.x = GetFloat(data + 1);
1753 p.min.y = GetFloat(data + 5);
1754 p.min.z = GetFloat(data + 9);
1755 p.max.x = GetFloat(data + 13);
1756 p.max.y = GetFloat(data + 17);
1757 p.max.z = GetFloat(data + 21);
1758
1759 /* read u, v coords for our 6 faces */
1760 for (i = 0; i < 6; i++)
1761 {
1762 p.u1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 0));
1763 p.v1[i] = Stream_GetU16_BE(data + 25 + (i*8 + 2));
1764 p.u2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 4));
1765 p.v2[i] = Stream_GetU16_BE(data + 25 + (i*8 + 6));
1766 }
1767
1768 p.rotationOrigin.x = GetFloat(data + 73);
1769 p.rotationOrigin.y = GetFloat(data + 77);
1770 p.rotationOrigin.z = GetFloat(data + 81);
1771
1772 part->rotation.x = GetFloat(data + 85);
1773 part->rotation.y = GetFloat(data + 89);
1774 part->rotation.z = GetFloat(data + 93);
1775
1776 if (customModels_Ext.serverVersion == 1) {
1777 /* ignore animations */
1778 p.flags = data[102];
1779 } else {
1780 p.flags = data[165];
1781
1782 data += 97;
1783 for (i = 0; i < MAX_CUSTOM_MODEL_ANIMS; i++)
1784 {
1785 cc_uint8 tmp = *data++;
1786 part->animType[i] = tmp & 0x3F;
1787 part->animAxis[i] = tmp >> 6;
1788
1789 part->anims[i].a = GetFloat(data);
1790 data += 4;
1791 part->anims[i].b = GetFloat(data);
1792 data += 4;
1793 part->anims[i].c = GetFloat(data);
1794 data += 4;
1795 part->anims[i].d = GetFloat(data);
1796 data += 4;
1797 }
1798 }
1799

Callers

nothing calls this directly

Calls 5

CustomModel_GetFunction · 0.85
GetFloatFunction · 0.85
Stream_GetU16_BEFunction · 0.85
CustomModel_BuildPartFunction · 0.85
CustomModel_RegisterFunction · 0.85

Tested by

no test coverage detected