Example #1
0
void BSPTree::Release()
{
	SafeDeleteArray( m_paNode );
	SafeDeleteArray( m_paPlane );
	m_NumNodes = 0;
	m_NumPlanes = 0;
}
Example #2
0
bool Init_Lang ( const wchar_t * szFileName )
{
	const int MAX_BUFFER_SIZE = 102400;

	HANDLE hFile = CreateFile ( szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL );
	if ( hFile == INVALID_HANDLE_VALUE )
		return false;

	ULARGE_INTEGER uSize;
	uSize.LowPart = GetFileSize ( hFile, &uSize.HighPart );

	if ( uSize.LowPart == 0xFFFFFFFF )
		return false;

	int iSize = (int) uSize.QuadPart;

	if ( iSize > MAX_BUFFER_SIZE )
		return false;

	if ( ( iSize % 2 ) != 0  )
		return false;

	int iBufferSize = iSize / 2;
	wchar_t * pBuffer = new wchar_t [iBufferSize + 1];

	DWORD uSizeRead = 0;
	ReadFile ( hFile, pBuffer, iSize, &uSizeRead, NULL );
	CloseHandle ( hFile );

	if ( uSizeRead != iSize )
	{
		SafeDeleteArray ( pBuffer );
		return false;
	}

	pBuffer [iBufferSize] = L'\0';

	wchar_t * pStart = pBuffer;
	while ( *pStart )
	{
		while ( *pStart && _X_iswspace ( *pStart ) )
			++pStart;

		wchar_t * pLineStart = pStart;
		while ( *pStart && *pStart != L'\n' )
			++pStart;

		int nChars = pStart - pLineStart - ( *pStart ? 1 : 0 );
		wchar_t * szAllocated = new wchar_t [nChars + 1];
		CopyConvert ( pLineStart, szAllocated, nChars );
		g_dStrings.Add ( szAllocated );
	}

	SafeDeleteArray ( pBuffer );

	if ( g_dStrings.Length () != T_TOTAL )
		return false;

	return true;
}
Example #3
0
void NMaterialInstance::PrepareInstanceForShader(Shader * _shader)
{
    if (shader == _shader)return;
    shader = _shader;
    /*
        TODO: rethink how to prepare instances for particular shaders of material.
     */
    
    SafeDeleteArray(uniforms);
    SafeDeleteArray(uniformData);
    
    uniformCount = shader->GetUniformCount();
    uniforms = new UniformInfo[uniformCount];
    memset(uniforms, 0, sizeof(UniformInfo) * uniformCount);
    
    uint32 uniformDataSize = 0;
    for (uint32 uniformIndex = 0; uniformIndex < uniformCount; ++uniformIndex)
    {
        Shader::eUniformType uniformType = shader->GetUniformType(uniformIndex);
        uint32 size = shader->GetUniformTypeSize(uniformType) * shader->GetUniformArraySize(uniformIndex) + 4;
        uniforms[uniformIndex].shift = uniformDataSize;
        uniforms[uniformIndex].arraySize = shader->GetUniformArraySize(uniformIndex);
        uniformDataSize += size;
    }
    
    uniformData = new uint8[uniformDataSize];

    for (uint32 uniformIndex = 0; uniformIndex < uniformCount; ++uniformIndex)
    {
        //Shader::eUniformType uniformType = shader->GetUniformType(uniformIndex);
        const String & uniformName = shader->GetUniformName(uniformIndex);
        //Logger::Debug("Find uniform: %s", uniformName.c_str());
        
        if ((uniformName == "texture[0]") || (uniformName == "texture"))
        {
            uint32 textureIndexes[8] = {0, 1, 2, 3, 4, 5, 6, 7};
            SetUniformData(uniformIndex, textureIndexes, 4 *  shader->GetUniformArraySize(uniformIndex));
        }else if ((uniformName == "lightIntensity[0]") || (uniformName == "lightIntensity"))
        {
            float32 lightIntensity[8] = {500, 500, 500, 500, 100, 100, 100, 100};
            SetUniformData(uniformIndex, lightIntensity, 4 *  shader->GetUniformArraySize(uniformIndex));
        }else if ((uniformName == "lightPosition[0]") || (uniformName == "lightPosition"))
        {
            Vector3 lightPosition[8] = {
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
                Vector3(0.0f, 0.0f, 0.0f),
            };
            SetUniformData(uniformIndex, lightPosition, 12 *  shader->GetUniformArraySize(uniformIndex));
        }else
        {
            uniforms[uniformIndex].flags |= SKIP_UNIFORM;
        }
    }
}
Example #4
0
//----------------------------------------------------------------------------------------------------
void Mesh::Destroy()
{
	SafeDeleteArray(mpVertices);
	SafeDeleteArray(mpIndices);
	mNumVertices = 0;
	mNumIndices = 0;
}
Example #5
0
//**************************************************
//khởi tạo danh sách điểm và chỉ mục
//**************************************************
void HQPolygon3D::Set(const HQVector4 *_pPoints, hq_int32 _numP, const hq_uint32 *_pIndices, hq_int32 _numI){
	HQ_DECL_STACK_2VECTOR4(e0,e1);

	SafeDeleteArray(pPoints);
	SafeDeleteArray(pIndices);
	numP=_numP;
	numI=_numI;

	pPoints=HQVector4::NewArray(numP);
	pIndices=new hq_uint32[numI];

	memcpy(pPoints,_pPoints,numP*sizeof(HQVector4));
	memcpy(pIndices,_pIndices,numI*sizeof(hq_uint32));

	HQVector4Sub(&pPoints[pIndices[1]], &pPoints[pIndices[0]], &e0);

	for(hq_int32 i=2;i<numI;++i){
		HQVector4Sub(&pPoints[pIndices[i]], &pPoints[pIndices[0]], &e1);

		hq_float32 angle=fabs(e1.AngleWith(e0));

		if(angle>0.0f+EPSILON&&angle<HQPiFamily::PI-EPSILON)//kiểm tra vector song song
			break;
	}
	plane.N.Cross(e0,e1);
	plane.N.Normalize();
	plane.D=-(plane.N * pPoints[pIndices[0]]);
	this->CalBoundingBox();
}
bool Database::run()
{
    SetThreadName("Database Execute Thread");
    ThreadRunning = true;
    char * query = queries_queue.pop();
    DatabaseConnection * con = GetFreeConnection();
    while(query)
    {
        _SendQuery( con, query, false );
        SafeDeleteArray(query);
        if(m_threadRunning == true)
            break;

        query = queries_queue.pop();
    }

    con->Busy.Release();

    if(queries_queue.get_size() > 0)
    {
        // execute all the remaining queries
        query = queries_queue.pop_nowait();
        while(query)
        {
            DatabaseConnection * con = GetFreeConnection();
            _SendQuery( con, query, false );
            con->Busy.Release();
            SafeDeleteArray(query);
            query=queries_queue.pop_nowait();
        }
    }

    ThreadRunning = false;
    return false;
}
Example #7
0
GraphicsFontDefinition::~GraphicsFontDefinition()
{
    SafeDeleteArray(characterTable);
    SafeDeleteArray(characterPreShift);
    SafeDeleteArray(characterWidthTable);
    SafeDeleteArray(kerningBaseShift);
    SafeDeleteArray(kerningTable);
}
FeaturePyramid::~FeaturePyramid()
{
  SafeDeleteArray(prevLevels);
  SafeDeleteArray(currLevels);
  SafeDeleteArray(currLevelsBuffer);

  delete pFeatureReader;
}
BoneAnimation::~BoneAnimation()
{
    for (int32 bi = 0; bi < boneCount; ++bi)
    {
        SafeDeleteArray(keys[bi]);
    }
    SafeDeleteArray(keys);
}
MainEngine::~MainEngine()
{
  SafeDeleteArray(m_pColorImageRGB);
  SafeDeleteArray(m_pColorImageRGBBuffer);

  delete m_pImageSourceEngine;
  delete m_pTrackingEngine;
}
MySQLQueryResult::~MySQLQueryResult()
{
	mysql_free_result(mResult);
	SafeDeleteArray(mCurrentRow);
//#ifdef ENABLE_FIELD_NAMES
	SafeDeleteArray(mFieldExtendedInfo);
//#endif//ENABLE_FIELD_NAMES
}
Example #12
0
void PolygonGroup::Load(KeyedArchive * keyedArchive, SceneFileV2 * sceneFile)
{
    DataNode::Load(keyedArchive, sceneFile);
    
    vertexFormat = keyedArchive->GetInt32("vertexFormat");
    vertexStride = GetVertexSize(vertexFormat);
    vertexCount = keyedArchive->GetInt32("vertexCount");
    indexCount = keyedArchive->GetInt32("indexCount");
    textureCoordCount = keyedArchive->GetInt32("textureCoordCount");
    primitiveType = (ePrimitiveType)keyedArchive->GetInt32("primitiveType");
	cubeTextureCoordCount = keyedArchive->GetInt32("cubeTextureCoordCount");
    
    int32 formatPacking = keyedArchive->GetInt32("packing");
    if (formatPacking == PACKING_NONE)
    {
        int size = keyedArchive->GetByteArraySize("vertices");
        if (size != vertexCount * vertexStride)
        {
            Logger::Error("PolygonGroup::Load - Something is going wrong, size of vertex array is incorrect");
            return;
        }
		SafeDeleteArray(meshData);
        meshData = new uint8[vertexCount * vertexStride];
        const uint8 * archiveData = keyedArchive->GetByteArray("vertices");
        memcpy(meshData, archiveData, size);
    }
    
    indexFormat = keyedArchive->GetInt32("indexFormat");
    if (indexFormat == EIF_16)
    {
        int size = keyedArchive->GetByteArraySize("indices");
        if (size != indexCount * INDEX_FORMAT_SIZE[indexFormat])
        {
            Logger::Error("PolygonGroup::Load - Something is going wrong, size of index array is incorrect");   
            return;
        }
		SafeDeleteArray(indexArray);
        indexArray = new int16[indexCount];
        const uint8 * archiveData = keyedArchive->GetByteArray("indices");
        memcpy(indexArray, archiveData, indexCount * INDEX_FORMAT_SIZE[indexFormat]);         
    }

	SafeDeleteArray(textureCoordArray);
	textureCoordArray = new Vector2*[textureCoordCount];
	
	SafeDeleteArray(cubeTextureCoordArray);
	if(cubeTextureCoordCount)
	{
		cubeTextureCoordArray = new Vector3*[cubeTextureCoordCount];
	}

	SafeRelease(renderDataObject);
    renderDataObject = new RenderDataObject();
    UpdateDataPointersAndStreams();
    RecalcAABBox();
    
    BuildBuffers();
}
Example #13
0
//______________________________________________________________________________
ROMETree::~ROMETree()
{
#if 0                           /* this class does not own it */
   SafeDeleteArray(fTree);
   SafeDeleteArray(fFile);
#endif
   SafeDeleteArray(fBranchActive);
   SafeDeleteArray(fBranchRead);
}
Example #14
0
/////////////////////////////////////////////////////////////////////////////
//
//	Free()
//
void CwaTexture::Free(void)
{
	m_Width  = 0;
	m_Height = 0;
	m_Pitch  = 0;

	SafeDeleteArray(m_pTexels);
	SafeDeleteArray(m_pPalette);
}
int PangaeaTracking::OnExit()
{
    for(int i = 0; i < arg_num; ++i)
    SafeDeleteArray(argv_char[i]);

    SafeDeleteArray(argv_char);
    
    return 0;
}
Example #16
0
// Destructor.
HeapAllocator::~HeapAllocator()
{
    SafeDeleteArray( m_pIndex );
    SafeDeleteArray( m_pPool );
    m_NextIndex = 0;
    m_NumRestBlocks = 0;
    m_Depth = 0;
    m_Size = 0;
}
Example #17
0
ParametricShape::~ParametricShape()
{
    SafeDeleteArray( m_TabVertices );
    SafeDeleteArray( m_TabColors );

    for( unsigned int i = 0; i < m_TabIndices.size(); ++i )
    {
        SafeDeleteArray( m_TabIndices[i] );
    }
}
Example #18
0
void CVolume3D::_free(void)
{
	SafeDeleteArray(m_pDensityVolume);
	SafeDeleteArray(m_pGradientVolume);
	m_nx=m_ny=m_nz=0;

	//===========================
	uninstallDensityVolumeOnGPU();
	uninstallGradientVolumeOnGPU();
}
Example #19
0
void PolygonGroup::ReleaseData()
{
    SafeRelease(renderDataObject);
    
    SafeDeleteArray(jointCountArray);
    SafeDeleteArray(meshData);
    SafeDeleteArray(indexArray);
    SafeDeleteArray(textureCoordArray);
	SafeDeleteArray(cubeTextureCoordArray);
}
Example #20
0
void Mesh::Destroy()
{
	SafeDeleteArray(mVertices);
	SafeDeleteArray(mIndices);
	SafeDeleteArray(mTextures);

	mNumVertices = 0;
	mNumIndices = 0;
	mNumTextures = 0;
}
Example #21
0
void CC3d1inIOControl::_readConnectivity(FILE *fp)
{
	int i, id, matid, t0;
	int x0, y0, z0, w0, x1, y1, z1, w1;
	const char group3[]="GROUP 3";
	Vector4i *p4;
	Vector8i *p8;

	//malloc buffer for element id
	SafeDeleteArray(m_pElement);
	SafeDeleteArray(m_pElementObjectID);
	m_pElement = new Vector8i[m_nElement];
	assert(m_pElement!=NULL);
	m_pElementObjectID = new int [m_nElement];
	assert(m_pElementObjectID!=NULL);
	
	for (i=0; i<_CIA3D_MAX_OBJECT_COUNT; i++)
		m_nObjectElementCount[i] = 0;

	//read the elements;
	SEEK_GROUPn(fp, group3);
	for (i=0; i<m_nElement; i++){
		fscanf(fp, "%d %d %d", &id, &t0, &matid);

#ifdef _DEBUG
		if (id==2502){
			int asga=1;
		}
#endif

		m_pElementObjectID[i]= (--matid);	//set element matid
		m_nObjectElementCount[matid]++;		//count the element for this material

		const int nodecount = m_nObjectType[matid];
		switch(nodecount){
		case 4:
			fscanf(fp, "%d %d %d %d", &x0, &y0, &z0, &w0);
			x0--, y0--, z0--, w0--;
			p4 = (Vector4i*)(&m_pElement[i]);
			*p4 = Vector4i(x0, y0, z0, w0);
			break;
		case 8:
			fscanf(fp, "%d %d %d %d %d %d %d %d", &x0, &y0, &z0, &w0, &x1, &y1, &z1, &w1);
			x0--, y0--; z0--, w0--;
			x1--, y1--; z1--, w1--;	
			p8 = &m_pElement[i];
			*p8 = Vector8i(x0,y0,z0,w0,x1,y1,z1,w1);
			break;
		default:
			printf("Element type (%d nodes) is not supported!\n", nodecount);
			assert(0);
		}
	}
}
Example #22
0
AAIConfig::~AAIConfig(void)
{
	for(int i = 0; i < SIDES; i++)
	{
		SafeDeleteArray(START_UNITS[i]);
		SafeDeleteArray(SIDE_NAMES[i]);
	}

	SafeDeleteArray(START_UNITS);
	SafeDeleteArray(SIDE_NAMES);
}
Example #23
0
Shader::~Shader()
{
    SafeDeleteArray(attributeNames);
    //SafeDeleteArray(uniforms);
	SafeDeleteArray(uniformOffsets);
	SafeDeleteArray(uniformData);
    
    SafeRelease(vertexShaderData);
    SafeRelease(fragmentShaderData);
    
    DeleteShaders();
}
Example #24
0
CDlgTemplate::~CDlgTemplate()
{
	SafeDeleteArray(m_dlgTmpl.pData);
	for (DataIter iter = m_vecItemTmpl.begin();
		iter != m_vecItemTmpl.end();
		++iter)
	{
		SafeDeleteArray(iter->pData);
	}
	m_vecItemTmpl.clear();

	SafeDeleteArray(m_pBuf);
}
Example #25
0
bool LibDxtHelper::DecompressImageToRGBA(const Image & image, Vector<Image*> &imageSet, bool forseSoftwareConvertation)
{
	if(!(image.format >= FORMAT_DXT1 && image.format <= FORMAT_DXT5NM) )
	{
		Logger::Error("[LibDxtHelper::DecompressImageToRGBA] Wrong copression format (%d).", image.format);
		return false;
	}
	nvtt::Format innerComprFormat = NvttHelper::GetNVTTFormatByPixelFormat(image.format);
	if(nvtt::Format_BC5 == innerComprFormat)
	{ 	//bc5 is unsupported, used to determinate fail in search
		Logger::Error("[LibDxtHelper::DecompressImageToRGBA] Can't work with nvtt::Format_BC5.");
		return false;
	}
	
		
	InputOptions inputOptions;
	inputOptions.setTextureLayout(TextureType_2D, image.width, image.height);
	inputOptions.setMipmapGeneration(false);

	CompressionOptions compressionOptions;
	compressionOptions.setFormat(innerComprFormat);
	if(FORMAT_DXT1NM == image.format)
	{
		compressionOptions.setColorWeights(1, 1, 0);
	}
	else if (FORMAT_DXT5NM == image.format)
	{
		inputOptions.setNormalMap(true);
	}
	
	uint32 headerSize = DX10HEADER_SIZE;
	uint8* imageHeaderBuffer = new uint8[headerSize];

	uint32 realHeaderSize = nvtt::Decompressor::getHeader(imageHeaderBuffer, headerSize, inputOptions, compressionOptions);

	nvtt::Decompressor dec;

	uint8* compressedImageBuffer = new uint8[realHeaderSize + image.dataSize];
	memcpy(compressedImageBuffer, imageHeaderBuffer, realHeaderSize);
	memcpy(compressedImageBuffer + realHeaderSize, image.data, image.dataSize);
    SafeDeleteArray(imageHeaderBuffer);
	
	bool retValue = NvttHelper::InitDecompressor(dec, compressedImageBuffer, realHeaderSize + image.dataSize);
	if(retValue)
	{
		retValue = NvttHelper::ReadDxtFile(dec, imageSet, forseSoftwareConvertation);
	}

    SafeDeleteArray(compressedImageBuffer);
	return retValue;
}
Example #26
0
SimpleString& SimpleString::operator+=( const SimpleString& String )
{
	uint NewLength = m_Length + String.m_Length;
	char* NewString = Allocate( NewLength + 1 );

	memcpy( NewString, m_String, m_Length );
	memcpy( NewString + m_Length, String.m_String, String.m_Length );
	NewString[ NewLength ] = '\0';

	SafeDeleteArray( m_String );
	Initialize( NewString );
	SafeDeleteArray( NewString );

	return *this;
}
Example #27
0
	//=============================================================================
	// destructor
	//=============================================================================
	MeshCylinder::~MeshCylinder(void)
	{
		//relase vertex buffer
		SafeRelease(direct3dvertexbuffer9_);
		SafeRelease(direct3dindexbuffer9_);
		SafeDeleteArray(indexs_);
	}
