From 89a1aeaa16649d354f8edba23fa7c03ab72fd88b Mon Sep 17 00:00:00 2001 From: Samual Date: Wed, 5 Sep 2012 02:49:25 -0400 Subject: [PATCH] Trying ONE more idea with RefSys --- qcsrc/server/mutators/gamemode_ctf.qc | 5 +++-- qcsrc/warpzonelib/common.qc | 14 ++++++++++++++ qcsrc/warpzonelib/common.qh | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/qcsrc/server/mutators/gamemode_ctf.qc b/qcsrc/server/mutators/gamemode_ctf.qc index f70562171..135a4c150 100644 --- a/qcsrc/server/mutators/gamemode_ctf.qc +++ b/qcsrc/server/mutators/gamemode_ctf.qc @@ -273,7 +273,8 @@ void ctf_Handle_Throw(entity player, entity reciever, float droptype) { case DROP_PASS: { - targ_origin = WarpZone_UnTransformOrigin(reciever, (0.5 * (reciever.absmin + reciever.absmax))); + WarpZone_RefSys_MakeSameRefSys(flag, player); + targ_origin = WarpZone_RefSys_TransformOrigin(flag, reciever, (0.5 * (reciever.absmin + reciever.absmax))); flag.velocity = (normalize(targ_origin - player.origin) * autocvar_g_ctf_pass_velocity); break; } @@ -711,7 +712,7 @@ void ctf_FlagThink() { vector targ_origin = ((self.pass_target.absmin + self.pass_target.absmax) * 0.5); vector old_targ_origin = targ_origin; - targ_origin = WarpZone_UnTransformOrigin(self.pass_target, targ_origin); + targ_origin = WarpZone_RefSys_TransformOrigin(self, self.pass_target, targ_origin); WarpZone_TraceLine(self.origin, targ_origin, MOVE_NOMONSTERS, self); print(strcat("self: ", vtos(self.origin), ", old: ", vtos(old_targ_origin), " (", ftos(vlen(self.origin - old_targ_origin)), "qu)"), ", transformed: ", vtos(targ_origin), " (", ftos(vlen(self.origin - targ_origin)), "qu)", ".\n"); diff --git a/qcsrc/warpzonelib/common.qc b/qcsrc/warpzonelib/common.qc index 7bbebdc9c..8907a1d32 100644 --- a/qcsrc/warpzonelib/common.qc +++ b/qcsrc/warpzonelib/common.qc @@ -734,3 +734,17 @@ entity WarpZone_RefSys_SpawnSameRefSys(entity me) } return e; } +void WarpZone_RefSys_MakeSameRefSys(entity to, entity from) +{ + if(from.WarpZone_refsys) + { + to.WarpZone_refsys = spawn(); + to.WarpZone_refsys.classname = "warpzone_refsys"; + to.WarpZone_refsys.owner = to; + to.WarpZone_refsys.think = WarpZone_RefSys_GC; + to.WarpZone_refsys.nextthink = time + 1; + to.WarpZone_refsys.warpzone_shift = from.WarpZone_refsys.warpzone_shift; + to.WarpZone_refsys.warpzone_transform = from.WarpZone_refsys.warpzone_transform; + } + return; +} diff --git a/qcsrc/warpzonelib/common.qh b/qcsrc/warpzonelib/common.qh index c2f36bea8..6082b891b 100644 --- a/qcsrc/warpzonelib/common.qh +++ b/qcsrc/warpzonelib/common.qh @@ -70,6 +70,7 @@ vector WarpZone_RefSys_TransformVelocity(entity from, entity to, vector vel); vector WarpZone_RefSys_TransformAngles(entity from, entity to, vector ang); vector WarpZone_RefSys_TransformVAngles(entity from, entity to, vector ang); entity WarpZone_RefSys_SpawnSameRefSys(entity me); +void WarpZone_RefSys_MakeSameRefSys(entity to, entity from); #ifndef BITCLR # define BITCLR(a,b) ((a) - ((a) & (b))) -- 2.39.2