/**----------------------------------------------------------------------------- * 애니메이션 설정 *------------------------------------------------------------------------------ */ VOID Animate() { D3DXMATRIXA16 matX; D3DXMATRIXA16 matY; D3DXMatrixRotationX( &matX, g_xRot ); D3DXMatrixRotationY( &matY, g_yRot ); g_matWorld = matX * matY; g_pd3dDevice->SetTransform( D3DTS_WORLD, &g_matWorld ); /// 디바이스에 월드행렬 설정 g_pd3dDevice->SetTransform( D3DTS_VIEW, &g_matView ); g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &g_matProj ); SetupLights(); SetupFX(); LogFPS(); // 로깅 }
void CClientExplosionSFX::HandleTrigger(HOBJECT hSender, HMESSAGEREAD hRead) { CServerDE* pServerDE = GetServerDE(); if(!pServerDE) return; HSTRING hMsg = pServerDE->ReadFromMessageHString(hRead); if(!hMsg) return; HSTRING hstr = pServerDE->CreateString("TRIGGER"); if(pServerDE->CompareStringsUpper(hMsg, hstr)) { SetupFX(); m_bTriggered = 1; } pServerDE->FreeString(hMsg); pServerDE->FreeString(hstr); }
void DDModel::DrawMesh() { if ( !m_MeshInfo ) return; LPDIRECT3DDEVICE9 pD3DDevice = DDRenderer::GetInstance()->GetDevice(); if ( m_UseShader ) { SetupFX(); UINT nPass; //pD3DDevice->SetVertexDeclaration( m_pDecl ); //LPDIRECT3DVERTEXBUFFER9* pVB = nullptr; //m_MeshInfo->m_pMesh->GetVertexBuffer(pVB); //pD3DDevice->SetStreamSource( 0, *pVB, 0, sizeof( **pVB ) ); //m_pEffect->SetTechnique( "RenderRimLight" ); m_pEffect->Begin( &nPass, NULL ); for ( unsigned int i = 0; i < nPass; ++i ) { m_pEffect->BeginPass( i ); for ( DWORD j = 0; j < m_MeshInfo->m_dwNumMaterials; ++j ) { pD3DDevice->SetMaterial( &m_MeshInfo->m_pMeshMaterials[j] ); pD3DDevice->SetTexture( 0, m_MeshInfo->m_pMeshTexture[j] ); m_MeshInfo->m_pMesh->DrawSubset( j ); } m_pEffect->EndPass(); } m_pEffect->End(); } else { for ( DWORD i = 0; i < m_MeshInfo->m_dwNumMaterials; ++i ) { pD3DDevice->SetMaterial( &m_MeshInfo->m_pMeshMaterials[i] ); pD3DDevice->SetTexture( 0, m_MeshInfo->m_pMeshTexture[i] ); m_MeshInfo->m_pMesh->DrawSubset( i ); } } }
DDWORD CClientParticleStreamSFX::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData) { CServerDE* pServerDE = GetServerDE(); if (!pServerDE) return 0; switch(messageID) { case MID_PRECREATE: { // Only read properties if object was created from a world file. if (fData == PRECREATE_WORLDFILE) { ReadProp((ObjectCreateStruct*)pData); } break; } case MID_INITIALUPDATE: { if (fData != INITIALUPDATE_SAVEGAME) { pServerDE->SetNextUpdate(m_hObject, 0.0f); DDWORD dwFlags = g_pServerDE->GetObjectFlags(m_hObject); dwFlags &= ~FLAG_GRAVITY; dwFlags |= FLAG_FORCECLIENTUPDATE; g_pServerDE->SetObjectFlags(m_hObject, dwFlags); DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject); dwUsrFlags |= USRFLG_SAVEABLE; if(bOn) dwUsrFlags |= USRFLG_VISIBLE; else dwUsrFlags &= ~USRFLG_VISIBLE; pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags); SetupFX(); } CacheFiles(); break; } /* No updates necessary for this object, since it the flags can be set by the trigger fn. GK 8/20/98 case MID_UPDATE: { DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject); if(bOn) dwUsrFlags |= USRFLG_VISIBLE; else dwUsrFlags &= ~USRFLG_VISIBLE; pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags); pServerDE->SetNextUpdate(m_hObject, 0.1f); if(!pServerDE) pServerDE->RemoveObject(m_hObject); break; } */ case MID_SAVEOBJECT: { Save((HMESSAGEWRITE)pData, (DDWORD)fData); } break; case MID_LOADOBJECT: { Load((HMESSAGEREAD)pData, (DDWORD)fData); } break; default : break; } return CClientSFX::EngineMessageFn(messageID, pData, fData); }
DDWORD CClientWarpGateSFX::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData) { CServerDE* pServerDE = GetServerDE(); if (!pServerDE) return 0; switch(messageID) { case MID_PRECREATE: { if (fData == PRECREATE_WORLDFILE) // [blg] { ReadProp((ObjectCreateStruct*)pData); } break; } case MID_INITIALUPDATE: { pServerDE->SetNextUpdate(m_hObject, 1.0f); DDWORD dwFlags = g_pServerDE->GetObjectFlags(m_hObject); dwFlags &= ~FLAG_GRAVITY; dwFlags |= FLAG_FORCECLIENTUPDATE; g_pServerDE->SetObjectFlags(m_hObject, dwFlags); DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject); if(bOn) dwUsrFlags |= USRFLG_VISIBLE; else dwUsrFlags &= ~USRFLG_VISIBLE; dwUsrFlags |= USRFLG_SAVEABLE; g_pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags); bFirstUpdate = 1; break; } case MID_UPDATE: { if(bFirstUpdate) { SetupFX(); bFirstUpdate = 0; } DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject); if(bOn) dwUsrFlags |= USRFLG_VISIBLE; else dwUsrFlags &= ~USRFLG_VISIBLE; g_pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags); pServerDE->SetNextUpdate(m_hObject, 0.1f); if(!pServerDE) pServerDE->RemoveObject(m_hObject); break; } case MID_SAVEOBJECT: Save((HMESSAGEWRITE)pData, (DDWORD)fData); break; case MID_LOADOBJECT: Load((HMESSAGEREAD)pData, (DDWORD)fData); break; default : break; } return CClientSFX::EngineMessageFn(messageID, pData, fData); }