Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)
- {
- /*
- if (m_pkHorse)
- {
- if (m_pkHorse->TestActorCollision(rVictim))
- return TRUE;
- return FALSE;
- }
- */
- if (rVictim.IsDead())
- return FALSE;
- #ifdef ENABLE_SAFEZONE_STOP_COLLISION
- if (IsInSafe(rVictim))
- return FALSE;
- #endif
- if (rVictim.GetActorType() == TYPE_NPC && rVictim.GetRace() == 3)
- return FALSE;
- #ifdef ENABLE_STOP_COLISSION_GLOBAL
- int pListPet[2] = {34001, 34030};
- int pListGlobal[] = {9001, 9002, 9003, 9004, 9005, 9006, 20011, 20091, 20092, 20093, 20094, 20095, 20111, 20112, 20113, 20114, 20115, 20116, 30000, 20117, 20221, 20222, 20123, 20118, 20231, 20119, 20120, 20101, 20102, 20103, 20104, 20105, 20106, 20107, 20108, 20109};
- const char* strMapListGlobal[] = {"metin2_map_a1", "metin2_map_a3", "metin2_map_b1", "metin2_map_b3", "metin2_map_c1", "metin2_map_c3",
- "season2/metin2_map_skipia_dungeon_01", "season2/metin2_map_skipia_dungeon_02", "season2/metin2_map_guild_inside01", "metin2_map_duel", "metin2_map_spiderdungeon", "metin2_map_spiderdungeon_02", "metin2_map_milgyo", "metin2_map_n_flame_01", "metin2_map_n_desert_01", "Metin2_map_CapeDragonHead", "metin2_map_Mt_Thunder", "metin2_map_dawnmistwood", "metin2_map_BayBlackSand", "santhia_kouzelny_dul", "metin2_map_demon_dungeon_2", "exemir_90", "exemir_180", "someya_monkey", "metin2_map_slz3", "23_1", "23_5x5_02", "metin2_map_deviltower1", "map_n_snowm_01", "metin2_map_trent", "metin2_map_trent02", "metin2_map_wedding_01"};
- const char* strMapEventOx = "season1/metin2_map_oxevent";
- std::string stringName = CPythonBackground::Instance().GetWarpMapName();
- for (int i = 0; i < _countof(strMapListGlobal); i++)
- {
- #ifdef ENABLE_STOP_COLLISION_PLAYER_OX
- if (strMapEventOx == stringName)
- {
- if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 7)
- return FALSE;
- }
- #endif
- if (strMapListGlobal[i] == stringName)
- {
- for (int i = 0; i < _countof(pListGlobal); i++)
- {
- if (rVictim.GetRace() == pListGlobal[i] || pListPet[0] <= rVictim.GetRace() && rVictim.GetRace() <= pListPet[1])
- return FALSE;
- }
- }
- }
- #endif
- // Check Distance
- // NOTE : Ŕű´çČ÷ ¸Ö¸é ĂĽĹ© ľČÇÔ
- // ÇÁ·ąŔÓ ˝şĹµ˝ĂłŞ ´ë»ó żŔşęÁ§Ć®ŔÇ Ĺ©±â°ˇ Ŭ°ćżě ą®Á¦°ˇ »ý±ć ż©Áö°ˇ ŔÖŔ˝
- // Äł¸ŻĹÍ°ˇ ŔÚ˝ĹŔÇ Body Sphere Radius ş¸´Ů ´ő Ĺ©°Ô Ŕ̵żÇß´ÂÁö¸¦ ĂĽĹ©ÇĎ°í,
- // ¸¸ľŕ ±×·¸Áö ľĘ´Ů¸é °Ĺ¸®·Î ĂĽĹ©ÇŘĽ °É·ŻÁŘ´Ů.
- D3DXVECTOR3 v3Distance = D3DXVECTOR3(rVictim.m_x - m_x, rVictim.m_y - m_y, rVictim.m_z - m_z);
- float fDistance = D3DXVec3LengthSq(&v3Distance);
- if (fDistance > 800.0f*800.0f)
- return FALSE;
- // NOTE : °ř°Ý ÁßŔ϶§´Â Defending Sphere·Î Collision Check¸¦ ÇŐ´Ď´Ů.
- // NOTE : Wait·Î şí·»µů µÇ´Â µµÁßżˇ ¶Ő°í µéľî°ˇ´Â ą®Á¦°ˇ ŔÖľîĽ.. - [levites]
- TCollisionPointInstanceList * pMainList;
- TCollisionPointInstanceList * pVictimList;
- if (isAttacking() || IsWaiting())
- {
- pMainList = &m_DefendingPointInstanceList;
- pVictimList = &rVictim.m_DefendingPointInstanceList;
- }
- else
- {
- pMainList = &m_BodyPointInstanceList;
- pVictimList = &rVictim.m_BodyPointInstanceList;
- }
- TCollisionPointInstanceListIterator itorMain = pMainList->begin();
- TCollisionPointInstanceListIterator itorVictim = pVictimList->begin();
- for (; itorMain != pMainList->end(); ++itorMain)
- for (; itorVictim != pVictimList->end(); ++itorVictim)
- {
- const CDynamicSphereInstanceVector & c_rMainSphereVector = (*itorMain).SphereInstanceVector;
- const CDynamicSphereInstanceVector & c_rVictimSphereVector = (*itorVictim).SphereInstanceVector;
- for (DWORD i = 0; i < c_rMainSphereVector.size(); ++i)
- for (DWORD j = 0; j < c_rVictimSphereVector.size(); ++j)
- {
- const CDynamicSphereInstance & c_rMainSphere = c_rMainSphereVector[i];
- const CDynamicSphereInstance & c_rVictimSphere = c_rVictimSphereVector[j];
- if (DetectCollisionDynamicSphereVSDynamicSphere(c_rMainSphere, c_rVictimSphere))
- {
- if (GetVector3Distance(c_rMainSphere.v3Position, c_rVictimSphere.v3Position) <=
- GetVector3Distance(c_rMainSphere.v3LastPosition, c_rVictimSphere.v3Position))
- {
- return TRUE;
- }
- return FALSE;
- }
- }
- }
- return FALSE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement