1 // generic CSQC model code
3 #define ALLPROPERTIES \
4 PROPERTY(1, ReadCoord, WriteCoord, origin_x) \
5 PROPERTY(1, ReadCoord, WriteCoord, origin_y) \
6 PROPERTY(1, ReadCoord, WriteCoord, origin_z) \
7 PROPERTY(2, ReadAngle, WriteAngle, angles_x) \
8 PROPERTY(2, ReadAngle, WriteAngle, angles_y) \
9 PROPERTY(2, ReadAngle, WriteAngle, angles_z) \
10 PROPERTY(4, ReadShort, WriteShort, modelindex) \
11 PROPERTY(8, ReadByte, WriteByte, frame) \
12 PROPERTY(16, ReadByte, WriteByte, skin) \
13 PROPERTY(32, ReadInt24_t, WriteInt24_t, effects) \
14 PROPERTY_SCALED(64, ReadByte, WriteByte, alpha, 255, 0, 255) \
15 /* no attachment support */ \
16 /* no rtlight support */ \
17 /* no glow support */ \
18 /* no colormod support */ \
19 PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_x, 32, 0, 255) \
20 PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_y, 32, 0, 255) \
21 PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_z, 32, 0, 255)
25 #define PROPERTY(flag,r,w,f) \
27 #define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
29 #undef PROPERTY_SCALED
32 float CSQCModel_Send(entity to, float sf)
34 WriteByte(MSG_ENTITY, ENT_CS_CSQCMODEL);
35 WriteShort(MSG_ENTITY, sf);
37 #define PROPERTY(flag,r,w,f) \
40 w(MSG_ENTITY, self.csqcmodel_##f); \
42 #define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
44 #undef PROPERTY_SCALED
50 void CSQCModel_CheckUpdate()
53 #define PROPERTY(flag,r,w,f) \
55 if(tmp != self.csqcmodel_##f) \
57 self.csqcmodel_##f = tmp; \
58 self.SendFlags |= flag; \
60 #define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
61 tmp = bound(mi, s * self.f, ma); \
62 if(tmp != self.csqcmodel_##f) \
64 self.csqcmodel_##f = tmp; \
65 self.SendFlags |= flag; \
68 #undef PROPERTY_SCALED
72 void CSQCModel_LinkEntity()
74 Net_LinkEntity(self, TRUE, 0, CSQCModel_Send);
86 #define PROPERTY(flag,r,w,f) \
89 #define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
93 #undef PROPERTY_SCALED