当前位置: 首页>>代码示例>>C#>>正文


C# SceneObjectPart.IsBallJoint方法代码示例

本文整理汇总了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);
            }
        }
开发者ID:kow,项目名称:Aurora-Sim,代码行数:65,代码来源:NinjaPhysicsModule.cs


注:本文中的OpenSim.Region.Framework.Scenes.SceneObjectPart.IsBallJoint方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。