// HouseObjectNode.cpp: implementation of the CHouseObjectNode class. // ////////////////////////////////////////////////////////////////////// #include "HouseObjectScene.h" #include "SceneManager.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHouseObjectScene::CHouseObjectScene() { m_bMedCull = true; } CHouseObjectScene::~CHouseObjectScene() { /* if(strcmp(m_strBSPName,"")!=0) { if(m_HouseObject->m_pBspObject) delete m_HouseObject->m_pBspObject; } else */ { CSceneManager::m_HouseObjectContainer.DeleteHouseObject(m_strOutName, m_strMedName, m_strInName, m_strBSPName); } } void CHouseObjectScene::Render(LPDIRECT3DDEVICE8 pd3dDevice) { if(m_HouseObject->m_pBspObject) { pd3dDevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&m_AccumulateTM); m_HouseObject->Render(pd3dDevice); return; } if(isCulling()==false) return; pd3dDevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&m_AccumulateTM); m_HouseObject->Render(pd3dDevice); } void CHouseObjectScene::UpdateBspPosition() { for(int i=CSceneManager::m_pBspConvertList.num-1;i>=0;i--) { if(CSceneManager::m_pBspConvertList[i]==this) { CSceneManager::m_pBspConvertList.DelIndex(i); CSceneManager::m_vecBspConvertList.DelIndex(i); } } if(m_HouseObject->m_pBspObject && m_HouseObject->m_pInHouseMap) { matrix matBspEnterPos; for(int cEnterBsp=0;cEnterBspm_pInHouseMap->m_matObjectList.num;cEnterBsp+=4) { matBspEnterPos=m_HouseObject->m_pInHouseMap->m_matObjectList[cEnterBsp]*m_AccumulateTM; CSceneManager::m_vecBspConvertList.Add(matBspEnterPos.GetLoc()); CSceneManager::m_pBspConvertList.Add(this); } } /* if(CSceneManager::m_PickHouseScene->m_HouseObject->m_pBspObject && CSceneManager::m_PickHouseScene->m_HouseObject->m_pInHouseMap) { if(CSceneManager::m_PickHouseScene->m_HouseObject->m_pInHouseMap->m_matObjectList.num%4==1) { CSceneManager::m_PickHouseScene->m_HouseObject->m_pInHouseMap->m_matObjectList[ CSceneManager::m_PickHouseScene->m_HouseObject->m_pInHouseMap->m_matObjectList.num-1]* CSceneManager::m_PickHouseScene->m_ } matrix matBspEnterPos; for(int cEnterBsp=0;cEnterBspm_HouseObject->m_pInHouseMap->m_matObjectList.num;cEnterBsp+=4) { matBspEnterPos=HouseObjectScene->m_HouseObject->m_pInHouseMap->m_matObjectList[cEnterBsp]*HouseObjectScene->m_AccumulateTM; CSceneManager::m_vecBspConvertList.Add(matBspEnterPos.GetLoc()); CSceneManager::m_pBspConvertList.Add(HouseObjectScene); } //List CSceneManager::m_vecBspConvertList; //List CSceneManager::m_pBspConvertList; } */ } void CHouseObjectScene::DeleteBspPosition() { for(int i=CSceneManager::m_pBspConvertList.num-1;i>=0;i--) { if(CSceneManager::m_pBspConvertList[i]==this) { CSceneManager::m_pBspConvertList.DelIndex(i); CSceneManager::m_vecBspConvertList.DelIndex(i); } } } void CHouseObjectScene::RenderGlare(LPDIRECT3DDEVICE8 pd3dDevice) { if(m_HouseObject->m_pBspObject) { return; } if(isCulling()==false) return; pd3dDevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&m_AccumulateTM); m_HouseObject->RenderGlare(pd3dDevice); } void CHouseObjectScene::RenderBlack( LPDIRECT3DDEVICE8 pd3dDevice ) { if(m_HouseObject->m_pBspObject) { pd3dDevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&m_AccumulateTM); m_HouseObject->RenderBlack(pd3dDevice); return; } if(isCulling()==false) return; pd3dDevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&m_AccumulateTM); m_HouseObject->RenderBlack(pd3dDevice); }