hkpRigidBody Property

hkpRigidBody에 게임에 사용하기 위한 속성을 추가 할 수 있다.
추가 할 수 있는 속성의 데이터 타입은 int, 64비트 uint, float, 포인터이다.

1. 속성 추가 하기

첫 번째 인자는 std::map의 키와 같은 역할을 하며, 두 번째 인자는 값이다.
게임에서 오브젝트 ID를 추가후  충돌 했을 때 ID를 얻어 올수 있는 상당히 유용한 기능이다.

    #define UID_WALL_PROPERTY 0x100000

 

    hkpRigidBody* pRigidBody = new hkpRigidBody( rigidBodyInfo );

    pRigidBody->addProperty( UID_WALL_PROPERTY, 7 );

 

2. 속성 구하기

CheckContactPoint( ) 함수에서 충돌시 충돌 벽면의 UI_WALL_PROPERTY가 있는지 체크 후 UID를 구한다.

    hkpRigidBody* rb = hkpGetRigidBody( collisionEntries[i].m_partner );

    if( rb->hasProperty( UID_WALL_PROPERTY ) )

        nUid = rb->getProperty( UID_WALL_PROPERTY ).getInt();

구할려는 데이터 형에 따라 다음과 같은 함수를 호출 한다.

구할려는 값이 int이면 getInt( )
구할려는 값이 float이면 getReal( )
구할려는 값이 64비트 uint이면 getUint64( )
구할려는 값이 포인터이면 getPtr( )

hkpCharacterRigidBody의 hkpRigidBody에도 똑같이 적용 할 수 있다.

프로젝트:   havok_property.zip