POS physics. tweaking stair-climbing which broke with my last change

afrisby
Brian McBee 2007-11-20 04:28:31 +00:00
parent 26909477fc
commit db3858c13a
1 changed files with 14 additions and 12 deletions

View File

@ -178,17 +178,8 @@ namespace OpenSim.Region.Physics.POSPlugin
} }
bool forcedZ = false; bool forcedZ = false;
character.Position.X = character.Position.X + (character._target_velocity.X * timeStep);
if (check_all_prims(character)) float terrainheight = _heightMap[(int)(character.Position.Y + (character._target_velocity.Y * timeStep)) * 256 + (int)(character.Position.X + (character._target_velocity.X * timeStep))];
{
character.Position.X = oldposX;
}
character.Position.Y = character.Position.Y + (character._target_velocity.Y * timeStep);
if (check_all_prims(character))
{
character.Position.Y = oldposY;
}
float terrainheight = _heightMap[(int)character.Position.Y * 256 + (int)character.Position.X];
if (character.Position.Z + (character._target_velocity.Z * timeStep) < terrainheight + 2) if (character.Position.Z + (character._target_velocity.Z * timeStep) < terrainheight + 2)
{ {
character.Position.Z = terrainheight + 1.0f; character.Position.Z = terrainheight + 1.0f;
@ -208,13 +199,24 @@ namespace OpenSim.Region.Physics.POSPlugin
character.Position.Z = oldposZ; // first try Z axis character.Position.Z = oldposZ; // first try Z axis
if (check_all_prims(character)) if (check_all_prims(character))
{ {
character.Position.Z = oldposZ + 0.4f; // try harder character.Position.Z = oldposZ + 0.5f; // try harder
} }
else else
{ {
forcedZ = true; forcedZ = true;
} }
} }
character.Position.X = character.Position.X + (character._target_velocity.X * timeStep);
if (check_all_prims(character))
{
character.Position.X = oldposX;
}
character.Position.Y = character.Position.Y + (character._target_velocity.Y * timeStep);
if (check_all_prims(character))
{
character.Position.Y = oldposY;
}
if (character.Position.Y < 0) if (character.Position.Y < 0)
{ {