Move f1000 sanitizing to the places that still use this type

master
sfan5 2022-06-08 19:33:46 +02:00
parent b204655081
commit 137eef6590
6 changed files with 8 additions and 17 deletions

View File

@ -141,7 +141,6 @@ public:
void setSpeed(v3f speed) void setSpeed(v3f speed)
{ {
clampToF1000(speed);
m_speed = speed; m_speed = speed;
} }

View File

@ -290,7 +290,7 @@ void LuaEntitySAO::getStaticData(std::string *result) const
os<<serializeString32(m_init_state); os<<serializeString32(m_init_state);
} }
writeU16(os, m_hp); writeU16(os, m_hp);
writeV3F1000(os, m_velocity); writeV3F1000(os, clampToF1000(m_velocity));
// yaw // yaw
writeF1000(os, m_rotation.Y); writeF1000(os, m_rotation.Y);

View File

@ -321,12 +321,6 @@ std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const
void PlayerSAO::setBasePosition(v3f position) void PlayerSAO::setBasePosition(v3f position)
{ {
// It's not entirely clear which parts of the network protocol still use
// v3f1000, but the script API enforces its bound on all float vectors
// (maybe it shouldn't?). For that reason we need to make sure the position
// isn't ever set to values that fail this restriction.
clampToF1000(position);
if (m_player && position != m_base_position) if (m_player && position != m_base_position)
m_player->setDirty(true); m_player->setDirty(true);

View File

@ -28,12 +28,12 @@ StaticObject::StaticObject(const ServerActiveObject *s_obj, const v3f &pos_):
s_obj->getStaticData(&data); s_obj->getStaticData(&data);
} }
void StaticObject::serialize(std::ostream &os) void StaticObject::serialize(std::ostream &os) const
{ {
// type // type
writeU8(os, type); writeU8(os, type);
// pos // pos
writeV3F1000(os, pos); writeV3F1000(os, clampToF1000(pos));
// data // data
os<<serializeString16(data); os<<serializeString16(data);
} }

View File

@ -37,7 +37,7 @@ struct StaticObject
StaticObject() = default; StaticObject() = default;
StaticObject(const ServerActiveObject *s_obj, const v3f &pos_); StaticObject(const ServerActiveObject *s_obj, const v3f &pos_);
void serialize(std::ostream &os); void serialize(std::ostream &os) const;
void deSerialize(std::istream &is, u8 version); void deSerialize(std::istream &is, u8 version);
}; };

View File

@ -439,16 +439,14 @@ MAKE_STREAM_WRITE_FXN(video::SColor, ARGB8, 4);
//// More serialization stuff //// More serialization stuff
//// ////
inline void clampToF1000(float &v) inline float clampToF1000(float v)
{ {
v = core::clamp(v, F1000_MIN, F1000_MAX); return core::clamp(v, F1000_MIN, F1000_MAX);
} }
inline void clampToF1000(v3f &v) inline v3f clampToF1000(v3f v)
{ {
clampToF1000(v.X); return {clampToF1000(v.X), clampToF1000(v.Y), clampToF1000(v.Z)};
clampToF1000(v.Y);
clampToF1000(v.Z);
} }
// Creates a string with the length as the first two bytes // Creates a string with the length as the first two bytes