本文整理汇总了C++中idHashIndex类的典型用法代码示例。如果您正苦于以下问题:C++ idHashIndex类的具体用法?C++ idHashIndex怎么用?C++ idHashIndex使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了idHashIndex类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: FindData
/*
================
sdPersistentRankInfo::FindData
================
*/
float sdPersistentRankInfo::FindData( const char* key, const idHashIndex& hash, const sdNetStatKeyValList& list ) {
int hashkey = hash.GenerateKey( key, false );
for ( int index = hash.GetFirst( hashkey ); index != -1; index = hash.GetNext( index ) ) {
if ( idStr::Icmp( list[ index ].key->c_str(), key ) != 0 ) {
continue;
}
switch ( list[ index ].type ) {
case sdNetStatKeyValue::SVT_INT:
return list[ index ].val.i;
case sdNetStatKeyValue::SVT_FLOAT:
return list[ index ].val.f;
default:
assert( false );
break;
}
}
return 0.f;
}
开发者ID:,项目名称:,代码行数:25,代码来源:
示例2: ClearTraceModelCache
/*
===============
idClipModel::ClearTraceModelCache
===============
*/
void idClipModel::ClearTraceModelCache()
{
traceModelCache.DeleteContents( true );
traceModelCache_Unsaved.DeleteContents( true );
traceModelHash.Free();
traceModelHash_Unsaved.Free();
}
开发者ID:dcahrakos,项目名称:RBDOOM-3-BFG,代码行数:12,代码来源:Clip.cpp
示例3:
/*
============
idCVarSystemLocal::FindInternal
============
*/
idInternalCVar *idCVarSystemLocal::FindInternal( const char *name ) const {
int hash = cvarHash.GenerateKey( name, false );
for ( int i = cvarHash.First( hash ); i != -1; i = cvarHash.Next( i ) ) {
if ( cvars[i]->nameString.Icmp( name ) == 0 ) {
return cvars[i];
}
}
return NULL;
}
开发者ID:AndreiBarsan,项目名称:doom3.gpl,代码行数:14,代码来源:CVarSystem.cpp
示例4: RemoveModel
/*
=================
idRenderModelManagerLocal::RemoveModel
=================
*/
void idRenderModelManagerLocal::RemoveModel( idRenderModel* model )
{
int index = models.FindIndex( model );
if( index != -1 )
{
hash.RemoveIndex( hash.GenerateKey( model->Name(), false ), index );
models.RemoveIndex( index );
}
}
开发者ID:LucasCampos,项目名称:RBDOOM-3-BFG,代码行数:14,代码来源:ModelManager.cpp
示例5: SetInternal
/*
============
idCVarSystemLocal::SetInternal
============
*/
void idCVarSystemLocal::SetInternal( const char *name, const char *value, int flags ) {
int hash;
idInternalCVar *internal;
internal = FindInternal( name );
if ( internal ) {
internal->InternalSetString( value );
internal->flags |= flags & ~CVAR_STATIC;
internal->UpdateCheat();
} else {
internal = new idInternalCVar( name, value, flags );
hash = cvarHash.GenerateKey( internal->nameString.c_str(), false );
cvarHash.Add( hash, cvars.Append( internal ) );
}
}
开发者ID:AndreiBarsan,项目名称:doom3.gpl,代码行数:21,代码来源:CVarSystem.cpp
示例6: Shutdown
/*
============
idCVarSystemLocal::Shutdown
============
*/
void idCVarSystemLocal::Shutdown( void )
{
cvars.DeleteContents( true );
cvarHash.Free();
moveCVarsToDict.Clear();
initialized = false;
}
开发者ID:revelator,项目名称:Revelator-Doom3,代码行数:12,代码来源:CVarSystem.cpp
示例7: Register
/*
============
idCVarSystemLocal::Register
============
*/
void idCVarSystemLocal::Register( idCVar *cvar ) {
int hash;
idInternalCVar *internal;
cvar->SetInternalVar( cvar );
internal = FindInternal( cvar->GetName() );
if ( internal ) {
internal->Update( cvar );
} else {
internal = new idInternalCVar( cvar );
hash = cvarHash.GenerateKey( internal->nameString.c_str(), false );
cvarHash.Add( hash, cvars.Append( internal ) );
}
cvar->SetInternalVar( internal );
}
开发者ID:AndreiBarsan,项目名称:doom3.gpl,代码行数:23,代码来源:CVarSystem.cpp
示例8: AllocTraceModel
/*
===============
idClipModel::AllocTraceModel
===============
*/
int idClipModel::AllocTraceModel( const idTraceModel &trm ) {
int i, hashKey, traceModelIndex;
trmCache_t *entry;
hashKey = GetTraceModelHashKey( trm );
for( i = traceModelHash.First( hashKey ); i >= 0; i = traceModelHash.Next( i ) ) {
if( traceModelCache[i]->trm == trm ) {
traceModelCache[i]->refCount++;
return i;
}
}
entry = new trmCache_t;
entry->trm = trm;
entry->trm.GetMassProperties( 1.0f, entry->volume, entry->centerOfMass, entry->inertiaTensor );
entry->refCount = 1;
traceModelIndex = traceModelCache.Append( entry );
traceModelHash.Add( hashKey, traceModelIndex );
return traceModelIndex;
}
开发者ID:revelator,项目名称:Revelation-Engine,代码行数:23,代码来源:Clip.cpp
示例9: RestoreTraceModels
/*
===============
idClipModel::RestoreTraceModels
===============
*/
void idClipModel::RestoreTraceModels( idRestoreGame *savefile ) {
int i, num;
ClearTraceModelCache();
savefile->ReadInt( num );
traceModelCache.SetNum( num );
for( i = 0; i < num; i++ ) {
trmCache_t *entry = new trmCache_t;
savefile->ReadTraceModel( entry->trm );
savefile->ReadFloat( entry->volume );
savefile->ReadVec3( entry->centerOfMass );
savefile->ReadMat3( entry->inertiaTensor );
entry->refCount = 0;
traceModelCache[i] = entry;
traceModelHash.Add( GetTraceModelHashKey( entry->trm ), i );
}
}
开发者ID:revelator,项目名称:Revelation-Engine,代码行数:21,代码来源:Clip.cpp
示例10: AddModel
/*
=================
idRenderModelManagerLocal::AddModel
=================
*/
void idRenderModelManagerLocal::AddModel( idRenderModel *model ) {
hash.Add( hash.GenerateKey( model->Name(), false ), models.Append( model ) );
}
开发者ID:galek,项目名称:fhDOOM,代码行数:8,代码来源:ModelManager.cpp
示例11: if
/*
=================
idRenderModelManagerLocal::GetModel
=================
*/
idRenderModel *idRenderModelManagerLocal::GetModel( const char *modelName, bool createIfNotFound ) {
idStr canonical;
idStr extension;
if ( !modelName || !modelName[0] ) {
return NULL;
}
canonical = modelName;
canonical.ToLower();
// see if it is already present
int key = hash.GenerateKey( modelName, false );
for ( int i = hash.First( key ); i != -1; i = hash.Next( i ) ) {
idRenderModel *model = models[i];
if ( canonical.Icmp( model->Name() ) == 0 ) {
if ( !model->IsLoaded() ) {
// reload it if it was purged
model->LoadModel();
} else if ( insideLevelLoad && !model->IsLevelLoadReferenced() ) {
// we are reusing a model already in memory, but
// touch all the materials to make sure they stay
// in memory as well
model->TouchData();
}
model->SetLevelLoadReferenced( true );
return model;
}
}
// see if we can load it
// determine which subclass of idRenderModel to initialize
idRenderModel *model;
canonical.ExtractFileExtension( extension );
if ( ( extension.Icmp( "ase" ) == 0 ) || ( extension.Icmp( "lwo" ) == 0 ) || ( extension.Icmp( "flt" ) == 0 ) || ( extension.Icmp( "obj" ) == 0 ) ) {
model = new idRenderModelStatic;
model->InitFromFile( modelName );
} else if ( extension.Icmp( "ma" ) == 0 ) {
model = new idRenderModelStatic;
model->InitFromFile( modelName );
} else if ( extension.Icmp( MD5_MESH_EXT ) == 0 ) {
model = new idRenderModelMD5;
model->InitFromFile( modelName );
} else if ( extension.Icmp( "md3" ) == 0 ) {
model = new idRenderModelMD3;
model->InitFromFile( modelName );
} else if ( extension.Icmp( "prt" ) == 0 ) {
model = new idRenderModelPrt;
model->InitFromFile( modelName );
} else if ( extension.Icmp( "liquid" ) == 0 ) {
model = new idRenderModelLiquid;
model->InitFromFile( modelName );
} else {
if ( extension.Length() ) {
common->Warning( "unknown model type '%s'", canonical.c_str() );
}
if ( !createIfNotFound ) {
return NULL;
}
idRenderModelStatic *smodel = new idRenderModelStatic;
smodel->InitEmpty( modelName );
smodel->MakeDefaultModel();
model = smodel;
}
model->SetLevelLoadReferenced( true );
if ( !createIfNotFound && model->IsDefaultModel() ) {
delete model;
model = NULL;
return NULL;
}
AddModel( model );
return model;
}
开发者ID:galek,项目名称:fhDOOM,代码行数:92,代码来源:ModelManager.cpp
示例12: Shutdown
/*
=================
idRenderModelManagerLocal::Shutdown
=================
*/
void idRenderModelManagerLocal::Shutdown() {
models.DeleteContents( true );
hash.Free();
}
开发者ID:galek,项目名称:fhDOOM,代码行数:9,代码来源:ModelManager.cpp
示例13: GetModel
/*
=================
idRenderModelManagerLocal::GetModel
=================
*/
idRenderModel* idRenderModelManagerLocal::GetModel( const char* _modelName, bool createIfNotFound )
{
if( !_modelName || !_modelName[0] )
{
return NULL;
}
idStrStatic< MAX_OSPATH > canonical = _modelName;
canonical.ToLower();
idStrStatic< MAX_OSPATH > extension;
canonical.ExtractFileExtension( extension );
// see if it is already present
int key = hash.GenerateKey( canonical, false );
for( int i = hash.First( key ); i != -1; i = hash.Next( i ) )
{
idRenderModel* model = models[i];
if( canonical.Icmp( model->Name() ) == 0 )
{
if( !model->IsLoaded() )
{
// reload it if it was purged
idStr generatedFileName = "generated/rendermodels/";
generatedFileName.AppendPath( canonical );
generatedFileName.SetFileExtension( va( "b%s", extension.c_str() ) );
if( model->SupportsBinaryModel() && r_binaryLoadRenderModels.GetBool() )
{
idFileLocal file( fileSystem->OpenFileReadMemory( generatedFileName ) );
model->PurgeModel();
if( !model->LoadBinaryModel( file, 0 ) )
{
model->LoadModel();
}
}
else
{
model->LoadModel();
}
}
else if( insideLevelLoad && !model->IsLevelLoadReferenced() )
{
// we are reusing a model already in memory, but
// touch all the materials to make sure they stay
// in memory as well
model->TouchData();
}
model->SetLevelLoadReferenced( true );
return model;
}
}
// see if we can load it
// determine which subclass of idRenderModel to initialize
idRenderModel* model = NULL;
if( ( extension.Icmp( "ase" ) == 0 ) || ( extension.Icmp( "lwo" ) == 0 ) || ( extension.Icmp( "flt" ) == 0 ) || ( extension.Icmp( "ma" ) == 0 ) )
{
model = new( TAG_MODEL ) idRenderModelStatic;
}
else if( extension.Icmp( MD5_MESH_EXT ) == 0 )
{
model = new( TAG_MODEL ) idRenderModelMD5;
}
else if( extension.Icmp( "md3" ) == 0 )
{
model = new( TAG_MODEL ) idRenderModelMD3;
}
else if( extension.Icmp( "prt" ) == 0 )
{
model = new( TAG_MODEL ) idRenderModelPrt;
}
else if( extension.Icmp( "liquid" ) == 0 )
{
model = new( TAG_MODEL ) idRenderModelLiquid;
}
idStrStatic< MAX_OSPATH > generatedFileName;
if( model != NULL )
{
generatedFileName = "generated/rendermodels/";
generatedFileName.AppendPath( canonical );
generatedFileName.SetFileExtension( va( "b%s", extension.c_str() ) );
// Get the timestamp on the original file, if it's newer than what is stored in binary model, regenerate it
ID_TIME_T sourceTimeStamp = fileSystem->GetTimestamp( canonical );
idFileLocal file( fileSystem->OpenFileReadMemory( generatedFileName ) );
//.........这里部分代码省略.........
开发者ID:LucasCampos,项目名称:RBDOOM-3-BFG,代码行数:101,代码来源:ModelManager.cpp
示例14: AllocTraceModel
/*
===============
idClipModel::AllocTraceModel
===============
*/
int idClipModel::AllocTraceModel( const idTraceModel& trm, bool persistantThroughSaves )
{
int i, hashKey, traceModelIndex;
trmCache_t* entry;
hashKey = GetTraceModelHashKey( trm );
if( persistantThroughSaves )
{
// Look Inside the saved list.
for( i = traceModelHash.First( hashKey ); i >= 0; i = traceModelHash.Next( i ) )
{
if( traceModelCache[i]->trm == trm )
{
traceModelCache[i]->refCount++;
int flagged_index = i | TRACE_MODEL_SAVED;
return flagged_index;
}
}
}
else
{
// Look inside the unsaved list.
for( i = traceModelHash_Unsaved.First( hashKey ); i >= 0; i = traceModelHash_Unsaved.Next( i ) )
{
if( traceModelCache_Unsaved[i]->trm == trm )
{
traceModelCache_Unsaved[i]->refCount++;
return i;
}
}
}
entry = new( TAG_PHYSICS_CLIP ) trmCache_t;
entry->trm = trm;
entry->trm.GetMassProperties( 1.0f, entry->volume, entry->centerOfMass, entry->inertiaTensor );
entry->refCount = 1;
if( persistantThroughSaves )
{
traceModelIndex = traceModelCache.Append( entry );
traceModelHash.Add( hashKey, traceModelIndex );
// Set the saved bit.
traceModelIndex |= TRACE_MODEL_SAVED;
}
else
{
traceModelIndex = traceModelCache_Unsaved.Append( entry );
traceModelHash_Unsaved.Add( hashKey, traceModelIndex );
// remove the saved bit
traceModelIndex &= ~TRACE_MODEL_SAVED;
}
return traceModelIndex;
}
开发者ID:dcahrakos,项目名称:RBDOOM-3-BFG,代码行数:66,代码来源:Clip.cpp
注:本文中的idHashIndex类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论