本文整理汇总了C#中OpenSim.Region.Framework.Scenes.SceneObjectPart.IsBallJoint方法的典型用法代码示例。如果您正苦于以下问题:C# SceneObjectPart.IsBallJoint方法的具体用法?C# SceneObjectPart.IsBallJoint怎么用?C# SceneObjectPart.IsBallJoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.SceneObjectPart
的用法示例。
在下文中一共展示了SceneObjectPart.IsBallJoint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: jointCreate
public void jointCreate(SceneObjectPart part)
{
// by turning a joint proxy object physical, we cause creation of a joint in the ODE scene.
// note that, as a special case, joints have no bodies or geoms in the physics scene, even though they are physical.
PhysicsJointType jointType;
if (part.IsHingeJoint())
{
jointType = PhysicsJointType.Hinge;
}
else if (part.IsBallJoint())
{
jointType = PhysicsJointType.Ball;
}
else
{
jointType = PhysicsJointType.Ball;
}
List<string> bodyNames = new List<string>();
string RawParams = part.Description;
string[] jointParams = RawParams.Split(" ".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
string trackedBodyName = null;
if (jointParams.Length >= 2)
{
for (int iBodyName = 0; iBodyName < 2; iBodyName++)
{
string bodyName = jointParams[iBodyName];
bodyNames.Add(bodyName);
if (bodyName != "NULL")
{
if (trackedBodyName == null)
{
trackedBodyName = bodyName;
}
}
}
}
SceneObjectPart trackedBody = GetSceneObjectPart(trackedBodyName); // FIXME: causes a sequential lookup
Quaternion localRotation = Quaternion.Identity;
if (trackedBody != null)
{
localRotation = Quaternion.Inverse(trackedBody.RotationOffset) * part.RotationOffset;
}
else
{
// error, output it below
}
PhysicsJoint joint;
joint = m_scene.PhysicsScene.RequestJointCreation(part.Name, jointType,
part.AbsolutePosition,
part.RotationOffset,
part.Description,
bodyNames,
trackedBodyName,
localRotation);
if (trackedBody == null)
{
jointErrorMessage(joint, "warning: tracked body name not found! joint location will not be updated properly. joint: " + part.Name);
}
}