]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
do setorigin and setmodelindex properly (preparation for LOD support)
authorRudolf Polzer <divverent@xonotic.org>
Tue, 15 Nov 2011 08:16:47 +0000 (09:16 +0100)
committerRudolf Polzer <divverent@xonotic.org>
Tue, 15 Nov 2011 08:16:47 +0000 (09:16 +0100)
qcsrc/csqcmodel/cl_model.qc
qcsrc/csqcmodel/cl_player.qc
qcsrc/csqcmodel/common.qc
qcsrc/csqcmodel/settings.qh

index e5bf9c54a4223a523d5f5ece6f9d60997dce1f32..9039da49a610874bc4c173ac5672802efed39c18 100644 (file)
@@ -177,6 +177,9 @@ void CSQCModel_Read()
 #undef PROPERTY_SCALED
 #undef PROPERTY
 
+       if(sf & PROPERTY_MODELINDEX)
+               setmodelindex(self, self.modelindex); // this retrieves the .model key and sets mins/maxs/absmin/absmax
+
        if(sf & PROPERTY_TELEPORTED)
                self.iflags |= IFLAG_TELEPORTED;
        
@@ -191,6 +194,9 @@ void CSQCModel_Read()
        CSQCModel_InterpolateAnimation_Do();
 #endif
 
+       // relink
+       setorigin(self, self.origin);
+
        // draw it
        self.drawmask = MASK_NORMAL;
        self.predraw = CSQCModel_Draw;
index 29b0ed9c30190a3ed06fa144b66278b3968bc4de..ae24e6dd82c9509e3d3f1119632a02e69688f3cf 100644 (file)
@@ -162,6 +162,9 @@ void CSQCPlayer_SetCamera()
 
                self = oldself;
 
+               // relink
+               setorigin(csqcplayer, csqcplayer.origin);
+
                org = csqcplayer.origin + self.view_ofs + CSQCPlayer_GetPredictionError();
                ang = R_SetView3fv(VF_ANGLES);
 
index 4526749467d647fb9da9923eab1541b68b3023ff..a0a9cbfd7c469b874fb4032568b94e1d99b394ee 100644 (file)
 #define PROPERTY_FRAME2 16384
 #define PROPERTY_LERPFRAC 8192
 #define PROPERTY_TELEPORTED 4096 // the "teleport bit" cancelling interpolation
+#define PROPERTY_MODELINDEX 2048
+#define PROPERTY_ORIGIN 1024
+#define PROPERTY_YAW 512
+#define PROPERTY_PITCHROLL 256
 
 #define ALLPROPERTIES_COMMON \
        PROPERTY(PROPERTY_FRAME, ReadByte, WriteByte, frame) \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_x) \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_y) \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_z) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_x) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_y) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_z) \
-       PROPERTY(4, ReadShort, WriteShort, modelindex) \
-       CSQCMODELS_EXTRAPROPERTIES(8)
+       PROPERTY(PROPERTY_MODELINDEX, ReadShort, WriteShort, modelindex) \
+       PROPERTY(PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_x) \
+       PROPERTY(PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_y) \
+       PROPERTY(PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_z) \
+       PROPERTY(PROPERTY_PITCHROLL, ReadAngle, WriteAngle, angles_x) \
+       PROPERTY(PROPERTY_YAW, ReadAngle, WriteAngle, angles_y) \
+       PROPERTY(PROPERTY_PITCHROLL, ReadAngle, WriteAngle, angles_z) \
+       CSQCMODELS_EXTRAPROPERTIES
 
 #ifdef CSQCMODELS_HAVE_TWO_FRAMES
 .float frame3;
index cb1f7822a088e3f87337576b5aa61c95f1154d78..e5bb86bc49190540e9925c4acd36fdfd2aa4bc2b 100644 (file)
@@ -5,11 +5,11 @@
 //#define CSQCMODELS_SUPPORT_GETTAGINFO_BEFORE_DRAW
 
 // add properties you want networked to CSQC here
-#define CSQCMODELS_EXTRAPROPERTIES(multiplier) \
-       PROPERTY(multiplier*1, ReadByte, WriteByte, skin) \
-       PROPERTY(multiplier*2, ReadShort, WriteShort, colormap) \
-       PROPERTY(multiplier*4, ReadInt24_t, WriteInt24_t, effects) \
-       PROPERTY_SCALED(multiplier*8, ReadByte, WriteByte, alpha, 255, 0, 255)
+#define CSQCMODELS_EXTRAPROPERTIES \
+       PROPERTY(1, ReadByte, WriteByte, skin) \
+       PROPERTY(2, ReadShort, WriteShort, colormap) \
+       PROPERTY(4, ReadInt24_t, WriteInt24_t, effects) \
+       PROPERTY_SCALED(8, ReadByte, WriteByte, alpha, 255, 0, 255)
 
 // add hook function calls here
 #define CSQCMODELS_HOOK_PREUPDATE