#include "StdAfx.h" #include "EtWorldProp.h" #include "../GameCommon/PropHeader.h" #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif CEtWorldProp::CEtWorldProp() : m_vPosition( 0.f, 0.f, 0.f ), m_vRotation( 0.f, 0.f, 0.f ), m_vScale( 0.f, 0.f, 0.f ), m_vPrePosition( 0.f, 0.f, 0.f ), m_vPreRotation(0.f, 0.f, 0.f ) { m_nClassID = 0; m_pParentSector = NULL; m_pCurOctreeNode = NULL; m_bCastShadow = false; m_bReceiveShadow = false; m_bCastLightmap = false; m_bLightmapInfluence = false; m_bIgnoreBuildNavMesh = false; m_bIgnoreBuildColMesh = false; m_nCreateUniqueID = 0; m_pData = NULL; m_bPostCreateCustomParam = false; m_bCastWater = false; m_bControlLock = false; m_nNavType = 0; } CEtWorldProp::~CEtWorldProp() { ReleaseCustomInfo(); SAFE_RELEASE_SPTR( m_Handle ); } bool CEtWorldProp::Initialize( CEtWorldSector *pParentSector, const char *szPropName, EtVector3 &vPos, EtVector3 &vRotate, EtVector3 &vScale ) { m_pParentSector = pParentSector; m_szPropName = szPropName; m_vPosition = vPos; m_vRotation = vRotate; m_vScale = vScale; return true; } void CEtWorldProp::GetBoundingSphere( SSphere &Sphere, bool bActorSize/* = false*/ ) { if( !m_Handle ) return; m_Handle->GetBoundingSphere( Sphere ); } void CEtWorldProp::GetBoundingBox( SAABox &Box ) { if( !m_Handle ) return; m_Handle->GetBoundingBox( Box ); } void CEtWorldProp::GetBoundingBox( SOBB &Box ) { if( !m_Handle ) return; m_Handle->GetBoundingBox( Box ); } void CEtWorldProp::SetCurOctreeNode( CEtOctreeNode *pNode ) { m_pCurOctreeNode = pNode; } void* CEtWorldProp::AllocPropData(int& usingCount) { usingCount = 256; return new int[usingCount]; } // note by kalliste : ½Ã±×³Î ½ºÆ®·°Ãĸ¦ ³»¿ë º¹»çÇØ¼­ °ÔÀÓ³»¿¡ »ç¿ëÇÏ´Â °æ¿ì°¡ ÀÖ¾î ÀÏ´Ü ¸·½À´Ï´Ù.(#40311) //#define _TEST_DEFAULT_PROP_ALLOC bool CEtWorldProp::LoadCustomInfo( CStream *pStream ) { ReleaseCustomInfo(); m_bPostCreateCustomParam = false; #ifdef _TEST_DEFAULT_PROP_ALLOC m_pData = new int[256]; memset( m_pData, 0, 1024 ); pStream->Read( m_pData, 1024 ); #else int usingCount = 256; m_pData = AllocPropData(usingCount); int dataSize = usingCount * 4; if (dataSize > 1024) { _ASSERT(0); SAFE_DELETEA( m_pData ); return false; } if (m_pData != NULL) { memset( m_pData, 0, dataSize ); pStream->Read( m_pData, dataSize ); } if (dataSize < 1024) pStream->Seek((1024 - dataSize), SEEK_CUR); #endif std::vector vVec2List; std::vector vVec3List; std::vector vVec4List; std::vector szVecList; m_nVec2Index.clear(); m_nVec3Index.clear(); m_nVec4Index.clear(); m_nVecStrIndex.clear(); // Table Load int nTableCount; pStream->Read( &nTableCount, sizeof(int) ); if( nTableCount > 0 ) { vVec2List.resize( nTableCount ); m_nVec2Index.resize( nTableCount ); pStream->Read( &m_nVec2Index[0], sizeof(int) * nTableCount ); pStream->Read( &vVec2List[0], sizeof(EtVector2) * nTableCount ); } pStream->Read( &nTableCount, sizeof(int) ); if( nTableCount > 0 ) { vVec3List.resize( nTableCount ); m_nVec3Index.resize( nTableCount ); pStream->Read( &m_nVec3Index[0], sizeof(int) * nTableCount ); pStream->Read( &vVec3List[0], sizeof(EtVector3) * nTableCount ); } pStream->Read( &nTableCount, sizeof(int) ); if( nTableCount > 0 ) { vVec4List.resize( nTableCount ); m_nVec4Index.resize( nTableCount ); pStream->Read( &m_nVec4Index[0], sizeof(int) * nTableCount ); pStream->Read( &vVec4List[0], sizeof(EtVector4) * nTableCount ); } pStream->Read( &nTableCount, sizeof(int) ); if( nTableCount > 0 ) { m_nVecStrIndex.resize( nTableCount ); pStream->Read( &m_nVecStrIndex[0], sizeof(int) * nTableCount ); } for( int i=0; i nValue ) m_nVec2Index64[i]++; } for( DWORD i=0; i nValue ) m_nVec3Index64[i]++; } for( DWORD i=0; i nValue ) m_nVec4Index64[i]++; } for( DWORD i=0; i nValue ) m_nVecStrIndex64[i]++; } } #endif