diff options
Diffstat (limited to 'src/engine/ragdoll.h')
| -rw-r--r-- | src/engine/ragdoll.h | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/engine/ragdoll.h b/src/engine/ragdoll.h index cf68c01..1e51c81 100644 --- a/src/engine/ragdoll.h +++ b/src/engine/ragdoll.h @@ -436,12 +436,10 @@ void ragdolldata::constrain() FVAR(ragdollbodyfric, 0, 0.95f, 1); FVAR(ragdollbodyfricscale, 0, 2, 10); -FVAR(ragdollwaterfric, 0, 0.85f, 1); FVAR(ragdollgroundfric, 0, 0.8f, 1); FVAR(ragdollairfric, 0, 0.996f, 1); FVAR(ragdollunstick, 0, 10, 1e3f); VAR(ragdollexpireoffset, 0, 1500, 30000); -VAR(ragdollwaterexpireoffset, 0, 3000, 30000); void ragdolldata::move(dynent *pl, float ts) { @@ -449,15 +447,7 @@ void ragdolldata::move(dynent *pl, float ts) if(collidemillis && lastmillis > collidemillis) return; int material = lookupmaterial(vec(center.x, center.y, center.z + radius/2)); - bool water = isliquid(material&MATF_VOLUME); - if(!pl->inwater && water) game::physicstrigger(pl, true, 0, -1, material&MATF_VOLUME); - else if(pl->inwater && !water) - { - material = lookupmaterial(center); - water = isliquid(material&MATF_VOLUME); - if(!water) game::physicstrigger(pl, true, 0, 1, pl->inwater); - } - pl->inwater = water ? material&MATF_VOLUME : MAT_AIR; + pl->inwater = MAT_AIR; calcrotfriction(); float tsfric = timestep ? ts/timestep : 1, @@ -468,8 +458,7 @@ void ragdolldata::move(dynent *pl, float ts) vert &v = verts[i]; vec dpos = vec(v.pos).sub(v.oldpos); dpos.z -= GRAVITY*ts*ts; - if(water) dpos.z += 0.25f*sinf(detrnd(size_t(this)+i, 360)*RAD + lastmillis/10000.0f*M_PI)*ts; - dpos.mul(pow((water ? ragdollwaterfric : 1.0f) * (v.collided ? ragdollgroundfric : airfric), ts*1000.0f/ragdolltimestepmin)*tsfric); + dpos.mul(pow(1.0f * (v.collided ? ragdollgroundfric : airfric), ts*1000.0f/ragdolltimestepmin)*tsfric); v.oldpos = v.pos; v.pos.add(dpos); } @@ -494,7 +483,7 @@ void ragdolldata::move(dynent *pl, float ts) if(collisions) { floating = 0; - if(!collidemillis) collidemillis = lastmillis + (water ? ragdollwaterexpireoffset : ragdollexpireoffset); + if(!collidemillis) collidemillis = lastmillis + ragdollexpireoffset; } else if(++floating > 1 && lastmillis < collidemillis) collidemillis = 0; |
