From 2c5b8e699d09a41bb194212cb6b0d9fe3c84ae46 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sun, 19 Jun 2011 21:10:46 +0200 Subject: [PATCH] warpzonelib: split Divide into LeftDivide/RightDivide. RightDivide does what old Divide did --- qcsrc/server/portals.qc | 2 +- qcsrc/warpzonelib/anglestransform.qc | 7 ++++++- qcsrc/warpzonelib/anglestransform.qh | 5 +++-- qcsrc/warpzonelib/common.qc | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/qcsrc/server/portals.qc b/qcsrc/server/portals.qc index 0ce3d515a..a0f750b05 100644 --- a/qcsrc/server/portals.qc +++ b/qcsrc/server/portals.qc @@ -355,7 +355,7 @@ void Portal_Disconnect(entity teleporter, entity destination) void Portal_Connect(entity teleporter, entity destination) { - teleporter.portal_transform = AnglesTransform_Divide(AnglesTransform_TurnDirectionFR(destination.mangle), teleporter.mangle); + teleporter.portal_transform = AnglesTransform_RightDivide(AnglesTransform_TurnDirectionFR(destination.mangle), teleporter.mangle); teleporter.enemy = destination; destination.enemy = teleporter; diff --git a/qcsrc/warpzonelib/anglestransform.qc b/qcsrc/warpzonelib/anglestransform.qc index 56f72bfd7..3233f6a31 100644 --- a/qcsrc/warpzonelib/anglestransform.qc +++ b/qcsrc/warpzonelib/anglestransform.qc @@ -84,11 +84,16 @@ vector AnglesTransform_TurnDirectionFU(vector transform) return transform; } -vector AnglesTransform_Divide(vector to_transform, vector from_transform) +vector AnglesTransform_RightDivide(vector to_transform, vector from_transform) { return AnglesTransform_Multiply(to_transform, AnglesTransform_Invert(from_transform)); } +vector AnglesTransform_LeftDivide(vector from_transform, vector to_transform) +{ + return AnglesTransform_Multiply(AnglesTransform_Invert(from_transform), to_transform); +} + vector AnglesTransform_Normalize(vector t, float minimize_roll) { float need_flip; diff --git a/qcsrc/warpzonelib/anglestransform.qh b/qcsrc/warpzonelib/anglestransform.qh index 045fb24b3..b1c8a85e9 100644 --- a/qcsrc/warpzonelib/anglestransform.qh +++ b/qcsrc/warpzonelib/anglestransform.qh @@ -11,11 +11,12 @@ void fixedmakevectors(vector a); #endif vector AnglesTransform_Apply(vector transform, vector v); -vector AnglesTransform_Multiply(vector t1, vector t2); +vector AnglesTransform_Multiply(vector t1, vector t2); // A B vector AnglesTransform_Invert(vector transform); vector AnglesTransform_TurnDirectionFU(vector transform); vector AnglesTransform_TurnDirectionFR(vector transform); -vector AnglesTransform_Divide(vector to_transform, vector from_transform); +vector AnglesTransform_RightDivide(vector to_transform, vector from_transform); // A B^-1 +vector AnglesTransform_LeftDivide(vector from_transform, vector to_transform); // A^-1 B vector AnglesTransform_Normalize(vector t, float minimize_roll); // makes sure all angles are in their range: yaw in -180..180, pitch in -90..90, roll in -180..180 (or if minimize_roll is set, pitch in -180..180, roll in -90..90) diff --git a/qcsrc/warpzonelib/common.qc b/qcsrc/warpzonelib/common.qc index 3481ed175..bb4f965f7 100644 --- a/qcsrc/warpzonelib/common.qc +++ b/qcsrc/warpzonelib/common.qc @@ -52,7 +52,7 @@ vector WarpZone_camera_transform(vector org, vector ang) void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, vector other_ang) { - e.warpzone_transform = AnglesTransform_Divide(other_ang, AnglesTransform_TurnDirectionFR(my_ang)); + e.warpzone_transform = AnglesTransform_RightDivide(other_ang, AnglesTransform_TurnDirectionFR(my_ang)); e.warpzone_shift = AnglesTransform_PrePostShift_GetPostShift(my_org, e.warpzone_transform, other_org); e.warpzone_origin = my_org; e.warpzone_targetorigin = other_org; -- 2.39.2