Module dpmod: Change committed
havoc at icculus.org
havoc at icculus.org
Sun Jun 8 03:54:26 EDT 2003
Commiter : havoc
CVSROOT : /cvs/cvsroot/twilight
Module : dpmod
Commit time: 2003-06-08 07:54:26 UTC
Log message:
added support for swimming in halflife water entities
Modified files:
qc/halflife.qc qc/playermovement.qc
------=MIME.48a95662b6a25ded14d882d290755b40
Content-Type: text/plain; name="dpmod.20030608.075426.havoc.diff"
Content-Disposition: attachment; filename="dpmod.20030608.075426.havoc.diff"
Content-Transfer-Encoding: 8bit
Index: dpmod/qc/halflife.qc
diff -u dpmod/qc/halflife.qc:1.1.1.1 dpmod/qc/halflife.qc:1.2
--- dpmod/qc/halflife.qc:1.1.1.1 Thu Sep 19 15:08:21 2002
+++ dpmod/qc/halflife.qc Sun Jun 8 03:54:16 2003
@@ -4,6 +4,7 @@
.float pitch;
.float renderamt;
.float rendermode;
+.vector rendercolor;
void() info_node = {};
void() env_sound = {};
@@ -35,14 +36,42 @@
void() func_ladder_touch =
{
- if (other.classname != "player")
- return;
- other.ladder_time = time + 0.1;
+ if (other.classname != "player")
+ return;
+ other.ladder_time = time + 0.1;
+ other.ladder_entity = self;
};
void() func_ladder =
{
InitTrigger ();
- self.touch = func_ladder_touch;
+ self.touch = func_ladder_touch;
+};
+
+void() func_water =
+{
+ self.solid = SOLID_TRIGGER;
+ setmodel (self, self.model); // set size and link into world
+ self.touch = func_ladder_touch;
+};
+
+void() light_use;
+void() light_environment =
+{
+ if (!self.targetname)
+ {
+ // inert light
+ remove(self);
+ return;
+ }
+
+ if (self.style >= 32)
+ {
+ self.use = light_use;
+ if (self.spawnflags & 1)
+ lightstyle(self.style, "a");
+ else
+ lightstyle(self.style, "m");
+ }
};
Index: dpmod/qc/playermovement.qc
diff -u dpmod/qc/playermovement.qc:1.3 dpmod/qc/playermovement.qc:1.4
--- dpmod/qc/playermovement.qc:1.3 Sat Sep 28 02:23:01 2002
+++ dpmod/qc/playermovement.qc Sun Jun 8 03:54:16 2003
@@ -1,5 +1,6 @@
-float lastclientthink, sv_maxspeed, sv_friction, sv_accelerate, sv_stopspeed, sv_edgefriction;
+float lastclientthink, sv_maxspeed, sv_friction, sv_accelerate, sv_stopspeed, sv_edgefriction, sv_gravity;
.float ladder_time;
+.entity ladder_entity;
void() SV_PlayerPhysics =
{
@@ -16,6 +17,7 @@
sv_friction = cvar("sv_friction");
sv_accelerate = cvar("sv_accelerate");
sv_stopspeed = cvar("sv_stopspeed");
+ sv_gravity = cvar("sv_gravity");
}
if (self.punchangle != '0 0 0')
@@ -95,13 +97,45 @@
return;
}
- if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || time < self.ladder_time)
+ if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY)
{
- // noclipping, flying, or on a ladder
+ // noclipping or flying
self.velocity = self.velocity * (1 - frametime * sv_friction);
makevectors(self.v_angle);
//wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z;
wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z;
+ }
+ else if (time < self.ladder_time)
+ {
+ // on a func_ladder or swimming in func_water
+ self.velocity = self.velocity * (1 - frametime * sv_friction);
+ makevectors(self.v_angle);
+ //wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z;
+ wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z;
+ if (self.gravity)
+ self.velocity_z += self.gravity * sv_gravity * frametime;
+ else
+ self.velocity_z += sv_gravity * frametime;
+ if (self.ladder_entity.classname == "func_water")
+ {
+ f = vlen(wishvel);
+ if (f > self.ladder_entity.speed)
+ wishvel = wishvel * (self.ladder_entity.speed / f);
+
+ self.watertype = self.ladder_entity.skin;
+ f = self.ladder_entity.origin_z + self.ladder_entity.maxs_z;
+ if ((self.origin_z + self.view_ofs_z) < f)
+ self.waterlevel = 3;
+ else if ((self.origin_z + (self.mins_z + self.maxs_z) * 0.5) < f)
+ self.waterlevel = 2;
+ else if ((self.origin_z + self.mins_z + 1) < f)
+ self.waterlevel = 1;
+ else
+ {
+ self.waterlevel = 0;
+ self.watertype = CONTENT_EMPTY;
+ }
+ }
}
else if (self.flags & FL_ONGROUND)
{
More information about the twilight-commits
mailing list