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);
            }
        }