]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Attempt to implement untouch detection, but I didn't figure the correct maths yet...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 3 May 2010 01:03:47 +0000 (04:03 +0300)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 3 May 2010 01:03:47 +0000 (04:03 +0300)
qcsrc/server/g_triggers.qc

index fdcd0ad3e38b0bb7fb948b6c7397eca8c481cc95..1ef07d4904047691a19f4954a26f8eb5dde6fd2e 100644 (file)
@@ -533,7 +533,19 @@ void spawnfunc_trigger_heal()
 //
 //////////////////////////////////////////////////////////////
 
-.float triggergravitytime;
+.float triggergravity, triggergravitytime;
+.entity trigger_gravity_check;
+void trigger_gravity_check_think()
+{
+       if(self.owner.triggergravitytime < time + 0.1) // need to figure out a correct formula here
+       {
+               dprint("XXXXXXXXXXXXXXXXXXXXXXXXXX ");
+               self.owner.gravity = 0;
+               self.nextthink = self.owner.triggergravity = 0;
+               remove(self);
+       }
+}
+
 void trigger_gravity_touch()
 {
        if(sv_gravity != 800)
@@ -544,6 +556,15 @@ void trigger_gravity_touch()
                EXACTTRIGGER_TOUCH;
                other.triggergravitytime = time + 1;
 
+               if(!other.triggergravity)
+               {
+                       other.triggergravity = 1;
+                       other.trigger_gravity_check = spawn();
+                       other.trigger_gravity_check.owner = other;
+                       other.trigger_gravity_check.think = trigger_gravity_check_think;
+                       other.trigger_gravity_check.nextthink = time;
+               }
+
                if (other.gravity != self.gravity)
                {
                        other.gravity = self.gravity;