더북(TheBook)

이대로라면 3 × 4 = 12바이트를 써야 RoboCatmPosition을 네트워크로 전송할 수 있다. 하지만 이 코드는 고양이가 대부분의 경우 지면에 붙어있을 가능성이 크다는 지식을 활용하지 못하고 있다. 무슨 말이냐면 3D 벡터 mPositionY 좌표가 보통은 0이라는 사실이다. 코드를 고치면 비트 하나에 mPosition이 보통의 값인 0인지, 아니면 다른 값인지 표시할 수 있다.

void OutputMemoryBitStream::WritePos(const Vector3& inVector)
{
    Write(inVector.mX);
    Write(inVector.mZ);
 
    if (inVector.mY == 0)
    {
        Write(true);
    }
    else
    {
        Write(false);
        Write(inVector.mY);
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.