attempt at a camera fix
authorRudolf Polzer <divverent@alientrap.org>
Thu, 24 Jun 2010 11:23:02 +0000 (13:23 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 24 Jun 2010 11:23:02 +0000 (13:23 +0200)
qcsrc/warpzonelib/client.qc
qcsrc/warpzonelib/common.qc
qcsrc/warpzonelib/server.qc

index 773e90d5ecd655752f4fa02ca10ac2e36f951361..e52c0d7ce8e328c03ac41a7e4b7c187a603b1ba9 100644 (file)
@@ -34,7 +34,6 @@ void WarpZone_Read(float isnew)
        WarpZone_SetUp(self, self.enemy.oldorigin, self.enemy.avelocity, self.oldorigin, self.avelocity);
 
        // engine currently wants this
-       self.avelocity = AnglesTransform_TurnDirectionFR(self.avelocity);
        self.drawmask = MASK_NORMAL;
 
        // link me
@@ -43,14 +42,6 @@ void WarpZone_Read(float isnew)
        setsize(self, self.mins, self.maxs);
 }
 
-vector WarpZone_Camera_camera_transform(vector org, vector ang)
-{
-       // a fixed camera view
-       trace_endpos = self.oldorigin;
-       makevectors(self.avelocity);
-       return self.oldorigin;
-}
-
 void WarpZone_Camera_Read(float isnew)
 {
        self.classname = "func_warpzone_camera";
@@ -72,9 +63,11 @@ void WarpZone_Camera_Read(float isnew)
        self.avelocity_y = ReadCoord();
        self.avelocity_z = ReadCoord();
 
+       // common stuff
+       WarpZone_Camera_SetUp(self, self.oldorigin, self.avelocity);
+
        // engine currently wants this
        self.drawmask = MASK_NORMAL;
-       self.camera_transform = WarpZone_Camera_camera_transform;
 
        // link me
        //setmodel(self, self.model);
index 3f6bb10a2ebe872b77bc88e45f44558beced4bb1..e4acfb1693a2d86586cd3fb53cda548547b83f7b 100644 (file)
@@ -55,6 +55,21 @@ void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, ve
        e.camera_transform = WarpZone_camera_transform;
 }
 
+vector WarpZone_Camera_camera_transform(vector org, vector ang)
+{
+       // a fixed camera view
+       trace_endpos = self.warpzone_origin;
+       makevectors(self.warpzone_angles);
+       return self.warpzone_origin;
+}
+
+void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang) // we assume that e.oldorigin and e.avelocity point to view origin and direction
+{
+       e.warpzone_origin = my_org;
+       e.warpzone_angles = my_ang;
+       e.camera_transform = WarpZone_Camera_camera_transform;
+}
+
 .entity enemy;
 
 vector WarpZoneLib_BoxTouchesBrush_mins;
index f2b3581887536234d6614690906e444dd27f2bd9..6388fbaade6c847d3ac8a1200285519aae27509d 100644 (file)
@@ -300,6 +300,7 @@ void WarpZoneCamera_InitStep_FindTarget()
                error("Camera with nonexisting target");
                return;
        }
+       WarpZone_Camera_SetUp(self, self.enemy.origin, self.enemy.angles);
 }
 
 void WarpZone_InitStep_UpdateTransform()