本文整理汇总了C#中Aurora.Physics.AuroraOpenDynamicsEngine.AuroraODEPrim.RequestPhysicsterseUpdate方法的典型用法代码示例。如果您正苦于以下问题:C# AuroraODEPrim.RequestPhysicsterseUpdate方法的具体用法?C# AuroraODEPrim.RequestPhysicsterseUpdate怎么用?C# AuroraODEPrim.RequestPhysicsterseUpdate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Aurora.Physics.AuroraOpenDynamicsEngine.AuroraODEPrim
的用法示例。
在下文中一共展示了AuroraODEPrim.RequestPhysicsterseUpdate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Step
internal void Step(IntPtr pBody, float pTimestep, AuroraODEPhysicsScene pParentScene, AuroraODEPrim parent)
{
m_body = pBody;
if (pBody == IntPtr.Zero || m_type == Vehicle.TYPE_NONE)
return;
if (!d.BodyIsEnabled(Body))
d.BodyEnable(Body);
frcount++; // used to limit debug comment output
if (frcount > 100)
frcount = 0;
MoveLinear(pTimestep, pParentScene);
MoveAngular(pTimestep, pParentScene);
LimitRotation(pTimestep);
/*if (!parent.m_angularlock.ApproxEquals(Vector3.One, 0.003f) &&
parent.Amotor != IntPtr.Zero)
{
d.JointSetAMotorParam(Amotor, (int)dParam.LowStop, -0f);
d.JointSetAMotorParam(Amotor, (int)dParam.LoStop3, -0f);
d.JointSetAMotorParam(Amotor, (int)dParam.LoStop2, -0f);
d.JointSetAMotorParam(Amotor, (int)dParam.HiStop, 0f);
d.JointSetAMotorParam(Amotor, (int)dParam.HiStop3, 0f);
d.JointSetAMotorParam(Amotor, (int)dParam.HiStop2, 0f);
d.JointSetAMotorParam(Amotor, (int)dParam.Vel, 9000f);
d.JointSetAMotorParam(Amotor, (int)dParam.FudgeFactor, 0f);
d.JointSetAMotorParam(Amotor, (int)dParam.FMax, int.MaxValue);
d.Vector3 avel2 = d.BodyGetAngularVel(Body);
if (parent.m_angularlock.X == 0)
avel2.X = 0;
if (parent.m_angularlock.Y == 0)
avel2.Y = 0;
if (parent.m_angularlock.Z == 0)
avel2.Z = 0;
d.BodySetAngularVel(Body, avel2.X, avel2.Y, avel2.Z);
d.BodySetAngularDamping(Body, 1);
d.BodySetTorque(Body, 0, 0, 0);
}*/
// WE deal with updates
parent.RequestPhysicsterseUpdate();
} // end Step
示例2: Step
internal void Step(IntPtr pBody, float pTimestep, AuroraODEPhysicsScene pParentScene, AuroraODEPrim parent)
{
m_body = pBody;
if (pBody == IntPtr.Zero || m_type == Vehicle.TYPE_NONE)
return;
if (!d.BodyIsEnabled(Body))
d.BodyEnable(Body);
frcount++; // used to limit debug comment output
if (frcount > 100)
frcount = 0;
MoveLinear(pTimestep, pParentScene);
MoveAngular(pTimestep, pParentScene);
LimitRotation(pTimestep);
// WE deal with updates
parent.RequestPhysicsterseUpdate();
} // end Step
示例3: SendUpdate
private void SendUpdate (AuroraODEPrim parent)
{
// WE deal with updates
if(m_linearZeroFlag && m_angularZeroFlag)
{
if(m_sentZeroFlag > 0)
{
parent.ForceSetVelocity(Vector3.Zero);
parent.ForceSetRotVelocity(Vector3.Zero);
m_sentZeroFlag--;
parent.RequestPhysicsterseUpdate();
}
}
else
{
if(!m_lastVelocity.ApproxEquals(parent.Velocity, 0.1f) ||
!m_lastAngVelocity.ApproxEquals(parent.RotationalVelocity, 0.1f))
{
m_lastVelocity = parent.Velocity;
m_lastAngVelocity = parent.RotationalVelocity;
m_sentZeroFlag = 5;
}
else
{
}
}
}