From: Jakob MG Date: Mon, 4 Apr 2011 02:49:55 +0000 (+0200) Subject: Stop using vehicles_customizeentityforclient, its expensive. (lets see how much break... X-Git-Tag: xonotic-v0.5.0~199^2~11^2~83^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=5dea8b646ad7220a5d4ae5aa5c26afadbf46c031;p=xonotic%2Fxonotic-data.pk3dir.git Stop using vehicles_customizeentityforclient, its expensive. (lets see how much breaks =). Fix angles overflow for raptor rotors. Stop player fierinf weapons from inside vehicle while raptor is taking off. Dont apply friction to racer's z-velocity - its upwards speed is handeld elsewhere (not perfect but better) --- diff --git a/qcsrc/server/vehicles/racer.qc b/qcsrc/server/vehicles/racer.qc index b484fc76d..453f0fa59 100644 --- a/qcsrc/server/vehicles/racer.qc +++ b/qcsrc/server/vehicles/racer.qc @@ -334,8 +334,10 @@ float racer_frame() racer.angles_x *= -1; #endif + ftmp = racer.velocity_z; df = racer.velocity * -autocvar_g_vehicle_racer_friction; - + racer.velocity_z = ftmp; + if(player.movement_x != 0) { if(player.movement_x > 0) @@ -619,8 +621,8 @@ void racer_dinit() // FIXME: this be hakkz, fix the models insted (scale body, add tag_viewport to the hudmodel). self.scale = 0.5; - //setattachment(self.vehicle_hudmodel, self, ""); - //setattachment(self.vehicle_viewport, self, "tag_viewport"); + setattachment(self.vehicle_hudmodel, self, ""); + setattachment(self.vehicle_viewport, self, "tag_viewport"); self.mass = 900; } diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index f1b7e8612..72511c964 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -279,6 +279,7 @@ float raptor_takeoff() else player.PlayerPhysplug = raptor_frame; + player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0; self = player; return 1; } @@ -605,6 +606,15 @@ void raptor_spawn() self.delay = time; } +// If we dont do this ever now and then, the raptors rotors +// stop working, presumably due to angle overflow. cute. +void raptor_rotor_anglefix() +{ + self.gun1.angles_y = anglemods(self.gun1.angles_y); + self.gun2.angles_y = anglemods(self.gun2.angles_y); + self.nextthink = time + 15; +} + void raptor_dinit() { entity spinner; @@ -687,7 +697,11 @@ void raptor_dinit() spinner.movetype = MOVETYPE_NOCLIP; spinner.avelocity = '0 -90 0'; self.bomb1.gun2 = spinner; - + + // Sigh. + self.bomb1.think = raptor_rotor_anglefix; + self.bomb1.nextthink = time; + self.mass = 1 ; } diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index ba7f9a0ec..7dd30dca5 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -273,6 +273,7 @@ void vehicles_spawn() // De-own & reset self.vehicle_hudmodel.viewmodelforclient = self; + self.owner = world; self.touch = vehicles_touch; self.event_damage = vehicles_damage; @@ -375,8 +376,12 @@ void vehicles_enter() self.owner = other; self.switchweapon = other.switchweapon; + + // .viewmodelforclient works better. + //self.vehicle_hudmodel.drawonlytoclient = self.owner; - self.vehicle_hudmodel.viewmodelforclient = self.owner; + self.vehicle_hudmodel.viewmodelforclient = self.owner; + self.event_damage = vehicles_damage; self.nextthink = 0; self.owner.angles = self.angles; @@ -470,7 +475,7 @@ void vehicles_exit(float eject) self.avelocity = '0 0 0'; self.vehicle_hudmodel.viewmodelforclient = self; - self.tur_head.nodrawtoclient = self; + self.tur_head.nodrawtoclient = world; vehicles_setreturn(); self.phase = time + 1; @@ -754,7 +759,7 @@ float vehicle_initialize(string net_name, self.iscreature = TRUE; self.hud = vhud; - self.customizeentityforclient = vehicles_customizeentityforclient; + //self.customizeentityforclient = vehicles_customizeentityforclient; self.vehicle_die = dieproc; self.vehicle_exit = exitfunc; self.vehicle_enter = enterproc; @@ -797,7 +802,8 @@ float vehicle_initialize(string net_name, tracebox(self.origin + '0 0 100', min_s, max_s, self.origin - '0 0 10000', MOVE_WORLDONLY, self); setorigin(self, trace_endpos); } - + + //self.vehicle_hudmodel.effects = EF_NODEPTHTEST; self.pos1 = self.origin; self.pos2 = self.angles;