Merge pull request #2161 from crewmatt/master
Adds a timestamp as a physics parameter.
This commit is contained in:
@@ -1082,7 +1082,7 @@ B3_SHARED_API int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemor
|
||||
int numLinks = status->m_sendActualStateArgs.m_numLinks;
|
||||
b3Assert(linkIndex < numLinks);
|
||||
|
||||
if ((bodyIndex >= 0) && (linkIndex >= 0) && linkIndex < numLinks)
|
||||
if (status->m_sendActualStateArgs.m_stateDetails != NULL && (bodyIndex >= 0) && (linkIndex >= 0) && linkIndex < numLinks)
|
||||
{
|
||||
b3Transform wlf, com, inertial;
|
||||
|
||||
|
||||
@@ -1613,6 +1613,7 @@ struct PhysicsServerCommandProcessorInternalData
|
||||
|
||||
btScalar m_physicsDeltaTime;
|
||||
btScalar m_numSimulationSubSteps;
|
||||
btScalar m_simulationTimestamp;
|
||||
btAlignedObjectArray<btMultiBodyJointFeedback*> m_multiBodyJointFeedbacks;
|
||||
b3HashMap<btHashPtr, btInverseDynamics::MultiBodyTree*> m_inverseDynamicsBodies;
|
||||
b3HashMap<btHashPtr, IKTrajectoryHelper*> m_inverseKinematicsHelpers;
|
||||
@@ -7608,10 +7609,12 @@ bool PhysicsServerCommandProcessor::processForwardDynamicsCommand(const struct S
|
||||
if (m_data->m_numSimulationSubSteps > 0)
|
||||
{
|
||||
numSteps = m_data->m_dynamicsWorld->stepSimulation(deltaTimeScaled, m_data->m_numSimulationSubSteps, m_data->m_physicsDeltaTime / m_data->m_numSimulationSubSteps);
|
||||
m_data->m_simulationTimestamp += deltaTimeScaled;
|
||||
}
|
||||
else
|
||||
{
|
||||
numSteps = m_data->m_dynamicsWorld->stepSimulation(deltaTimeScaled, 0);
|
||||
m_data->m_simulationTimestamp += deltaTimeScaled;
|
||||
}
|
||||
|
||||
if (numSteps > 0)
|
||||
@@ -8161,6 +8164,7 @@ bool PhysicsServerCommandProcessor::processRequestPhysicsSimulationParametersCom
|
||||
serverCmd.m_simulationParameterResultArgs.m_allowedCcdPenetration = m_data->m_dynamicsWorld->getDispatchInfo().m_allowedCcdPenetration;
|
||||
serverCmd.m_simulationParameterResultArgs.m_collisionFilterMode = m_data->m_broadphaseCollisionFilterCallback->m_filterMode;
|
||||
serverCmd.m_simulationParameterResultArgs.m_deltaTime = m_data->m_physicsDeltaTime;
|
||||
serverCmd.m_simulationParameterResultArgs.m_simulationTimestamp = m_data->m_simulationTimestamp;
|
||||
serverCmd.m_simulationParameterResultArgs.m_contactBreakingThreshold = gContactBreakingThreshold;
|
||||
serverCmd.m_simulationParameterResultArgs.m_contactSlop = m_data->m_dynamicsWorld->getSolverInfo().m_linearSlop;
|
||||
serverCmd.m_simulationParameterResultArgs.m_enableSAT = m_data->m_dynamicsWorld->getDispatchInfo().m_enableSatConvex;
|
||||
@@ -11718,7 +11722,9 @@ void PhysicsServerCommandProcessor::stepSimulationRealTime(double dtInSec, const
|
||||
gSubStep = m_data->m_physicsDeltaTime;
|
||||
}
|
||||
|
||||
int numSteps = m_data->m_dynamicsWorld->stepSimulation(dtInSec * simTimeScalingFactor, maxSteps, gSubStep);
|
||||
btScalar deltaTimeScaled = dtInSec * simTimeScalingFactor;
|
||||
int numSteps = m_data->m_dynamicsWorld->stepSimulation(deltaTimeScaled, maxSteps, gSubStep);
|
||||
m_data->m_simulationTimestamp += deltaTimeScaled;
|
||||
gDroppedSimulationSteps += numSteps > maxSteps ? numSteps - maxSteps : 0;
|
||||
|
||||
if (numSteps)
|
||||
@@ -11797,7 +11803,8 @@ void PhysicsServerCommandProcessor::resetSimulation()
|
||||
{
|
||||
//clean up all data
|
||||
|
||||
m_data->m_cachedVUrdfisualShapes.clear();
|
||||
m_data->m_simulationTimestamp = 0;
|
||||
m_data->m_cachedVUrdfisualShapes.clear();
|
||||
|
||||
#ifndef SKIP_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
|
||||
if (m_data && m_data->m_dynamicsWorld)
|
||||
|
||||
@@ -900,6 +900,7 @@ struct b3PluginArguments
|
||||
struct b3PhysicsSimulationParameters
|
||||
{
|
||||
double m_deltaTime;
|
||||
double m_simulationTimestamp; // Output only timestamp of simulation.
|
||||
double m_gravityAcceleration[3];
|
||||
int m_numSimulationSubSteps;
|
||||
int m_numSolverIterations;
|
||||
|
||||
Reference in New Issue
Block a user