Ejemplo n.º 1
0
void CClientTools::OnAfterFrameRenderEnd(void)
{
	if (!m_Recording)
		return;

	if(m_RecordCamera)
	{
		WriteDictionary("afxCam");
		Write((float)g_Hook_VClient_RenderView.LastCameraOrigin[0]);
		Write((float)g_Hook_VClient_RenderView.LastCameraOrigin[1]);
		Write((float)g_Hook_VClient_RenderView.LastCameraOrigin[2]);
		Write((float)g_Hook_VClient_RenderView.LastCameraAngles[0]);
		Write((float)g_Hook_VClient_RenderView.LastCameraAngles[1]);
		Write((float)g_Hook_VClient_RenderView.LastCameraAngles[2]);
		Write((float)ScaleFov(g_Hook_VClient_RenderView.LastWidth, g_Hook_VClient_RenderView.LastHeight, (float)g_Hook_VClient_RenderView.LastCameraFov));
	}

	if (m_File && m_HiddenFileOffset && 0 < m_Hidden.size())
	{
		WriteDictionary("afxHidden");

		size_t curOffset = ftell(m_File);

		int offset = (int)(curOffset - m_HiddenFileOffset);

		fseek(m_File, m_HiddenFileOffset, SEEK_SET);
		Write((int)offset);
		fseek(m_File, curOffset, SEEK_SET);

		Write((int)m_Hidden.size());

		for (std::set<int>::iterator it = m_Hidden.begin(); it != m_Hidden.end(); ++it)
		{
			Write((int)(*it));
		}

		m_Hidden.clear();
		m_HiddenFileOffset = 0;
	}

	WriteDictionary("afxFrameEnd");
}
Ejemplo n.º 2
0
void CClientTools::OnBeforeFrameRenderStart(void)
{
	if (!m_Recording)
		return;

	if (m_File)
	{
		WriteDictionary("afxFrame");
		Write((float)g_Hook_VClient_RenderView.GetGlobals()->absoluteframetime_get());
		m_HiddenFileOffset = ftell(m_File);
		Write((int)0);
	}
	
}
Ejemplo n.º 3
0
bool BRCWriter::write()
{
    Symbols &syms = loader.GetSymbols();    

    bool ok = DBOpen((char *)outputFile.c_str());

    if (ok)
    {
        ok = false;
//        if (Begin())
            if (WriteFileList())
                if (WriteDictionary(syms))
                    if (WriteMapping(syms))
                        if (WriteLineData(syms))
                            if (WriteUsageData(syms))
                                if (WriteJumpTable(syms))
                                   ok = true;
//        if (!End())
            ok = false;
    }
    if (dbPointer)
        sqlite3_close(dbPointer);
    return ok;
}
Ejemplo n.º 4
0
//! \brief function to check progress of saving archive to disk
//! process of compression can be long so we need to have progress bar
//! \param resourcePackedSize
//! \return number from 0 to added resource file count. 
int32 ResourceArchive::SaveProgress(int32 * resourcePackedSize, int32 * resourceRealSize)
{
	if (saveResourceCounter == -1)
	{
		return -1;
	}

	if (saveResourceCounter == 0)
	{
		archiveFile = fileSystem->CreateFile(archiveFileName.c_str(), IO::EFA_CREATE | IO::EFA_WRITE);
		if (!archiveFile)
		{
			saveResourceCounter = -1;
			return -1;
		}
		header.signature[0] = 'R';
		header.signature[1] = 'A';
		header.signature[2] = '0';
		header.signature[3] = '0';

		header.version = 100;
		header.fileCount = (uint32)fileArray.size();
		header.flags |= (withPaths) ? (EHF_WITHPATHS) : (0);
			
		if (sizeof(Header) != archiveFile->Write(&header, sizeof(Header)))
		{
			// ERROR
			SafeRelease(archiveFile);
			saveResourceCounter = -1;
			return -1;
		}

		nodeArray.resize(header.fileCount);

		if (!WriteDictionary())
		{
			// ERROR
			SafeRelease(archiveFile);
			saveResourceCounter = -1;
			return -1;
		}

	}else if (archiveFile == 0)
	{
		// ERROR
		saveResourceCounter = -1;
		return -1;
	}


	if (saveResourceCounter < (int32)fileArray.size())
	{
		if (!PackResource(fileArray[saveResourceCounter], resourcePackedSize, resourceRealSize))
		{
			// ERROR
			SafeRelease(archiveFile);
			saveResourceCounter = -1;
			return -1;
		}
		saveResourceCounter++;
	}
	


	if (saveResourceCounter == (int32)fileArray.size())
	{
		if (!WriteDictionary())
		{
			// ERROR
			SafeRelease(archiveFile);
			saveResourceCounter = -1;
			return -1;
		}	
		SafeRelease(archiveFile);
	}

	return saveResourceCounter;
}