void CSfx::Process() { #ifdef _DEBUG if( m_dwIndex == XI_SKILL_MAG_FIRE_HOTAIR01 ) // 디버깅 하려면 이걸 바꿔 쓰세요. { int a = 0; } #endif m_nFrame++; if( m_nSec == 0 ) // 0은 1회 플레이후 종료. { if( m_pSfxObj->Process() ) // return true는 애니메이션 끝. Delete(); } else { // 반복 애니메이션 if( m_pSfxObj->Process() ) m_pSfxObj->m_nCurFrame = 0; if( m_nSec != -1 ) // 무한반복(-1)이 아니면 { if( m_nFrame > ( m_nSec * 60 ) ) // 시간 체크를 한다. Delete(); } } #ifdef __CLIENT if(m_pSfxObj->m_pSfxBase != NULL) { for( int j=0; j<m_pSfxObj->m_pSfxBase->m_apParts.GetSize(); j++ ) { if( m_pSfxObj->m_pSfxBase->Part(j)->m_nType != SFXPARTTYPE_MESH ) continue; CModelObject* pMesh = NULL; pMesh = g_SfxMeshMng.Mesh( m_pSfxObj->m_pSfxBase->Part(j)->m_strTex ); if( pMesh ) pMesh->FrameMove(); } } #endif //__CLIENT if( m_idDest != NULL_ID ) // Dest가 지정되어 있을때. { CMover* pObjDest = (CMover*)prj.GetCtrl( m_idDest ); if( IsValidObj( pObjDest ) ) // 유효한넘인가? m_vPosDest = pObjDest->GetPos(); // 당시 좌표를 계속 받아둠. Invalid상태가 되면 마지막 좌표로 세팅된다. SetPos( m_vPosDest ); // 타겟에 오브젝트 발동. #ifdef __CLIENT #if __VER >= 11 // __MA_VER11_06 // 확율스킬 효과수정 world,neuz if( m_dwIndex == XI_SKILL_PSY_HERO_STONE02 ) { if( IsValidObj( pObjDest ) ) // 유효한넘인가? { DWORD dwTmpID = pObjDest->GetRemoveSfxObj(XI_SKILL_PSY_HERO_STONE02 ); if( dwTmpID && m_nFrame > 0) { Delete(); return; } } } #endif // __MA_VER11_06 // 확율스킬 효과수정 world,neuz // 091022 mirchang - 프로텍션, 펜바리어 스킬 버프 해제 시 sfx 삭제 if( m_dwIndex == XI_SKILL_MER_SHIELD_PANBARRIER02 ) { if( IsValidObj( pObjDest ) ) // 유효한넘인가? { DWORD dwTmpID = pObjDest->GetRemoveSfxObj( XI_SKILL_MER_SHIELD_PANBARRIER02 ); if( dwTmpID && m_nFrame > 0) { Delete(); return; } } } if( m_dwIndex == XI_SKILL_MER_SHIELD_PROTECTION02 ) { if( IsValidObj( pObjDest ) ) // 유효한넘인가? { DWORD dwTmpID = pObjDest->GetRemoveSfxObj( XI_SKILL_MER_SHIELD_PROTECTION02 ); if( dwTmpID && m_nFrame > 0) { Delete(); return; } } } #endif // __CLIENT } else { // Dest가 지정되어 있지 않을때. Src로... if( m_idSrc != NULL_ID ) { CMover* pObjSrc = (CMover*)prj.GetCtrl( m_idSrc ); if( IsValidObj( pObjSrc ) ) // 소스아이디가 지정되어 있으면 SetPos( pObjSrc->GetPos() ); // 소스측에 이펙 발동. else Delete(); } } }