X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Fcommon.qh;h=e7cf23908eda0198025a0c5ebaf437b1eb890757;hb=64b6c7420b3e1c307f408a9f17d9c765a268621a;hp=c2f36bea868d8baf7ad06c37294b3b7bb2316a24;hpb=74e6f7b9c00bc17d93633557706d9189d363dd56;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/common.qh b/qcsrc/warpzonelib/common.qh index c2f36bea8..e7cf23908 100644 --- a/qcsrc/warpzonelib/common.qh +++ b/qcsrc/warpzonelib/common.qh @@ -62,14 +62,25 @@ vector WarpZone_UnTransformAngles(entity wz, vector v); vector WarpZone_UnTransformVAngles(entity wz, vector v); // reference systems (chained warpzone transforms) -void WarpZone_RefSys_Add(entity me, entity wz); -void WarpZone_RefSys_AddIncrementally(entity me, entity ref); -void WarpZone_RefSys_BeginAddingIncrementally(entity me, entity ref); -vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org); -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_Clear(entity me); // R := id +void WarpZone_RefSys_Add(entity me, entity wz); // me.R := wz me.R +void WarpZone_RefSys_AddInverse(entity me, entity wz); // me.R := wz^-1 me.R +void WarpZone_RefSys_AddTransform(entity me, vector t, vector s); // me.R := [t s] me.R +void WarpZone_RefSys_AddInverseTransform(entity me, vector t, vector s); // me.R := [t s]^-1 me.R + +// makes this reference system track ref's changes +// NOTE: this is ONLY sensible if WarpZone_RefSys_Add is no longer called on "me" while doing this +// To achieve this, make sure no touch events on warpzone are raised by this entity +// or set a movetype that causes no warpzoning (e.g. MOVETYPE_NONE, MOVETYPE_FOLLOW) +void WarpZone_RefSys_AddIncrementally(entity me, entity ref); // me.R := ref.R me.Rref^-1 me.R; me.Rref := ref.R +void WarpZone_RefSys_BeginAddingIncrementally(entity me, entity ref); // me.Rref := ref.R + +vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org); // return to.R from.R^-1 org +vector WarpZone_RefSys_TransformVelocity(entity from, entity to, vector vel); // return to.R from.R^-1 vel +vector WarpZone_RefSys_TransformAngles(entity from, entity to, vector ang); // return to.R from.R^-1 ang +vector WarpZone_RefSys_TransformVAngles(entity from, entity to, vector ang); // return to.R from.R^-1 ang +void WarpZone_RefSys_Copy(entity me, entity from); // to.R := from.R +entity WarpZone_RefSys_SpawnSameRefSys(entity me); // spawn().R = me.R #ifndef BITCLR # define BITCLR(a,b) ((a) - ((a) & (b)))