public static void ApplyCubeState(Rigidbody rigidBody, NetworkInfo networkInfo, ref CubeState cubeState, ref Vector3 origin, bool smoothing = false) { if (networkInfo.IsHeldByPlayer()) { networkInfo.DetachCubeFromPlayer(); } if (cubeState.active) { if (rigidBody.IsSleeping()) { rigidBody.WakeUp(); } } if (!cubeState.active) { if (!rigidBody.IsSleeping()) { rigidBody.Sleep(); } } networkInfo.SetAuthorityIndex(cubeState.authorityIndex); networkInfo.SetAuthoritySequence(cubeState.authoritySequence); networkInfo.SetOwnershipSequence(cubeState.ownershipSequence); Vector3 position = new Vector3(cubeState.position_x, cubeState.position_y, cubeState.position_z) * 1.0f / Constants.UnitsPerMeter + origin; Quaternion rotation = SmallestThreeToQuaternion(cubeState.rotation_largest, cubeState.rotation_a, cubeState.rotation_b, cubeState.rotation_c); if (smoothing) { networkInfo.MoveWithSmoothing(position, rotation); } else { rigidBody.position = position; rigidBody.rotation = rotation; } rigidBody.velocity = new Vector3(cubeState.linear_velocity_x, cubeState.linear_velocity_y, cubeState.linear_velocity_z) * 1.0f / Constants.UnitsPerMeter; rigidBody.angularVelocity = new Vector3(cubeState.angular_velocity_x, cubeState.angular_velocity_y, cubeState.angular_velocity_z) * 1.0f / Constants.UnitsPerMeter; }