]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/lib/warpzone/common.qc
Merge branch 'master' into Mario/entrap_nade
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / warpzone / common.qc
index 130e1b2d14b82be54b0619811c6f0cb553a056d2..5acacc7734d47953601c3fd385fa35b2f86497e4 100644 (file)
@@ -37,10 +37,9 @@ void WarpZone_Accumulator_AddInverse(entity acc, entity wz)
        WarpZone_Accumulator_AddInverseTransform(acc, wz.warpzone_transform, wz.warpzone_shift);
 }
 
-.vector(vector, vector) camera_transform;
 float autocvar_cl_warpzone_usetrace = 1;
-vector WarpZone_camera_transform(vector org, vector ang)
-{SELFPARAM();
+vector WarpZone_camera_transform(entity this, vector org, vector ang)
+{
        vector vf, vr, vu;
        if(this.warpzone_fadestart)
                if(vdist(org - this.origin - 0.5 * (this.mins + this.maxs), >, this.warpzone_fadeend + 400))
@@ -55,7 +54,7 @@ vector WarpZone_camera_transform(vector org, vector ang)
        vr = WarpZone_TransformVelocity(this, vr);
        vu = WarpZone_TransformVelocity(this, vu);
        if(autocvar_cl_warpzone_usetrace)
-               traceline(this.warpzone_targetorigin, org, MOVE_NOMONSTERS, world);
+               traceline(this.warpzone_targetorigin, org, MOVE_NOMONSTERS, NULL);
        else
                trace_endpos = this.warpzone_targetorigin;
        v_forward = vf;
@@ -74,11 +73,11 @@ void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, ve
        e.warpzone_targetangles = other_ang;
        fixedmakevectors(my_ang); e.warpzone_forward = v_forward;
        fixedmakevectors(other_ang); e.warpzone_targetforward = v_forward;
-       e.camera_transform = WarpZone_camera_transform;
+       setcamera_transform(e, WarpZone_camera_transform);
 }
 
-vector WarpZone_Camera_camera_transform(vector org, vector ang)
-{SELFPARAM();
+vector WarpZone_Camera_camera_transform(entity this, vector org, vector ang)
+{
        // a fixed camera view
        if(this.warpzone_fadestart)
                if(vdist(org - this.origin - 0.5 * (this.mins + this.maxs), >, this.warpzone_fadeend + 400))
@@ -94,7 +93,7 @@ void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang) // we assume
 {
        e.warpzone_origin = my_org;
        e.warpzone_angles = my_ang;
-       e.camera_transform = WarpZone_Camera_camera_transform;
+       setcamera_transform(e, WarpZone_Camera_camera_transform);
 }
 
 .entity enemy;
@@ -157,11 +156,11 @@ entity WarpZone_Find(vector mi, vector ma)
        // if we are near any warpzone planes - MOVE AWAY (work around nearclip)
        entity e;
        if(!warpzone_warpzones_exist)
-               return world;
-       for(e = world; (e = find(e, classname, "trigger_warpzone")); )
-               if(WarpZoneLib_BoxTouchesBrush(mi, ma, e, world))
+               return NULL;
+       for(e = NULL; (e = find(e, classname, "trigger_warpzone")); )
+               if(WarpZoneLib_BoxTouchesBrush(mi, ma, e, NULL))
                        return e;
-       return world;
+       return NULL;
 }
 
 void WarpZone_MakeAllSolid()
@@ -169,7 +168,7 @@ void WarpZone_MakeAllSolid()
        entity e;
        if(!warpzone_warpzones_exist)
                return;
-       for(e = world; (e = find(e, classname, "trigger_warpzone")); )
+       for(e = NULL; (e = find(e, classname, "trigger_warpzone")); )
                e.solid = SOLID_BSP;
 }
 
@@ -178,7 +177,7 @@ void WarpZone_MakeAllOther()
        entity e;
        if(!warpzone_warpzones_exist)
                return;
-       for(e = world; (e = find(e, classname, "trigger_warpzone")); )
+       for(e = NULL; (e = find(e, classname, "trigger_warpzone")); )
                e.solid = SOLID_TRIGGER;
 }
 
@@ -205,8 +204,8 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end,
        vector vf, vr, vu;
 
        WarpZone_trace_forent = forent;
