internal RigidBodyPatch(Rigidbody rigidbody, Transform sceneRoot) { // Do not include Position or Rotation in the patch. Velocity = new Vector3Patch(sceneRoot.InverseTransformDirection(rigidbody.velocity)); AngularVelocity = new Vector3Patch(sceneRoot.InverseTransformDirection(rigidbody.angularVelocity)); 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 RigidBodyPatch(RigidBody rigidbody, Spatial sceneRoot) { // Do not include Position or Rotation in the patch. Velocity = new Vector3Patch(sceneRoot.ToLocal(rigidbody.LinearVelocity)); AngularVelocity = new Vector3Patch(sceneRoot.ToLocal(rigidbody.AngularVelocity)); Mass = rigidbody.Mass; DetectCollisions = !rigidbody.GetChild <CollisionShape>().Disabled; CollisionDetectionMode = rigidbody.ContinuousCd switch { true => MRECollisionDetectionMode.Continuous, false => MRECollisionDetectionMode.Discrete }; UseGravity = !Mathf.IsZeroApprox(rigidbody.GravityScale); ConstraintFlags = rigidbody.GetMRERigidBodyConstraints(); } }
internal TransformPatch(MWVector3 position, MWQuaternion rotation, MWVector3 scale) { this.Position = new Vector3Patch(position); this.Rotation = new QuaternionPatch(rotation); this.Scale = new Vector3Patch(scale); }
internal ScaledTransformPatch(MWVector3 position, MWQuaternion rotation, MWVector3 scale) : base(position, rotation) { this.Scale = new Vector3Patch(scale); }