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