本文整理汇总了C++中dbcfile::Iterator类的典型用法代码示例。如果您正苦于以下问题:C++ Iterator类的具体用法?C++ Iterator怎么用?C++ Iterator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Iterator类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sc
Sky::Sky( DBCFile::Iterator data )
{
pos = Vec3D( data->getFloat( LightDB::PositionX ) / skymul, data->getFloat( LightDB::PositionY ) / skymul, data->getFloat( LightDB::PositionZ ) / skymul );
r1 = data->getFloat( LightDB::RadiusInner ) / skymul;
r2 = data->getFloat( LightDB::RadiusOuter ) / skymul;
//gLog( "New sky (%i) at (%f,%f,%f) with (%f > %f).\n", data->getInt( LightDB::ID ), pos.x, pos.y, pos.z, r1, r2 );
for (int i=0; i<36; i++)
mmin[i] = -2;
global = ( pos.x == 0.0f && pos.y == 0.0f && pos.z == 0.0f );
int FirstId = data->getInt( LightDB::DataIDs ) * 18;
for( int i = 0; i < 18; i++ )
{
try {
DBCFile::Record rec = gLightIntBandDB.getByID( FirstId + i );
int entries = rec.getInt( LightIntBandDB::Entries );
if ( entries == 0 )
mmin[i] = -1;
else
{
mmin[i] = rec.getInt( LightIntBandDB::Times );
for( int l = 0; l < entries; l++ )
{
SkyColor sc( rec.getInt( LightIntBandDB::Times + l ), rec.getInt( LightIntBandDB::Values + l ) );
colorRows[i].push_back( sc );
}
}
} catch (LightIntBandDB::NotFound) {
}
}
}
开发者ID:ahpho,项目名称:wowmapviewer,代码行数:35,代码来源:sky.cpp
示例2: s
Skies::Skies( int mapid )
{
gLog( "Skies::Skies( %i );\n", mapid );
numSkies = 0;
cs = -1;
stars = 0;
for( DBCFile::Iterator i = gLightDB.begin(); i != gLightDB.end(); ++i )
{
if( mapid == i->getUInt( LightDB::Map ) )
{
Sky s( i );
skies.push_back( s );
numSkies++;
}
}
// sort skies from smallest to largest; global last.
// smaller skies will have precedence when calculating weights to achieve smooth transitions etc.
std::sort( skies.begin( ), skies.end( ) );
stars = new Model( "Environments\\Stars\\Stars.mdx", true );
}
开发者ID:ahpho,项目名称:wowmapviewer,代码行数:25,代码来源:sky.cpp
示例3: ExtractGameobjectModels
void ExtractGameobjectModels()
{
printf("Extracting GameObject models...");
DBCFile dbc(LocaleMpq, "DBFilesClient\\GameObjectDisplayInfo.dbc");
if(!dbc.open())
{
printf("Fatal error: Invalid GameObjectDisplayInfo.dbc file format!\n");
exit(1);
}
std::string basepath = szWorkDirWmo;
basepath += "/";
std::string path;
FILE * model_list = fopen((basepath + "temp_gameobject_models").c_str(), "wb");
for (DBCFile::Iterator it = dbc.begin(); it != dbc.end(); ++it)
{
path = it->getString(1);
if (path.length() < 4)
continue;
FixNameCase((char*)path.c_str(), path.size());
char * name = GetPlainName((char*)path.c_str());
FixNameSpaces(name, strlen(name));
char * ch_ext = GetExtension(name);
if (!ch_ext)
continue;
strToLower(ch_ext);
bool result = false;
if (!strcmp(ch_ext, ".wmo"))
result = ExtractSingleWmo(path);
else if (!strcmp(ch_ext, ".mdl")) // TODO: extract .mdl files, if needed
continue;
else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2"))
result = ExtractSingleModel(path);
if (result)
{
uint32 displayId = it->getUInt(0);
uint32 path_length = strlen(name);
fwrite(&displayId, sizeof(uint32), 1, model_list);
fwrite(&path_length, sizeof(uint32), 1, model_list);
fwrite(name, sizeof(char), path_length, model_list);
}
}
fclose(model_list);
printf("Done!\n");
}
开发者ID:Allowed,项目名称:SkyFire_5xx,代码行数:55,代码来源:gameobject_extract.cpp
示例4: createMapList
void Menu::createMapList()
{
for (DBCFile::Iterator i = gMapDB.begin(); i != gMapDB.end(); ++i)
{
MapEntry e;
e.mapID = i->getInt(MapDB::MapID);
e.name = i->getLocalizedString(MapDB::Name);
e.areaType = i->getUInt(MapDB::AreaType);
if (e.areaType == 3) e.name = i->getString(MapDB::InternalName);
if (e.areaType < 0 || e.areaType > 3 || !World::IsEditableWorld(e.mapID))
continue;
mMaps.push_back(e);
}
}
开发者ID:Deamon87,项目名称:Noggit3Fork,代码行数:16,代码来源:Menu.cpp
示例5: loadMap
void Menu::loadMap(int mapID)
{
delete gWorld;
gWorld = NULL;
for (DBCFile::Iterator it = gMapDB.begin(); it != gMapDB.end(); ++it)
{
if (it->getInt(MapDB::MapID) == mapID)
{
gWorld = new World(it->getString(MapDB::InternalName));
mGUIMinimapWindow->show();
return;
}
}
LogError << "Map with ID " << mapID << " not found. Failed loading." << std::endl;
}
开发者ID:Deamon87,项目名称:Noggit3Fork,代码行数:17,代码来源:Menu.cpp
示例6: s
Skies::Skies(unsigned int mapid)
{
numSkies = 0;
cs = -1;
stars = 0;
for (DBCFile::Iterator i = gLightDB.begin(); i != gLightDB.end(); ++i)
{
if (mapid == i->getUInt(LightDB::Map))
{
Sky s(i);
skies.push_back(s);
numSkies++;
}
}
if (numSkies == 0)
{
for (DBCFile::Iterator i = gLightDB.begin(); i != gLightDB.end(); ++i)
{
if (0 == i->getUInt(LightDB::Map))
{
Sky s(i);
skies.push_back(s);
numSkies++;
break;
}
}
}
// sort skies from smallest to largest; global last.
// smaller skies will have precedence when calculating weights to achieve smooth transitions etc.
std::sort(skies.begin(), skies.end());
stars = ModelManager::add("Environments\\Stars\\Stars.mdx");
}
开发者ID:vienis,项目名称:noggit,代码行数:38,代码来源:Sky.cpp
示例7: buildTypeList
void UIWaterTypeBrowser::buildTypeList()
{
removeChild( WaterTypeList );
WaterTypeList = new UIListView(4,24,width() - 8,height() - 28,20);
WaterTypeList->clickable( true );
addChild(WaterTypeList);
//LiquidTypeDB::getLiquidName(gWorld->getWaterType(tileX, tileY));
for( DBCFile::Iterator i = gLiquidTypeDB.begin(); i != gLiquidTypeDB.end(); ++i )
{
UIFrame *curFrame = new UIFrame(1,1,1,1);
std::stringstream ss;
ss << i->getInt(LiquidTypeDB::ID) << "-" << LiquidTypeDB::getLiquidName(i->getInt(LiquidTypeDB::ID));
UIButton *tempButton = new UIButton(0.0f,
0.0f,
200.0f,
28.0f,
ss.str(),
"Interface\\DialogFrame\\UI-DialogBox-Background-Dark.blp",
"Interface\\DialogFrame\\UI-DialogBox-Background-Dark.blp",
boost::bind(&UIWaterTypeBrowser::setWaterTypeID, this, _1, _2), //steff: kidding me? we talked about this some h before u did this
i->getInt(LiquidTypeDB::ID)
);
tempButton->setLeft();
curFrame->addChild(tempButton);
WaterTypeList->addElement(curFrame);
}
WaterTypeList->recalcElements(1);
}
开发者ID:Hlkz,项目名称:noggit,代码行数:36,代码来源:UIWaterTypeBrowser.cpp
示例8: sc
Sky::Sky(DBCFile::Iterator data)
{
pos = Vec3D(data->getFloat(LightDB::PositionX) / skymul, data->getFloat(LightDB::PositionY) / skymul, data->getFloat(LightDB::PositionZ) / skymul);
r1 = data->getFloat(LightDB::RadiusInner) / skymul;
r2 = data->getFloat(LightDB::RadiusOuter) / skymul;
for (int i = 0; i<36; ++i)
mmin[i] = -2;
global = (pos.x == 0.0f && pos.y == 0.0f && pos.z == 0.0f);
int FirstId = data->getInt(LightDB::DataIDs) * 18 - 17; // cromons light fix ;) Thanks
for (int i = 0; i < 18; ++i)
{
try
{
DBCFile::Record rec = gLightIntBandDB.getByID(FirstId + i);
int entries = rec.getInt(LightIntBandDB::Entries);
if (entries == 0)
mmin[i] = -1;
else
{
mmin[i] = rec.getInt(LightIntBandDB::Times);
for (int l = 0; l < entries; l++)
{
SkyColor sc(rec.getInt(LightIntBandDB::Times + l), rec.getInt(LightIntBandDB::Values + l));
colorRows[i].push_back(sc);
}
}
}
catch (...)
{
LogError << "When trying to intialize sky " << data->getInt(LightDB::ID) << ", there was an error with getting an entry in a DBC (" << i << "). Sorry." << std::endl;
DBCFile::Record rec = gLightIntBandDB.getByID(i);
int entries = rec.getInt(LightIntBandDB::Entries);
if (entries == 0)
mmin[i] = -1;
else
{
mmin[i] = rec.getInt(LightIntBandDB::Times);
for (int l = 0; l < entries; l++)
{
SkyColor sc(rec.getInt(LightIntBandDB::Times + l), rec.getInt(LightIntBandDB::Values + l));
colorRows[i].push_back(sc);
}
}
}
}
/*
unsigned int SKYFOG = data->getInt( LightDB::DataIDs );
unsigned int ID = data->getInt( LightDB::ID );
DBCFile::Record rec = gLightParamsDB.getByID( SKYFOG );
unsigned int skybox = rec.getInt( LightParamsDB::skybox);
if ( skybox == 0 )
alt_sky=NULL;
else{
DBCFile::Record rec = gLightSkyboxDB.getByID(skybox);
std::string skyname= rec.getString(LightSkyboxDB::filename);
alt_sky=new Model(skyname); // if this is ever uncommented, use ModelManager::
Log << "Loaded sky " << skyname << std::endl;
}
*/
}
开发者ID:vienis,项目名称:noggit,代码行数:73,代码来源:Sky.cpp
示例9: ExtractGameobjectModels
void ExtractGameobjectModels()
{
printf("\n");
printf("Extracting GameObject models...\n");
DBCFile dbc("DBFilesClient\\GameObjectDisplayInfo.dbc");
if (!dbc.open())
{
printf("Fatal error: Invalid GameObjectDisplayInfo.dbc file format!\n");
exit(1);
}
std::string basepath = szWorkDirWmo;
basepath += "/";
std::string path;
StringSet failedPaths;
FILE* model_list = fopen((basepath + "temp_gameobject_models").c_str(), "wb");
for (DBCFile::Iterator it = dbc.begin(); it != dbc.end(); ++it)
{
path = it->getString(1);
if (path.length() < 4)
continue;
fixnamen((char*)path.c_str(), path.size());
char* name = GetPlainName((char*)path.c_str());
fixname2(name, strlen(name));
char* ch_ext = GetExtension(name);
if (!ch_ext)
continue;
strToLower(ch_ext);
bool result = false;
if (!strcmp(ch_ext, ".wmo"))
{
result = ExtractSingleWmo(path);
}
else if (!strcmp(ch_ext, ".mdl"))
{
// TODO: extract .mdl files, if needed
continue;
}
else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2"))
{
result = ExtractSingleModel(path, failedPaths);
}
if (result)
{
uint32 displayId = it->getUInt(0);
uint32 path_length = strlen(name);
fwrite(&displayId, sizeof(uint32), 1, model_list);
fwrite(&path_length, sizeof(uint32), 1, model_list);
fwrite(name, sizeof(char), path_length, model_list);
}
}
fclose(model_list);
if (!failedPaths.empty())
{
printf("Warning: Some models could not be extracted, see below\n");
for (StringSet::const_iterator itr = failedPaths.begin(); itr != failedPaths.end(); ++itr)
printf("Could not find file of model %s\n", itr->c_str());
printf("A few of these warnings are expected to happen, so be not alarmed!\n");
}
printf("Done!\n");
}
开发者ID:7e3J4y,项目名称:mangos-wotlk,代码行数:72,代码来源:gameobject_extract.cpp
示例10: main
int main()
{
InitMPQs();
FILE* fo = fopen("display_bounding_boxes.sql", "w");
DBCFile displayInfo("DBFilesClient\\CreatureDisplayInfo.dbc");
DBCFile modelInfo("DBFilesClient\\CreatureModelData.dbc");
displayInfo.open();
modelInfo.open();
std::map<uint32, DBCFile::Record> modelInfoEntries;
std::map<std::string, ModelCache> modelCache;
for (DBCFile::Iterator itr = modelInfo.begin(); itr != modelInfo.end(); ++itr)
{
unsigned int entry = itr->getInt(0);
modelInfoEntries.insert(std::make_pair(entry, *itr));
}
for (DBCFile::Iterator itr = displayInfo.begin(); itr != displayInfo.end(); ++itr)
{
unsigned int displayid = itr->getInt(0);
unsigned int modelentry = itr->getInt(1);
float modelscale = itr->getFloat(4);
std::map<uint32, DBCFile::Record>::iterator modelitr = modelInfoEntries.find(modelentry);
if (modelitr == modelInfoEntries.end())
{
printf("Cannot find model entry for display %u (entry %u)\n", displayid, modelentry);
continue;
}
DBCFile::Record modelrec = modelitr->second;
const char* modelname = modelrec.getString(2);
std::string strmodelname(modelname);
replace(strmodelname, ".mdx", ".m2", 0);
replace(strmodelname, ".MDX", ".m2", 0);
M2Header* header;
M2Attachment* attachments;
M2Bone* bones;
uint16* bonelookups;
std::map<std::string, ModelCache>::iterator cacheitr = modelCache.find(modelname);
if (cacheitr == modelCache.end())
{
MPQFile modelf(strmodelname.c_str());
if (modelf.isEof())
{
printf("Error: cannot open %s\n", strmodelname.c_str());
continue;
}
printf("Processing %u", displayid);
header = (M2Header*)malloc(sizeof(M2Header));
modelf.read(header, sizeof(M2Header));
printf(" %u attachments %u bone lookups %u bones\n", header->nAttachments, header->nBoneLookupTable, header->nBones);
attachments = (M2Attachment*)malloc(header->nAttachments * sizeof(M2Attachment));
modelf.seek(header->ofsAttachments);
modelf.read(attachments, header->nAttachments * sizeof(M2Attachment));
bonelookups = (uint16*)malloc(header->nBoneLookupTable * sizeof(uint16));
modelf.seek(header->ofsBoneLookupTable);
modelf.read(bonelookups, header->nBoneLookupTable * sizeof(uint16));
bones = (M2Bone*)malloc(header->nBones * sizeof(M2Bone));
modelf.seek(header->ofsBones);
modelf.read(bones, header->nBones * sizeof(M2Bone));
ModelCache cacheentry;
cacheentry.attachments = attachments;
cacheentry.bones = bones;
cacheentry.bonelookups = bonelookups;
cacheentry.header = header;
modelCache.insert(std::make_pair(modelname, cacheentry));
}
else
{
header = cacheitr->second.header;
bones = cacheitr->second.bones;
bonelookups = cacheitr->second.bonelookups;
attachments = cacheitr->second.attachments;
}
//try and get the bone
for (uint32 i = 0; i < header->nAttachments; ++i)
{
if (attachments[i].bone > header->nBoneLookupTable)
{
printf("Attachment %u requests bonelookup %u (too large, bonelookup table is only %u entries)\n", i, attachments[i].bone, header->nBoneLookupTable);
continue;
//.........这里部分代码省略.........
开发者ID:AriDEV,项目名称:AscEmu,代码行数:101,代码来源:CreatureDataExtractor.cpp
示例11: ExtractGameobjectModels
void ExtractGameobjectModels(int iCoreNumber, const void *szRawVMAPMagic)
{
printf("\n");
printf("Extracting GameObject models...\n");
DBCFile dbc("DBFilesClient\\GameObjectDisplayInfo.dbc");
if (!dbc.open())
{
printf("Fatal error: Invalid GameObjectDisplayInfo.dbc file format!\n");
exit(1);
}
std::string basepath = szWorkDirWmo;
basepath += "/";
std::string path;
StringSet failedPaths;
FILE* model_list = fopen((basepath + "temp_gameobject_models").c_str(), "wb");
for (DBCFile::Iterator it = dbc.begin(); it != dbc.end(); ++it)
{
path = it->getString(1);
if (path.length() < 4)
{ continue; }
string name;
string ch_ext = GetExtension(path);
if (ch_ext.empty())
{ continue; }
bool result = false;
if (ch_ext == "wmo")
{
name = GetUniformName(path);
result = ExtractSingleWmo(path, iCoreNumber, szRawVMAPMagic);
}
else
{
result = ExtractSingleModel(path, name, failedPaths, iCoreNumber, szRawVMAPMagic);
}
if (result && FileExists((basepath + name).c_str()))
{
uint32 displayId = it->getUInt(0);
uint32 path_length = name.length();
fwrite(&displayId, sizeof(uint32), 1, model_list);
fwrite(&path_length, sizeof(uint32), 1, model_list);
fwrite(name.c_str(), sizeof(char), path_length, model_list);
}
}
fclose(model_list);
if (!failedPaths.empty())
{
printf("\n Warning: Some models could not be extracted, see below\n");
for (StringSet::const_iterator itr = failedPaths.begin(); itr != failedPaths.end(); ++itr)
{ printf(" Could not find file of model %s\n", itr->c_str()); }
printf("\n A few of these warnings are expected to happen, so be not alarmed!\n");
}
printf("\n Asset Extraction Complete !\n");
}
开发者ID:mangos,项目名称:Extractor_projects,代码行数:64,代码来源:model.cpp
示例12: ExtractGameobjectModels
void ExtractGameobjectModels(char* input_path)
{
HANDLE localeFile;
char localMPQ[512];
sprintf(localMPQ, "%smisc.MPQ", input_path);
if (FileExists(localMPQ)==false)
{ // Use misc.mpq
printf(localMPQ, "%s/Data/%s/locale-%s.MPQ", input_path);
}
if (!SFileOpenArchive(localMPQ, 0, MPQ_OPEN_READ_ONLY, &localeFile))
{
exit(1);
}
printf("Extracting GameObject models...");
DBCFile dbc(localeFile, "DBFilesClient\\GameObjectDisplayInfo.dbc");
if(!dbc.open())
{
printf("Fatal error: Invalid GameObjectDisplayInfo.dbc file format!\n");
exit(1);
}
std::string basepath = szWorkDirWmo;
basepath += "/";
std::string path;
FILE * model_list = fopen((basepath + "temp_gameobject_models").c_str(), "wb");
for (DBCFile::Iterator it = dbc.begin(); it != dbc.end(); ++it)
{
path = it->getString(1);
if (path.length() < 4)
continue;
FixNameCase((char*)path.c_str(), path.size());
char * name = GetPlainName((char*)path.c_str());
FixNameSpaces(name, strlen(name));
char * ch_ext = GetExtension(name);
if (!ch_ext)
continue;
strToLower(ch_ext);
bool result = false;
if (!strcmp(ch_ext, ".wmo"))
result = ExtractSingleWmo(path);
else if (!strcmp(ch_ext, ".mdl")) // TODO: extract .mdl files, if needed
continue;
else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2"))
result = ExtractSingleModel(path);
if (result)
{
uint32 displayId = it->getUInt(0);
uint32 path_length = strlen(name);
fwrite(&displayId, sizeof(uint32), 1, model_list);
fwrite(&path_length, sizeof(uint32), 1, model_list);
fwrite(name, sizeof(char), path_length, model_list);
}
}
fclose(model_list);
printf("Done!\n");
}
开发者ID:beyourself,项目名称:shadowcore,代码行数:69,代码来源:gameobject_extract.cpp
注:本文中的dbcfile::Iterator类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论