本文整理汇总了C++中idHashIndex::GenerateKey方法的典型用法代码示例。如果您正苦于以下问题:C++ idHashIndex::GenerateKey方法的具体用法?C++ idHashIndex::GenerateKey怎么用?C++ idHashIndex::GenerateKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idHashIndex
的用法示例。
在下文中一共展示了idHashIndex::GenerateKey方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/*
============
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;
}
示例2: 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 );
}
}
示例3: 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 ) );
}
}
示例4: 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 );
}
示例5: 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;
}
示例6: AddModel
/*
=================
idRenderModelManagerLocal::AddModel
=================
*/
void idRenderModelManagerLocal::AddModel( idRenderModel *model ) {
hash.Add( hash.GenerateKey( model->Name(), false ), models.Append( model ) );
}
示例7: 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;
}
示例8: 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 ) );
//.........这里部分代码省略.........