本文整理汇总了C++中IArchive::SeekTo方法的典型用法代码示例。如果您正苦于以下问题:C++ IArchive::SeekTo方法的具体用法?C++ IArchive::SeekTo怎么用?C++ IArchive::SeekTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IArchive
的用法示例。
在下文中一共展示了IArchive::SeekTo方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnUpdateLanguageEntryParams
DWORD CGUIStaticText::OnUpdateLanguageEntryParams(DWORD size, void *param)
{
VERIFY_MESSAGE_SIZE(size, sizeof(IArchive*));
IArchive* ar = (IArchive*) param;
if (ar)
{
if (m_LanguageTextParams != NULL)
{
delete [] m_LanguageTextParams;
m_LanguageTextParams = NULL;
}
// do deep copy of archive params
UINT archiveSize = ar->SeekTo(0, SEEK_END);
if (archiveSize > 0)
{
ar->SeekTo(0, SEEK_SET);
ar->SetIsWriting(false);
m_LanguageTextParams = new BYTE[archiveSize];
ar->Read(m_LanguageTextParams, archiveSize);
m_iLangTextParamSize = archiveSize;
}
}
UpdateLanguageEntryText();
return MSG_HANDLED_STOP;
}
示例2: UpdateWorldEventTrigger
void CWorldEventToolPal::UpdateWorldEventTrigger( void )
{
static DWORD msgHash_FindObject = CHashString(_T("FindObject")).GetUniqueID();
static DWORD msgHash_GetComponentType = CHashString(_T("GetComponentType")).GetUniqueID();
static DWORD msgHash_CreateArchive = CHashString(_T("CreateArchive")).GetUniqueID();
static DWORD msgHash_SerializeObject = CHashString(_T("SerializeObject")).GetUniqueID();
static CHashString Hash_Type = CHashString(_T("CWorldEventTrigger"));
CString buf;
m_Name.GetLBText(m_Name.GetCurSel(), buf);
CHashString hszName((TCHAR*)buf.GetBuffer());
FINDOBJECTPARAMS param;
param.hszName = &hszName;
DWORD result = m_ToolBox->SendMessage(msgHash_FindObject, sizeof(FINDOBJECTPARAMS), ¶m);
// object exists
if( param.bFound == true )
{
GETCOMPONENTTYPEPARAMS gctp;
gctp.name = &hszName;
m_ToolBox->SendMessage(msgHash_GetComponentType, sizeof(gctp), &gctp);
// it is a world event, get values from it
if ( (gctp.componenttype != NULL) && (gctp.componenttype->GetUniqueID() == Hash_Type.GetUniqueID()) )
{
CREATEARCHIVE ca;
CHashString streamType(_T("Memory"));
ca.streamData = NULL;
ca.mode = STREAM_MODE_WRITE | STREAM_MODE_READ;
ca.streamType = &streamType;
m_ToolBox->SendMessage(msgHash_CreateArchive, sizeof(CREATEARCHIVE), &ca, NULL, NULL);
IArchive *MemArchive = (ca.archive);
MemArchive->SetIsWriting(true);
MemArchive->SeekTo(0);
SERIALIZEOBJECTPARAMS sop;
sop.name = &hszName;
sop.archive = MemArchive;
m_ToolBox->SendMessage(msgHash_SerializeObject, sizeof(SERIALIZEOBJECTPARAMS), &sop, NULL, NULL);
MemArchive->SetIsWriting(false);
MemArchive->SeekTo(0);
StdString tmp;
MemArchive->Read( tmp );
m_EntityName.SetWindowText( tmp.c_str() );
MemArchive->Read( tmp );
m_EntityType.SetWindowText( tmp.c_str() );
MemArchive->Read( tmp );
m_EventName.SetWindowText( tmp.c_str() );
MemArchive->Close();
}
}
}
示例3: GetType
DWORD CSchemaItem::GetType( DATABASEATTRIBUTEPARAMS *databaseAttributeParams )
{
DWORD retVal = MSG_NOT_HANDLED;
if( databaseAttributeParams != NULL )
{
if( databaseAttributeParams->m_AttributeTypeArchive != NULL )
{
IArchive *ar = databaseAttributeParams->m_AttributeTypeArchive;
ar->SetIsWriting( true );
ar->SeekTo( 0 );
ar->Write( m_hszType.GetString() );
}
else
{
m_ToolBox->Log( LOGWARNING, _T("No archive specified for GetAttributeType.\n") );
}
retVal = MSG_HANDLED_STOP;
}
else
{
m_ToolBox->Log( LOGWARNING, _T("Attribute parameters not defined.\n") );
}
return retVal;
}
示例4: CreateAndFillArchive
IArchive* CGUIStaticText::CreateAndFillArchive()
{
if (m_LanguageTextParams)
{
CREATEARCHIVE ca;
static CHashString memType(_T("Memory"));
ca.mode = STREAM_MODE_WRITE | STREAM_MODE_READ;
ca.streamData = NULL;
ca.streamSize = 0;
ca.streamType = &memType;
static DWORD msgHash_CreateArchive = CHashString(_T("CreateArchive")).GetUniqueID();
m_ToolBox->SendMessage(msgHash_CreateArchive, sizeof(CREATEARCHIVE), &ca);
IArchive *ar = ca.archive;
if (ar)
{
ar->SetIsWriting(true);
ar->SeekTo(0);
ar->Write(m_LanguageTextParams, m_iLangTextParamSize);
}
return ar;
}
else
{
return NULL;
}
}
示例5: InitRenderScene
void CModelViewRender::InitRenderScene()
{
// set active scene to model view scene so objects created here will be placed in the correct scene
SetActiveScene();
//Create Cal3DRenderObject from loaded file
CreateScene();
// create a new Memory Archive
IArchive *pArchive = CreateMemoryArchive();
if (pArchive == NULL)
{
return;
}
StdString szEntityType(_T("EditorObject"));
//Vec3 v3Zero(0.0f, 0.0f, 0.0f);
Vec3 v3EntityLightPosition(0.0f, 200.0f, 200.0f);
EulerAngle eaZero;
Vec3 v3Scale(1.0f, 1.0f, 1.0f);
pArchive->Write(szEntityType, _T("EntityType"));
pArchive->Write(v3EntityLightPosition, _T("Position"));
pArchive->Write(eaZero, _T("Rotation"));
pArchive->Write(v3Scale, _T("Scale"));
pArchive->SetIsWriting(false);
CFileVersionSetter setter;
// Create the CEntity LightObject Parent /////////////////////////////////////////////////////////
static CHashString hszCEntity(_T("CEntity"));
if (CreateEEObject(&m_hszSceneName, &hszCEntity, m_hszLightEntityName, pArchive))
{
pArchive->SetIsWriting(true);
pArchive->SeekTo(0);
int iVersionNumber = 1000;
Vec3 v3LightPosition( 0.0, 0.0f, 0.0f );
Vec3 v3LightDirection( 0.0f, 0.0f, 0.0f );
float fAttenuation = 99999.0f;
float fColor[] = { 0.75f, 0.75f, 0.75f, 1.0f };
StdString szLightType(_T("OMNI_POINT_LIGHT"));
bool bCastShadows = false;
UINT numKeys = 0;
pArchive->Write(iVersionNumber, _T("Version"));
pArchive->Write(v3LightPosition, _T("Position"));
pArchive->Write(v3LightDirection, _T("Direction"));
pArchive->Write(fAttenuation, _T("Attenuation"));
pArchive->Write(fColor[0], _T("ColorRed") );
pArchive->Write(fColor[1], _T("ColorGreen") );
pArchive->Write(fColor[2], _T("ColorBlue") );
pArchive->Write(fColor[3], _T("ColorAlpha") );
pArchive->Write(szLightType, _T("LightType") );
pArchive->Write(bCastShadows, _T("CastShadows") );
pArchive->Write(numKeys, _T("NumKeyframes") );
pArchive->SetIsWriting(false);
// Create the Light Object ////////////////////////////////////////////////////////////////
static CHashString hszCLightObject(_T("CLightObject"));
CreateEEObject(&m_hszLightEntityName, &hszCLightObject, m_hszLightObjectName, pArchive);
}
pArchive->Close();
}
示例6: OnGetTypedDatabase
DWORD CDatabaseManager::OnGetTypedDatabase(DWORD size, void *params)
{
TYPEDATABASEINFO *pDBTypeInfo = NULL;
LOADFILEEXTPARAMS lfep;
FILENAMETODATABASEMAP::iterator itrDBInfo;
IDTOOBJECTMAP::iterator itrDBObject;
DWORD result = 0;
// Verify and Process incomming data.
VERIFY_MESSAGE_SIZE(size, sizeof(TYPEDATABASEINFO));
pDBTypeInfo = (TYPEDATABASEINFO *)params;
IHashString *tempHash = pDBTypeInfo->phszFilepath;
if (tempHash == NULL)
{
m_ToolBox->Log(LOGWARNING, _T("DB: Invalid database filename specifed, cannot be NULL\n"));
return MSG_ERROR;
}
if (!pDBTypeInfo->pArchive)
{
m_ToolBox->Log(LOGWARNING, _T("DB: Invalid database archive specifed, cannot be NULL\n"));
return MSG_ERROR;
}
// Check manager maps to see if database is already loaded.
itrDBInfo = m_FilepathToDBInfo.find( tempHash->GetUniqueID() );
itrDBObject = m_FilepathToObject.find( tempHash->GetUniqueID() );
// Name is not found and database does not exist in manager map. Load DB.
if( itrDBInfo == m_FilepathToDBInfo.end() && itrDBObject == m_FilepathToObject.end() )
{
lfep.fileName = (TCHAR *)tempHash->GetString();
lfep.bInternalLoad = true;
DWORD msgHash_LoadFileByExtension = CHashString(_T("LoadFileByExtension")).GetUniqueID();
result = m_ToolBox->SendMessage(msgHash_LoadFileByExtension,
sizeof(LOADFILEEXTPARAMS),
&lfep);
if (result != MSG_HANDLED)
{
m_ToolBox->SetErrorValue(WARN_INVALID_FILE);
m_ToolBox->Log(LOGWARNING, _T("Invalid database file %s\n"), lfep.fileName);
return MSG_NOT_HANDLED;
}
// Because databases are added to the manager automatically and we cannot get
// an iterator to the object just loaded by extension, we have to search for the
// object again in manager map.
itrDBInfo = m_FilepathToDBInfo.find( tempHash->GetUniqueID() );
itrDBObject = m_FilepathToObject.find( tempHash->GetUniqueID() );
}
// There are two types of Databases, an old type that does not use schemas and a newer type that does.
// New Type:
CDefinedDatabase *pDefinedDB = NULL;
CDatabaseSchema *pDBSchema = NULL;
if ((itrDBInfo == m_FilepathToDBInfo.end()) && (itrDBObject != m_FilepathToObject.end()))
{
pDefinedDB = (CDefinedDatabase*)(itrDBObject->second);
pDBSchema = (CDatabaseSchema*)(pDefinedDB->GetSchema());
// Retrieve Schema Table.
CREATEARCHIVE ca;
CHashString memType(_T("Memory"));
ca.mode = STREAM_MODE_WRITE | STREAM_MODE_READ;
ca.streamData = NULL;
ca.streamSize = 0;
ca.streamType = &memType;
static DWORD msgHash_CreateArchive = CHashString(_T("CreateArchive")).GetUniqueID();
m_ToolBox->SendMessage(msgHash_CreateArchive, sizeof(CREATEARCHIVE), &ca);
IArchive * archive = ca.archive;
pDBSchema->GetSchemaArchive( archive );
IArchive * archiveOut = pDBTypeInfo->pArchive;
StdString szTemp;
bool bTemp;
int nSchemaValues = 0;
StdString szName;
CHashString hszName;
StdString szType;
archive->Read(szTemp);
archive->Read(nSchemaValues);
int nDBItems = pDefinedDB->GetNumItems();
// Write Total Number of Elements
archiveOut->SetIsWriting(true);
archiveOut->Write(nDBItems);
archiveOut->Write(nSchemaValues);
for (int i = 0; i < nDBItems; i++)
{
archive->SeekTo(0);
archive->Read(szTemp);
archive->Read(nSchemaValues);
for (int j = 0; j < nSchemaValues; j++)
{
archive->Read(szName);
archive->Read(szType);
archive->Read(bTemp);
hszName.Init( szType.c_str() );
//.........这里部分代码省略.........
示例7: UndoRedoObjectDataImpl
/// \brief implementation for buffer data interaction of object undo/redo actions
/// \param pCommand - pointer to command this action belongs to
/// \param hashName - hash of object name to interact
/// \param offset - delta data offset in command buffer
/// \param size - delta data size in command buffer
/// \param mode - command buffer interaction mode
DWORD UndoRedoObjectDataImpl(CUndoCommandData *pCommand, DWORD hashName, size_t offset, size_t size, DeltaMode mode)
{
DWORD res = MSG_HANDLED;
// get data offset
LPBYTE pData = pCommand->GetDeltaData() + offset;
IToolBox *pToolBox = EngineGetToolBox();
CHashString hszName = pToolBox->GetHashString(hashName);
// check if we need to apply data changes or may init object directly
if (size > 0)
{
IArchive *pArchive;
if (DeltaNone == mode)
{
// create archive for serialization and fill it with buffered data
pArchive = CreateMemoryArchive(pData, (DWORD)size);
}
else
{
// get current object state for applying delta data
pArchive = GetEEObjectProperties(&hszName);
Buffer currentData;
// extract serialized data to buffer
GetArchiveStreamData(pArchive, currentData);
// adjust serialized data length if this is needed
if (currentData.size() < size)
{
currentData.resize(size, 0);
}
// restore correct data for the stream
if (DeltaAdd == mode)
{
for (Buffer::iterator it = currentData.begin(); size > 0; --size, ++pData, ++it)
{
(*it) = (*it) + (*pData);
}
}
else
{
for (Buffer::iterator it = currentData.begin(); size > 0; --size, ++pData, ++it)
{
(*it) = (*it) - (*pData);
}
}
// then write it
pArchive->SetIsWriting(true);
pArchive->SeekTo(0);
pArchive->Write(¤tData.front(), currentData.size());
}
CFileVersionSetter lastVersion;
// setup up serialization parameters
SERIALIZEOBJECTPARAMS sop;
sop.name = &hszName;
sop.archive = pArchive;
pArchive->SetIsWriting(false);
pArchive->SeekTo(0);
// serialize object from archive
static DWORD msgHash_SerializeObject = CHashString(_T("SerializeObject")).GetUniqueID();
res = pToolBox->SendMessage(msgHash_SerializeObject, sizeof(sop), &sop);
if (res != MSG_HANDLED)
{
// log this error?
return res;
}
int count = 0;
pArchive->Read(count, _T("count"));
ASSERT(count >= 0 && count <= 8);
if (count > 0)
{
EDITINGPROPERTIESPARAMS epp;
epp.name = &hszName;
while (count--)
{
StdString name;
StdString value;
pArchive->Read(name, _T("name"));
pArchive->Read(value, _T("value"));
epp.params.insert(make_pair(name, value));
}
static const DWORD hashMsg_SetEditingProperties = CHashString(_T("SetEditingProperties")).GetUniqueID();
pToolBox->SendMessage(hashMsg_SetEditingProperties, sizeof(epp), &epp);
}
pArchive->Close();
}
INITOBJECTPARAMS iop;
// send message to EE to initialize the object
iop.name = &hszName;
//.........这里部分代码省略.........
示例8: OnLoadSoundDatabase
DWORD COpenALSoundUtility::OnLoadSoundDatabase(DWORD size, void* param)
{
VERIFY_MESSAGE_SIZE(size, sizeof(IHashString));
IHashString *dbFileName = (IHashString*) param;
if ((dbFileName != NULL) && (_tcscmp(dbFileName->GetString(), _T("")) != 0))
{
TCHAR *fileName = _tcsdup(dbFileName->GetString());
LOADFILEEXTPARAMS lfep;
lfep.fileName = fileName;
lfep.bInternalLoad = true;
static DWORD msgLoadFileByExtension = CHashString(_T("LoadFileByExtension")).GetUniqueID();
DWORD retval = m_ToolBox->SendMessage(msgLoadFileByExtension, sizeof(LOADFILEEXTPARAMS), &lfep);
free( fileName );
if (retval == MSG_HANDLED)
{
// clear prior sound list - not additive, exclusive!
m_SoundMap.clear();
CHashString hsSoundDBObject;
DATABASEINFO dbi;
dbi.m_FileName = dbFileName;
static DWORD msgGetDatabase = CHashString(_T("GetDatabase")).GetUniqueID();
retval = m_ToolBox->SendMessage(msgGetDatabase, sizeof(DATABASEINFO), &dbi);
if (retval == MSG_HANDLED)
{
hsSoundDBObject.Init(dbi.m_DatabaseName->GetString());
DATABASEATTRIBUTEPARAMS dap;
CREATEARCHIVE ca;
static CHashString memType(_T("Memory"));
ca.mode = STREAM_MODE_WRITE | STREAM_MODE_READ;
ca.streamData = NULL;
ca.streamSize = 0;
ca.streamType = &memType;
static DWORD msgHash_CreateArchive = CHashString(_T("CreateArchive")).GetUniqueID();
m_ToolBox->SendMessage(msgHash_CreateArchive, sizeof(CREATEARCHIVE), &ca);
IArchive *attribArchive = ca.archive;
if (attribArchive == NULL)
{
m_ToolBox->Log(LOGERROR, _T("Sound manager: archive is null; could not get sound attributes!\n\tNo sounds loaded!\n"));
return MSG_ERROR;
}
dap.m_AttributeArchive = attribArchive;
static DWORD msgGetAttribute = CHashString(_T("GetAttribute")).GetUniqueID();
static CHashString hsKeyString(_T("KeyString"));
static CHashString hsFileName(_T("FileName"));
static CHashString hsGlobalVolume(_T("GlobalVolume"));
static CHashString hsCachedUncompressed(_T("CacheUncompressed"));
static CHashString hsDBType(_T("CDefinedDatabase"));
for (UINT i=0; i<(UINT)dbi.m_nItems; i++)
{
// get key string
attribArchive->SeekTo(0, SEEK_SET);
dap.m_Index = i;
dap.m_AttributeName = &hsKeyString;
retval = m_ToolBox->SendMessage(msgGetAttribute, sizeof(DATABASEATTRIBUTEPARAMS), &dap, &hsSoundDBObject, &hsDBType);
if (retval != MSG_HANDLED)
{
m_ToolBox->Log(LOGERROR, _T("Sound manager: could not get key attribute for row %d; sounds not fully loaded!\n"), i);
attribArchive->Close();
return MSG_ERROR;
}
CHashString hsKey;
StdString szKey;
attribArchive->SetIsWriting(false);
attribArchive->Read(szKey);
hsKey = szKey;
// get filename
attribArchive->SeekTo(0, SEEK_SET);
dap.m_AttributeName = &hsFileName;
retval = m_ToolBox->SendMessage(msgGetAttribute, sizeof(DATABASEATTRIBUTEPARAMS), &dap, &hsSoundDBObject, &hsDBType);
if (retval != MSG_HANDLED)
{
m_ToolBox->Log(LOGERROR, _T("Sound manager: could not get file attribute for row %d; sounds not fully loaded!\n"), i);
attribArchive->Close();
return MSG_ERROR;
}
CHashString hsFile;
StdString szFile;
attribArchive->SetIsWriting(false);
attribArchive->Read(szFile);
szFile.tolower();
hsFile = szFile;
// get volume
attribArchive->SeekTo(0, SEEK_SET);
dap.m_AttributeName = &hsGlobalVolume;
retval = m_ToolBox->SendMessage(msgGetAttribute, sizeof(DATABASEATTRIBUTEPARAMS), &dap, &hsSoundDBObject, &hsDBType);
if (retval != MSG_HANDLED)
{
m_ToolBox->Log(LOGERROR, _T("Sound manager: could not get volume attribute for row %d; sounds not fully loaded!\n"), i);
//.........这里部分代码省略.........