normalise physics plugins to return fps as (simulated time / requested simulation time). improved a bit old ode simulations per call math
parent
1434cb88fd
commit
ac4b2b2f50
|
@ -175,7 +175,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
|||
actor.Velocity = actorVelocity;
|
||||
}
|
||||
|
||||
return fps;
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
public override void GetResults()
|
||||
|
|
|
@ -710,7 +710,8 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
|||
// The physics engine returns the number of milliseconds it simulated this call.
|
||||
// These are summed and normalized to one second and divided by 1000 to give the reported physics FPS.
|
||||
// Multiply by a fixed nominal frame rate to give a rate similar to the simulator (usually 55).
|
||||
m_simulatedTime += (float)numSubSteps * m_fixedTimeStep * 1000f * NominalFrameRate;
|
||||
// m_simulatedTime += (float)numSubSteps * m_fixedTimeStep * 1000f * NominalFrameRate;
|
||||
m_simulatedTime += (float)numSubSteps * m_fixedTimeStep * 1000f;
|
||||
}
|
||||
|
||||
// Called by a BSPhysObject to note that it has changed properties and this information
|
||||
|
@ -797,7 +798,8 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
|||
|
||||
// Return the framerate simulated to give the above returned results.
|
||||
// (Race condition here but this is just bookkeeping so rare mistakes do not merit a lock).
|
||||
float simTime = m_simulatedTime;
|
||||
// undo math above
|
||||
float simTime = m_simulatedTime / timeStep;
|
||||
m_simulatedTime = 0f;
|
||||
return simTime;
|
||||
}
|
||||
|
|
|
@ -1668,11 +1668,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
#region Add/Remove Entities
|
||||
|
||||
public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 velocity, Vector3 size, bool isFlying)
|
||||
{
|
||||
return AddAvatar(avName, position, size, isFlying);
|
||||
}
|
||||
|
||||
public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 size, bool isFlying)
|
||||
{
|
||||
Vector3 pos;
|
||||
pos.X = position.X;
|
||||
|
@ -3163,7 +3158,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
} // end lock OdeLock
|
||||
|
||||
return fps * 1000.0f; //NB This is a FRAME COUNT, not a time! AND is divide by 1000 in SimStatusReporter!
|
||||
return fps * (float)ODE_STEPSIZE * 1000.0f / timeStep;
|
||||
} // end Simulate
|
||||
|
||||
public override void GetResults()
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -238,7 +238,7 @@ namespace OpenSim.Region.Physics.POSPlugin
|
|||
character._velocity.Z = (character.Position.Z - oldposZ)/timeStep;
|
||||
}
|
||||
}
|
||||
return fps;
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
public override void GetResults()
|
||||
|
|
|
@ -1224,16 +1224,13 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
|
||||
public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 velocity, Vector3 size, bool isFlying)
|
||||
{
|
||||
return AddAvatar(avName, position, size, isFlying);
|
||||
return null;
|
||||
}
|
||||
|
||||
public override PhysicsActor AddAvatar(uint localID, string avName, Vector3 position, Vector3 size, float feetOffset, bool isFlying)
|
||||
{
|
||||
Vector3 pos;
|
||||
pos.X = position.X;
|
||||
pos.Y = position.Y;
|
||||
pos.Z = position.Z;
|
||||
OdeCharacter newAv = new OdeCharacter(localID,avName, this, pos, size, feetOffset, avDensity, avMovementDivisorWalk, avMovementDivisorRun);
|
||||
OdeCharacter newAv = new OdeCharacter(localID, avName, this, position,
|
||||
size, feetOffset, avDensity, avMovementDivisorWalk, avMovementDivisorRun);
|
||||
newAv.Flying = isFlying;
|
||||
newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset;
|
||||
|
||||
|
@ -1863,9 +1860,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
m_lastframe = DateTime.UtcNow; // skip also the time lost
|
||||
}
|
||||
}
|
||||
|
||||
// return nodeframes * ODE_STEPSIZE; // return real simulated time
|
||||
return 1000 * nodeframes; // return steps for now * 1000 to keep core happy
|
||||
return (float)nodeframes * ODE_STEPSIZE / timeStep * 1000.0f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
Loading…
Reference in New Issue