namespace uiVehicleComp
{
//Convert double, float to a string with given number of decimals.
template T>
eastl::string toStrDec(T const& val, const int decimals)
{
MallocScope ms;
std::ostringstream ostr;
ostr << std::fixed << std::setprecision(decimals) << val;
return ostr.str().c_str();
}
}
void UIVehicleComp::updateVehicleYawRotations(const GameInfo& gameInfo)
{
using namespace uiVehicleComp;
if (gameInfo.vehicle && gameInfo.hudData && gameInfo.hudData->getUseWeaponOrientations())
{
eastl::string currentYaw = toStrDec(gameInfo.vehicleYawAngle, 1);
if(0 != currentYaw.compare(m_yawAngle))
{
IUISystem::getInstance()->setData(UI_UIVEHICLECOMP_YAWANGLE, (double)atof(currentYaw.c_str()));
m_yawAngle = currentYaw;
}
}
}
7 comments:
My eyes!
Dynamic strings FTW! Best way ever to round a number. Only costs... probably around 40k cycles or so, perhaps only about three orders of magnitude more than the engage-your-brain method of doing it!
You should be thankful he didn't do it with boost::lexical_cast(). I've seen a game which dragged the whole of boost along so it could use lexical_cast and the "cross-platform" thread handling crap.
so sad... :(
Best part - returning c_str() from a temporary which is destroyed before the function returns..
@dep you missed the part where it gets converted back into a eastl::string implicitly
Memory management - you're supposed to treat it like magic, right?
Post a Comment