mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-16 11:06:06 -04:00
Fix solid tiles not slowing down the player. (Thanks 123DontMessWitMe)
This commit is contained in:
parent
f03182a91b
commit
4bac8359aa
@ -186,19 +186,22 @@ namespace ClassicalSharp {
|
|||||||
return multiply;
|
return multiply;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const float inf = float.PositiveInfinity;
|
||||||
float LowestSpeedModifier() {
|
float LowestSpeedModifier() {
|
||||||
BoundingBox bounds = CollisionBounds;
|
BoundingBox bounds = CollisionBounds;
|
||||||
useLiquidGravity = false;
|
useLiquidGravity = false;
|
||||||
float baseModifier = LowestModifier( bounds, false );
|
float baseModifier = LowestModifier( bounds, false );
|
||||||
bounds.Min.Y -= 0.1f; // also check block standing on
|
bounds.Min.Y -= 0.1f; // also check block standing on
|
||||||
float solidModifier = LowestModifier( bounds, true );
|
float solidModifier = LowestModifier( bounds, true );
|
||||||
return Math.Max( baseModifier, solidModifier );
|
|
||||||
|
if( baseModifier == inf && solidModifier == inf ) return 1;
|
||||||
|
return baseModifier == inf ? solidModifier : baseModifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
float LowestModifier( BoundingBox bounds, bool checkSolid ) {
|
float LowestModifier( BoundingBox bounds, bool checkSolid ) {
|
||||||
Vector3I bbMin = Vector3I.Floor( bounds.Min );
|
Vector3I bbMin = Vector3I.Floor( bounds.Min );
|
||||||
Vector3I bbMax = Vector3I.Floor( bounds.Max );
|
Vector3I bbMax = Vector3I.Floor( bounds.Max );
|
||||||
float modifier = float.PositiveInfinity;
|
float modifier = inf;
|
||||||
|
|
||||||
for( int y = bbMin.Y; y <= bbMax.Y; y++ )
|
for( int y = bbMin.Y; y <= bbMax.Y; y++ )
|
||||||
for( int z = bbMin.Z; z <= bbMax.Z; z++ )
|
for( int z = bbMin.Z; z <= bbMax.Z; z++ )
|
||||||
@ -219,7 +222,7 @@ namespace ClassicalSharp {
|
|||||||
if( block >= BlockInfo.CpeBlocksCount && type == BlockCollideType.SwimThrough )
|
if( block >= BlockInfo.CpeBlocksCount && type == BlockCollideType.SwimThrough )
|
||||||
useLiquidGravity = true;
|
useLiquidGravity = true;
|
||||||
}
|
}
|
||||||
return modifier == float.PositiveInfinity ? 1 : modifier;
|
return modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Calculates the jump velocity required such that when a client presses
|
/// <summary> Calculates the jump velocity required such that when a client presses
|
||||||
|
Loading…
x
Reference in New Issue
Block a user