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


C# HkRigidBody.GetRigidBodyMatrix方法代码示例

本文整理汇总了C#中HkRigidBody.GetRigidBodyMatrix方法的典型用法代码示例。如果您正苦于以下问题:C# HkRigidBody.GetRigidBodyMatrix方法的具体用法?C# HkRigidBody.GetRigidBodyMatrix怎么用?C# HkRigidBody.GetRigidBodyMatrix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在HkRigidBody的用法示例。


在下文中一共展示了HkRigidBody.GetRigidBodyMatrix方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetGridPosition

 private static Vector3 GetGridPosition(HkContactPoint contactPoint, HkRigidBody gridBody, MyCubeGrid grid, int body)
 {
     var position = contactPoint.Position + (body == 0 ? 0.1f : -0.1f) * contactPoint.Normal;
     var local = Vector3.Transform(position, Matrix.Invert(gridBody.GetRigidBodyMatrix()));
     return local;
 }
开发者ID:2asoft,项目名称:SpaceEngineers,代码行数:6,代码来源:MyGridPhysics.cs

示例2: OnMotion

        /// <summary>
        /// Called when [motion].
        /// </summary>
        /// <param name="rbo">The rbo.</param>
        /// <param name="step">The step.</param>
        public virtual void OnMotion(HkRigidBody rbo, float step)
        {
            if (Entity == null)
                return;

            if (this.Flags == RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONSE)
            {
                return;
            }

            if (IsPhantom)
            {
                return;
            }

            ProfilerShort.Begin(RigidBody2 != null ? "Double kinematic" : "Normal");

            ProfilerShort.Begin("Update acceleration");
            if (CanUpdateAccelerations)
                UpdateAccelerations();
            ProfilerShort.End();

            if (RigidBody2 != null && rbo == RigidBody)
            {
                // To prevent disconnect movement between dynamic and kinematic
                // Setting motion to prevent body activation (we don't want to activate kinematic body)
                ProfilerShort.Begin("Set doubled body");
                RigidBody2.Motion.SetWorldMatrix(rbo.GetRigidBodyMatrix());
                ProfilerShort.End();
            }

            if (LinearVelocity.LengthSquared() > 0.000005f || AngularVelocity.LengthSquared() > 0.000005f)
            {
                ProfilerShort.Begin("GetWorldMatrix");
                var matrix = GetWorldMatrix();
                ProfilerShort.End();

                ProfilerShort.Begin("SetWorldMatrix");
                this.Entity.PositionComp.SetWorldMatrix(matrix, this);
                ProfilerShort.End();
            }

            ProfilerShort.Begin("UpdateCluster");
            UpdateCluster();
            ProfilerShort.End();

            ProfilerShort.End();
        }
开发者ID:leandro1129,项目名称:SpaceEngineers,代码行数:53,代码来源:MyPhysicsBody.cs

示例3: OnMotion

        /// <summary>
        /// Called when [motion].
        /// </summary>
        /// <param name="rbo">The rbo.</param>
        /// <param name="step">The step.</param>
        public virtual void OnMotion(HkRigidBody rbo, float step)
        {
            if (rbo == RigidBody2)
                return;
            Debug.Assert(rbo == RigidBody);

            foreach(var child in WeldInfo.Children)
            {
                child.OnMotion(rbo, step);
            }

            if (Entity == null)
                return;

            if (Entity.Parent != null)//Parent should take care of moving children
                return;

            if (this.Flags == RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONSE)
            {
                return;
            }

            if (IsPhantom)
            {
                return;
            }

            ProfilerShort.Begin(RigidBody2 != null ? "Double kinematic" : "Normal");

            ProfilerShort.Begin("Update acceleration");
            if (CanUpdateAccelerations)
                UpdateAccelerations();
            ProfilerShort.End();

            if (RigidBody2 != null)
            {
                // To prevent disconnect movement between dynamic and kinematic
                // Setting motion to prevent body activation (we don't want to activate kinematic body)
                ProfilerShort.Begin("Set doubled body");
                RigidBody2.Motion.SetWorldMatrix(rbo.GetRigidBodyMatrix());
                ProfilerShort.End();
            }
            const int MaxIgnoredMovements = 5;
            const float MinVelocitySq = 0.00000001f;
            m_motionCounter++;
            if (m_motionCounter > MaxIgnoredMovements ||
                LinearVelocity.LengthSquared() > MinVelocitySq || AngularVelocity.LengthSquared() > MinVelocitySq)
            {
                ProfilerShort.Begin("GetWorldMatrix");
                var matrix = GetWorldMatrix();
                ProfilerShort.End();

                ProfilerShort.Begin("SetWorldMatrix");
                this.Entity.PositionComp.SetWorldMatrix(matrix, this, true);
                ProfilerShort.End();
                m_motionCounter = 0;
            }

            ProfilerShort.Begin("UpdateCluster");
            if(WeldInfo.Parent == null)
                UpdateCluster();
            ProfilerShort.End();

            ProfilerShort.End();
        }
开发者ID:stanhebben,项目名称:SpaceEngineers,代码行数:70,代码来源:MyPhysicsBody.cs


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