void ClientRead(VRage.Library.Collections.BitStream stream) { uint timeStamp = stream.ReadUInt32(); m_lastRecievedTimeStamp = timeStamp; Vector3 serverLinearVelocity = stream.ReadVector3(); Vector3 serverAngularVelocity = stream.ReadVector3(); MyTimeStampValues? clientData = m_timestamp.GetTransform(timeStamp); if (clientData.HasValue) { Vector3D linearDelta = serverLinearVelocity / MyEntityPhysicsStateGroup.EffectiveSimulationRatio - clientData.Value.LinearVelocity; Entity.Physics.LinearVelocity += Vector3D.Round(linearDelta,2); Vector3D angularDelta = serverAngularVelocity / MyEntityPhysicsStateGroup.EffectiveSimulationRatio - clientData.Value.AngularVelocity; Entity.Physics.AngularVelocity += Vector3D.Round(angularDelta, 2); m_timestamp.UpdateDeltaVelocities(timeStamp, ref linearDelta, ref angularDelta); } bool isUpdate = stream.ReadBool(); if (isUpdate) { MyTransformD serverTransform = new MyTransformD(); serverTransform.Position = stream.ReadVector3D(); serverTransform.Rotation = stream.ReadQuaternion(); serverTransform.Rotation = Quaternion.Identity; CustomClientRead(timeStamp, ref serverTransform, stream); } }