Example #28
0
void StringManager::Init(const char* filePath)
{
	SafeDelete(instance);
	instance = new StringManager();
	char* buffer = NULL;
	int length = 0;
	ReadFileToMemory(filePath, "rt", &buffer, &length);
	if (length <= 0)
	{
		return;
	}
	tinyxml2::XMLDocument doc;
	doc.Parse(buffer);
	SafeDeleteArray(buffer);
	if (doc.ErrorID() != 0)
	{
		return;
	}
	tinyxml2::XMLElement* root = doc.FirstChildElement("data-set");
	tinyxml2::XMLElement* recordXML = root->FirstChildElement("record");
	while (recordXML)
	{
		StringRecord* record = new StringRecord();
		const char* ID = recordXML->FirstChildElement("ID")->GetText();
		const char* EN = recordXML->FirstChildElement("EN")->GetText();
		const char* VN = recordXML->FirstChildElement("VN")->GetText();
		SafeCopyCHAR(&record->ID, ID);
		SafeCopyCHAR(&record->EN, EN);
		SafeCopyCHAR(&record->VN, VN);
		instance->stringMap[ID] = record;
		recordXML = recordXML->NextSiblingElement("record");
	}
}
Example #29
0
DBQueryResult::~DBQueryResult()
{
    SafeDeleteArray( mFields );

    if( NULL != mResult )
        mysql_free_result( mResult );
}
Example #30
0
	MapilVoid Archiver::Save( const MapilChar* pFileName )
	{
		Open( pFileName, FILE_OPEN_WRITE_MODE );

		std::basic_ofstream < MapilChar > fOut( m_ArchiveName.c_str(), std::ios::binary | std::ios::out );
		MapilInt32 offset = 0;

		for( MapilInt32 i = 0; i < m_FileTotal; ++i ){
			std::basic_ifstream < MapilChar > fIn( m_FileName[ i ], std::ios::binary | std::ios::in );
			m_FileSize.push_back( GetDataSize( &fIn ) );
			m_FilePos.push_back( offset );
			offset += m_FileSize[ i ];
			MapilChar* pData = new MapilChar [ m_FileSize[ i ] ];
			fIn.read( pData, m_FileSize[ i ] );
			// Copy data.
			fOut.write( pData, m_FileSize[ i ] );
			SafeDeleteArray( pData );
			fIn.close();
		}

		// Setup the file information.
		SaveInt( &fOut, m_FileTotal );
		for( MapilInt32 i = 0; i < m_FileTotal; ++i ){
			SaveInt( &fOut, m_FilePos[ i ] );
			SaveInt( &fOut, strlen( m_FileName[ i ] ) );
			fOut.write( m_FileName[ i ], strlen( m_FileName[ i ] ) );
			SaveInt( &fOut, m_FileSize[ i ] );
		}
		SaveInt( &fOut, offset );

		fOut.close();
	}