-       WarpZone_trace_firstzone = world;
-       WarpZone_trace_lastzone = world;
+       WarpZone_trace_firstzone = NULL;
+       WarpZone_trace_lastzone = NULL;
        WarpZone_Trace_InitTransform();
        if(!warpzone_warpzones_exist)
        {
@@ -273,7 +272,7 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end,
                if(--i < 1)
                {
                        LOG_TRACE("Too many warpzones in sequence, aborting trace.\n");
-                       trace_ent = world;
+                       trace_ent = NULL;
                        break;
                }
                tracebox(org, mi, ma, end, nomonsters_adjusted, WarpZone_trace_forent);
@@ -301,7 +300,7 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end,
                {
                        // FIXME can this check be removed? Do we really need it?
                        LOG_TRACE("I transformed into the same zone again, wtf, aborting the trace\n");
-                       trace_ent = world;
+                       trace_ent = NULL;
                        break;
                }
                wz = trace_ent;
@@ -331,7 +330,7 @@ LABEL(fail)
 
 void WarpZone_TraceBox(vector org, vector mi, vector ma, vector end, float nomonsters, entity forent)
 {
-       WarpZone_TraceBox_ThroughZone(org, mi, ma, end, nomonsters, forent, world, WarpZone_trace_callback_t_null);
+       WarpZone_TraceBox_ThroughZone(org, mi, ma, end, nomonsters, forent, NULL, WarpZone_trace_callback_t_null);
 }
 
 void WarpZone_TraceLine(vector org, vector end, float nomonsters, entity forent)
@@ -350,8 +349,8 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
        g = cvar("sv_gravity") * e.gravity;
 
        WarpZone_trace_forent = forent;
-       WarpZone_trace_firstzone = world;
-       WarpZone_trace_lastzone = world;
+       WarpZone_trace_firstzone = NULL;
+       WarpZone_trace_lastzone = NULL;
        WarpZone_Trace_InitTransform();
        WarpZone_tracetoss_time = 0;
        if(!warpzone_warpzones_exist)
@@ -397,7 +396,7 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
                if(--i < 1)
                {
                        LOG_TRACE("Too many warpzones in sequence, aborting trace.\n");
-                       trace_ent = world;
+                       trace_ent = NULL;
                        break;
                }
                tracetoss(e, WarpZone_trace_forent);
@@ -415,7 +414,7 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
                {
                        // FIXME can this check be removed? Do we really need it?
                        LOG_TRACE("I transformed into the same zone again, wtf, aborting the trace\n");
-                       trace_ent = world;
+                       trace_ent = NULL;
                        break;
                }
                wz = trace_ent;
@@ -450,7 +449,7 @@ LABEL(fail)
 
 void WarpZone_TraceToss(entity e, entity forent)
 {
-       WarpZone_TraceToss_ThroughZone(e, forent, world, WarpZone_trace_callback_t_null);
+       WarpZone_TraceToss_ThroughZone(e, forent, NULL, WarpZone_trace_callback_t_null);
 }
 
 entity WarpZone_TrailParticles_trace_callback_own;
@@ -464,7 +463,7 @@ void WarpZone_TrailParticles(entity own, float eff, vector org, vector end)
 {
        WarpZone_TrailParticles_trace_callback_own = own;
        WarpZone_TrailParticles_trace_callback_eff = eff;
-       WarpZone_TraceBox_ThroughZone(org, '0 0 0', '0 0 0', end, MOVE_NOMONSTERS, world, world, WarpZone_TrailParticles_trace_callback);
+       WarpZone_TraceBox_ThroughZone(org, '0 0 0', '0 0 0', end, MOVE_NOMONSTERS, NULL, NULL, WarpZone_TrailParticles_trace_callback);
 }
 
 #ifdef CSQC
@@ -481,7 +480,7 @@ void WarpZone_TrailParticles_WithMultiplier(entity own, float eff, vector org, v
        WarpZone_TrailParticles_trace_callback_eff = eff;
        WarpZone_TrailParticles_trace_callback_f = f;
        WarpZone_TrailParticles_trace_callback_flags = boxflags | PARTICLES_DRAWASTRAIL;
-       WarpZone_TraceBox_ThroughZone(org, '0 0 0', '0 0 0', end, MOVE_NOMONSTERS, world, world, WarpZone_TrailParticles_WithMultiplier_trace_callback);
+       WarpZone_TraceBox_ThroughZone(org, '0 0 0', '0 0 0', end, MOVE_NOMONSTERS, NULL, NULL, WarpZone_TrailParticles_WithMultiplier_trace_callback);
 }
 #endif
 
@@ -667,8 +666,8 @@ entity WarpZone_FindRadius(vector org, float rad, bool needlineofsight)
 }
 
 .entity WarpZone_refsys;
-void WarpZone_RefSys_GC()
-{SELFPARAM();
+void WarpZone_RefSys_GC(entity this)
+{
        // garbage collect unused reference systems
        this.nextthink = time + 1;
        if(this.owner.WarpZone_refsys != this)
@@ -680,7 +679,7 @@ void WarpZone_RefSys_CheckCreate(entity me)
        {
                me.WarpZone_refsys = new(warpzone_refsys);
                me.WarpZone_refsys.owner = me;
-               me.WarpZone_refsys.think = WarpZone_RefSys_GC;
+               setthink(me.WarpZone_refsys, WarpZone_RefSys_GC);
                me.WarpZone_refsys.nextthink = time + 1;
                WarpZone_Accumulator_Clear(me.WarpZone_refsys);
        }
@@ -690,7 +689,7 @@ void WarpZone_RefSys_Clear(entity me)
        if(me.WarpZone_refsys)
        {
                remove(me.WarpZone_refsys);
-               me.WarpZone_refsys = world;
+               me.WarpZone_refsys = NULL;
        }
 }
 void WarpZone_RefSys_AddTransform(entity me, vector t, vector s)
@@ -786,9 +785,9 @@ entity WarpZone_RefSys_SpawnSameRefSys(entity me)
        return e;
 }
 
-float WarpZoneLib_ExactTrigger_Touch()
-{SELFPARAM();
-       return !WarpZoneLib_BoxTouchesBrush(other.absmin, other.absmax, this, other);
+float WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher)
+{
+       return !WarpZoneLib_BoxTouchesBrush(toucher.absmin, toucher.absmax, this, toucher);
 }
 
 
@@ -802,7 +801,7 @@ void WarpZoneLib_MoveOutOfSolid_Expand(entity e, vector by)
        {
                // hit something
                // adjust origin in the other direction...
-               setorigin(e,e.origin - by * (1 - trace_fraction));
+               setorigin(e, e.origin - by * (1 - trace_fraction));
        }
 }