void LoadGameObjectModelList(std::string const& dataPath) { uint32 oldMSTime = getMSTime(); FILE* model_list_file = fopen((dataPath + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb"); if (!model_list_file) { TC_LOG_ERROR("misc", "Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS); return; } char magic[8]; if (fread(magic, 1, 8, model_list_file) != 8 || memcmp(magic, VMAP::VMAP_MAGIC, 8) != 0) { TC_LOG_ERROR("misc", "File '%s' has wrong header, expected %s.", VMAP::GAMEOBJECT_MODELS, VMAP::VMAP_MAGIC); fclose(model_list_file); return; } uint32 name_length, displayId; uint8 isWmo; char buff[500]; while (true) { Vector3 v1, v2; if (fread(&displayId, sizeof(uint32), 1, model_list_file) != 1) if (feof(model_list_file)) // EOF flag is only set after failed reading attempt break; if (fread(&isWmo, sizeof(uint8), 1, model_list_file) != 1 || fread(&name_length, sizeof(uint32), 1, model_list_file) != 1 || name_length >= sizeof(buff) || fread(&buff, sizeof(char), name_length, model_list_file) != name_length || fread(&v1, sizeof(Vector3), 1, model_list_file) != 1 || fread(&v2, sizeof(Vector3), 1, model_list_file) != 1) { TC_LOG_ERROR("misc", "File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS); break; } if (v1.isNaN() || v2.isNaN()) { TC_LOG_ERROR("misc", "File '%s' Model '%s' has invalid v1%s v2%s values!", VMAP::GAMEOBJECT_MODELS, std::string(buff, name_length).c_str(), v1.toString().c_str(), v2.toString().c_str()); continue; } model_list.emplace(std::piecewise_construct, std::forward_as_tuple(displayId), std::forward_as_tuple(&buff[0], name_length, v1, v2, isWmo != 0)); } fclose(model_list_file); TC_LOG_INFO("server.loading", ">> Loaded %u GameObject models in %u ms", uint32(model_list.size()), GetMSTimeDiffToNow(oldMSTime)); }
void LoadGameObjectModelList() { //#ifndef NO_CORE_FUNCS uint32 oldMSTime = getMSTime(); //#endif FILE* model_list_file = fopen((sWorld->GetDataPath() + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb"); if (!model_list_file) { sLog->outError("Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS); return; } uint32 name_length, displayId; char buff[500]; while (true) { Vector3 v1, v2; if (fread(&displayId, sizeof(uint32), 1, model_list_file) != 1) if (feof(model_list_file)) // EOF flag is only set after failed reading attempt break; if (fread(&name_length, sizeof(uint32), 1, model_list_file) != 1 || name_length >= sizeof(buff) || fread(&buff, sizeof(char), name_length, model_list_file) != name_length || fread(&v1, sizeof(Vector3), 1, model_list_file) != 1 || fread(&v2, sizeof(Vector3), 1, model_list_file) != 1) { sLog->outError("File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS); break; } model_list.insert ( ModelList::value_type( displayId, GameobjectModelData(std::string(buff, name_length), AABox(v1, v2)) ) ); } fclose(model_list_file); sLog->outString(">> Loaded %u GameObject models in %u ms", uint32(model_list.size()), GetMSTimeDiffToNow(oldMSTime)); sLog->outString(); }
void LoadGameObjectModelList(std::string const& dataPath) { #ifndef NO_CORE_FUNCS uint32 oldMSTime = getMSTime(); #endif FILE* model_list_file = fopen((dataPath + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb"); if (!model_list_file) { VMAP_ERROR_LOG("misc", "Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS); return; } uint32 name_length, displayId; char buff[500]; while (true) { Vector3 v1, v2; if (fread(&displayId, sizeof(uint32), 1, model_list_file) != 1) if (feof(model_list_file)) // EOF flag is only set after failed reading attempt break; if (fread(&name_length, sizeof(uint32), 1, model_list_file) != 1 || name_length >= sizeof(buff) || fread(&buff, sizeof(char), name_length, model_list_file) != name_length || fread(&v1, sizeof(Vector3), 1, model_list_file) != 1 || fread(&v2, sizeof(Vector3), 1, model_list_file) != 1) { VMAP_ERROR_LOG("misc", "File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS); break; } if (v1.isNaN() || v2.isNaN()) { VMAP_ERROR_LOG("misc", "File '%s' Model '%s' has invalid v1%s v2%s values!", VMAP::GAMEOBJECT_MODELS, std::string(buff, name_length).c_str(), v1.toString().c_str(), v2.toString().c_str()); continue; } model_list.insert ( ModelList::value_type(displayId, GameobjectModelData(std::string(buff, name_length), AABox(v1, v2))) ); } fclose(model_list_file); VMAP_INFO_LOG("server.loading", ">> Loaded %u GameObject models in %u ms", uint32(model_list.size()), GetMSTimeDiffToNow(oldMSTime)); }
AbstractWordSubstitutionModel::AbstractWordSubstitutionModel( ModelList& modelList, const std::string& prefix) : AbstractParameterAliasable(prefix), AbstractSubstitutionModel( modelList.getWordAlphabet(), new CanonicalStateMap(modelList.getWordAlphabet(), false), prefix), new_alphabet_ (true), VSubMod_ (), VnestedPrefix_(), Vrate_ (modelList.size()) { enableEigenDecomposition(false); size_t i, j; size_t n = modelList.size(); // test whether two models are identical bool flag = 0; i = 0; j = 1; while (!flag && i < (n - 1)) { if (modelList.getModel(i) == modelList.getModel(j)) flag = 1; else { j++; if (j == n) { i++; j = i + 1; } } } if (!flag) { for (i = 0; i < n; i++) { VSubMod_.push_back(modelList.getModel(i)); VnestedPrefix_.push_back(modelList.getModel(i)->getNamespace()); VSubMod_[i]->setNamespace(prefix + TextTools::toString(i + 1) + "_" + VnestedPrefix_[i]); addParameters_(VSubMod_[i]->getParameters()); } } else { string t = ""; for (i = 0; i < n; i++) { VSubMod_.push_back(modelList.getModel(0)); VnestedPrefix_.push_back(modelList.getModel(0)->getNamespace()); t += TextTools::toString(i + 1); } VSubMod_[0]->setNamespace(prefix + t + "_" + VnestedPrefix_[0]); addParameters_(VSubMod_[0]->getParameters()); } for (i = 0; i < n; i++) { Vrate_[i] = 1.0 / static_cast<double>(n); } }