private void SpawnInMedicalRoom(MyPlayer player, MyMedicalRoom medical, bool joiningGame) { if (MySession.Static.Settings.EnableOxygen) { player.Identity.ChangeToOxygenSafeSuit(); } if (medical.HasSpawnPosition()) { Matrix matrix = medical.GetSpawnPosition(); player.SpawnAt(matrix, medical.Parent.Physics.LinearVelocity, false); medical.TryTakeSpawneeOwnership(player); } else if (joiningGame) { Vector3 medicalPosition = medical.PositionComp.GetPosition(); medicalPosition += -medical.WorldMatrix.Up + medical.WorldMatrix.Right; Matrix matrix = medical.WorldMatrix; matrix.Translation = medicalPosition; player.SpawnAt(matrix, medical.Parent.Physics.LinearVelocity); } else { Matrix invWorldRot = Matrix.Invert(medical.WorldMatrix.GetOrientation()); Vector3 relativeVelocity = Vector3.Transform(medical.Parent.Physics.LinearVelocity, invWorldRot); player.SpawnAtRelative(medical, MyMedicalRoom.GetSafePlaceRelative(), relativeVelocity); } }