Example #1
0
 internal void Update(Rigidbody rigidbody)
 {
     // No need to read Position or Rotation. They're write-only from the patch to the component.
     Velocity               = _sceneRoot.InverseTransformDirection(rigidbody.velocity).ToMWVector3();
     AngularVelocity        = _sceneRoot.InverseTransformDirection(rigidbody.angularVelocity).ToMWVector3();
     Mass                   = rigidbody.mass;
     DetectCollisions       = rigidbody.detectCollisions;
     CollisionDetectionMode = (MRECollisionDetectionMode)Enum.Parse(typeof(MRECollisionDetectionMode), rigidbody.collisionDetectionMode.ToString());
     UseGravity             = rigidbody.useGravity;
     ConstraintFlags        = (MRERigidBodyConstraints)Enum.Parse(typeof(MRERigidBodyConstraints), rigidbody.constraints.ToString());
 }
        internal void Update(GodotRigidBody rigidbody)
        {
            Velocity.FromGodotVector3(_sceneRoot.ToLocal(rigidbody.LinearVelocity));
            AngularVelocity.FromGodotVector3(_sceneRoot.ToLocal(rigidbody.AngularVelocity));

            // No need to read Position or Rotation. They're write-only from the patch to the component.
            Mass                   = rigidbody.Mass;
            DetectCollisions       = !rigidbody.GetChild <CollisionShape>()?.Disabled ?? false;
            CollisionDetectionMode = rigidbody.ContinuousCd switch
            {
                true => MRECollisionDetectionMode.Continuous,
                false => MRECollisionDetectionMode.Discrete
            };
            UseGravity      = !Mathf.IsZeroApprox(rigidbody.GravityScale);
            ConstraintFlags = rigidbody.GetMRERigidBodyConstraints();
        }