GroupFilter

MMORPG¿¡¼­´Â ¾ÆÁ÷±îÁö ij¸¯Åͳ¢¸®´Â Ãæµ¹ ¾ÈÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ÇϺ¹¿¡¼­ ij¸¯Åͳ¢¸®ÀÇ Ãæµ¹À» ¸·À»·Á¸é hkpGroupFilter¸¦ »ç¿ëÇÑ´Ù.

Ãæµ¹ ·¹À̾ Á¤ÇÏ´Â °ÍÀÌ´Ù.
µ¿ÀûÀÎ ¹Ú½º³¢¸® Ãæµ¹ ÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹Ú½ºÀÇ È¸Àü ¹æÇâÀÌ µ¿ÀÏÇÏ´Ù.

< ÇÊ¿äÇÑ Çì´õ ÆÄÀÏ°ú ·¹À̾î >

#include  <Physics/Collide/Filter/Group/hkpGroupFilter.h>

 

enum  COLLISION_LAYER

{

    LAYER_STATIC_BACKGROUND = 1,

    LAYER_ACTOR = 2,

};

MakeGround( )½Ã »ý¼ºµÇ´Â Á¤ÀûÀÎ ¹Ú½º¸¦ LAYER_STATIC_BACKGROUND ·¹À̾î·Î ¼ÂÆÃÇÏ°í MakeBox( )·Î »ý¼ºµÈ µ¿ÀûÀÎ ¹Ú½º¸¦ LAYER_ACTOR·Î ¼ÂÆÃÇÑ´Ù.

< ·¹ÀÌ¾î ¼³Á¤ >

bool  InitHavok()

{

    ..............

 

    // Replace filter

    hkpGroupFilter* groupFilter = new  hkpGroupFilter();

    groupFilter->disableCollisionsBetween( LAYER_ACTOR, LAYER_ACTOR );

 

    physicsWorld->setCollisionFilter( groupFilter, true );

    groupFilter->removeReference();

    return  true;

}

LAYER_ACTOR·Î ¼³Á¤µÈ Ã浹ü ³¢¸®´Â ¼­·Î Ãæµ¹ ÇÏÁö ¾Ê´Â´Ù.
m_collisionFilterInfo¿¡ Ãæµ¹ ·¹À̾ ¼ÂÆÃÇÑ´Ù.

bool  MakeGround()

{

    .........

    bodyInfo.m_collisionFilterInfo = LAYER_STATIC_BACKGROUND;

 

    g_groundBody = new  hkpRigidBody(bodyInfo);

    .........

}

 

bool MakeBox()

{

    .........

    bodyInfo.m_collisionFilterInfo = LAYER_ACTOR;

 

    int  i = 0;

    for( int x = 0; x < g_nx; x++ )

    .........

}

 

ÇÁ·ÎÁ§Æ® : havok_groupFilter.zip