1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-07 03:12:36 +01:00

cast_to_float

This commit is contained in:
Filip Gawin 2018-07-15 15:55:41 +02:00
parent da7e54b64a
commit b2c2075be7
4 changed files with 31 additions and 23 deletions

View File

@ -340,11 +340,11 @@ void GameData::loadWater(const std::string& path) {
std::getline(ss, e, ',')) { std::getline(ss, e, ',')) {
waterBlocks.emplace_back( waterBlocks.emplace_back(
atof(a.c_str()), lexical_cast<float>(a),
atof(b.c_str()), lexical_cast<float>(b),
atof(c.c_str()), lexical_cast<float>(c),
atof(d.c_str()), lexical_cast<float>(d),
atof(e.c_str())); lexical_cast<float>(e));
} }
} }
} }

View File

@ -83,7 +83,7 @@ bool LoaderIDE::load(const std::string &filename, const PedStatsList &stats) {
for (int i = 0; i < objs->getNumAtomics(); i++) { for (int i = 0; i < objs->getNumAtomics(); i++) {
getline(strstream, buff, ','); getline(strstream, buff, ',');
objs->setLodDistance(i, atof(buff.c_str())); objs->setLodDistance(i, lexical_cast<float>(buff));
} }
objs->determineFurthest(); objs->determineFurthest();
@ -138,7 +138,7 @@ bool LoaderIDE::load(const std::string &filename, const PedStatsList &stats) {
getline(strstream, buff, ','); getline(strstream, buff, ',');
cars->wheelmodel_ = lexical_cast<int>(buff); cars->wheelmodel_ = lexical_cast<int>(buff);
getline(strstream, buff, ','); getline(strstream, buff, ',');
cars->wheelscale_ = std::atof(buff.c_str()); cars->wheelscale_ = lexical_cast<float>(buff);
break; break;
case VehicleModelInfo::PLANE: case VehicleModelInfo::PLANE:
/// @todo load LOD /// @todo load LOD
@ -222,16 +222,16 @@ bool LoaderIDE::load(const std::string &filename, const PedStatsList &stats) {
getline(buffstream, buff, ','); // "Always 0" getline(buffstream, buff, ','); // "Always 0"
getline(buffstream, buff, ','); getline(buffstream, buff, ',');
node.position.x = strtof(buff.c_str(), nullptr) / 16.f; node.position.x = lexical_cast<float>(buff) / 16.f;
getline(buffstream, buff, ','); getline(buffstream, buff, ',');
node.position.y = strtof(buff.c_str(), nullptr) / 16.f; node.position.y = lexical_cast<float>(buff) / 16.f;
getline(buffstream, buff, ','); getline(buffstream, buff, ',');
node.position.z = strtof(buff.c_str(), nullptr) / 16.f; node.position.z = lexical_cast<float>(buff) / 16.f;
getline(buffstream, buff, ','); getline(buffstream, buff, ',');
node.size = strtof(buff.c_str(), nullptr) / 16.f; node.size = lexical_cast<float>(buff) / 16.f;
getline(buffstream, buff, ','); getline(buffstream, buff, ',');
node.leftLanes = lexical_cast<int>(buff); node.leftLanes = lexical_cast<int>(buff);

View File

@ -80,13 +80,13 @@ bool LoaderIPL::load(const std::string& filename) {
auto instance = std::make_shared<InstanceData>( auto instance = std::make_shared<InstanceData>(
lexical_cast<int>(id), // ID lexical_cast<int>(id), // ID
model.substr(1, model.size() - 1), model.substr(1, model.size() - 1),
glm::vec3(atof(posX.c_str()), atof(posY.c_str()), glm::vec3(lexical_cast<float>(posX), lexical_cast<float>(posY),
atof(posZ.c_str())), lexical_cast<float>(posZ)),
glm::vec3(atof(scaleX.c_str()), atof(scaleY.c_str()), glm::vec3(lexical_cast<float>(scaleX), lexical_cast<float>(scaleY),
atof(scaleZ.c_str())), lexical_cast<float>(scaleZ)),
glm::normalize( glm::normalize(
glm::quat(-atof(rotW.c_str()), atof(rotX.c_str()), glm::quat(-lexical_cast<float>(rotW), lexical_cast<float>(rotX),
atof(rotY.c_str()), atof(rotZ.c_str())))); lexical_cast<float>(rotY), lexical_cast<float>(rotZ))));
m_instances.push_back(instance); m_instances.push_back(instance);
} else if (section == ZONE) { } else if (section == ZONE) {
@ -103,18 +103,18 @@ bool LoaderIPL::load(const std::string& filename) {
zone.type = lexical_cast<int>(value); zone.type = lexical_cast<int>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.min.x = atof(value.c_str()); zone.min.x = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.min.y = atof(value.c_str()); zone.min.y = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.min.z = atof(value.c_str()); zone.min.z = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.max.x = atof(value.c_str()); zone.max.x = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.max.y = atof(value.c_str()); zone.max.y = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.max.z = atof(value.c_str()); zone.max.z = lexical_cast<float>(value);
getline(strstream, value, ','); getline(strstream, value, ',');
zone.island = lexical_cast<int>(value); zone.island = lexical_cast<int>(value);

View File

@ -24,4 +24,12 @@ inline int lexical_cast(const std::string& source) {
return result; return result;
} }
template <>
inline float lexical_cast(const std::string& source) {
char* end = nullptr; //for errors handling
float result = std::strtof(source.c_str(), &end);
RW_CHECK(end != source.c_str(), "Problem with conversion " << *end << " to float");
return result;
}
#endif #endif