forked from Mirrorlandia_minetest/minetest
Clean up CAO nametag handling and remove deprecated AO_CMD
AO_CMD_UPDATE_NAMETAG_ATTRIBUTES was deprecated in 9eee3c3f465c071bb9908749cf48be3c131a1bdf (0.4.14)
This commit is contained in:
parent
db7c262ee8
commit
4c8e1c3200
@ -66,7 +66,8 @@ enum ActiveObjectCommand {
|
|||||||
AO_CMD_SET_BONE_POSITION,
|
AO_CMD_SET_BONE_POSITION,
|
||||||
AO_CMD_ATTACH_TO,
|
AO_CMD_ATTACH_TO,
|
||||||
AO_CMD_SET_PHYSICS_OVERRIDE,
|
AO_CMD_SET_PHYSICS_OVERRIDE,
|
||||||
AO_CMD_UPDATE_NAMETAG_ATTRIBUTES,
|
AO_CMD_OBSOLETE1,
|
||||||
|
// ^ UPDATE_NAMETAG_ATTRIBUTES deprecated since 0.4.14, removed in 5.3.0
|
||||||
AO_CMD_SPAWN_INFANT,
|
AO_CMD_SPAWN_INFANT,
|
||||||
AO_CMD_SET_ANIMATION_SPEED
|
AO_CMD_SET_ANIMATION_SPEED
|
||||||
};
|
};
|
||||||
|
@ -776,15 +776,7 @@ void GenericCAO::addToScene(ITextureSource *tsrc)
|
|||||||
if (node && m_matrixnode)
|
if (node && m_matrixnode)
|
||||||
node->setParent(m_matrixnode);
|
node->setParent(m_matrixnode);
|
||||||
|
|
||||||
if (node && !m_prop.nametag.empty() && !m_is_local_player) {
|
updateNametag();
|
||||||
// Add nametag
|
|
||||||
v3f pos;
|
|
||||||
pos.Y = m_prop.selectionbox.MaxEdge.Y + 0.3f;
|
|
||||||
m_nametag = m_client->getCamera()->addNametag(node,
|
|
||||||
m_prop.nametag, m_prop.nametag_color,
|
|
||||||
pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateNodePos();
|
updateNodePos();
|
||||||
updateAnimation();
|
updateAnimation();
|
||||||
updateBonePosition();
|
updateBonePosition();
|
||||||
@ -872,6 +864,38 @@ v3s16 GenericCAO::getLightPosition()
|
|||||||
return floatToInt(m_position, BS);
|
return floatToInt(m_position, BS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GenericCAO::updateNametag()
|
||||||
|
{
|
||||||
|
if (m_is_local_player) // No nametag for local player
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_prop.nametag.empty()) {
|
||||||
|
// Delete nametag
|
||||||
|
if (m_nametag) {
|
||||||
|
m_client->getCamera()->removeNametag(m_nametag);
|
||||||
|
m_nametag = nullptr;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scene::ISceneNode *node = getSceneNode();
|
||||||
|
if (!node)
|
||||||
|
return;
|
||||||
|
|
||||||
|
v3f pos;
|
||||||
|
pos.Y = m_prop.selectionbox.MaxEdge.Y + 0.3f;
|
||||||
|
if (!m_nametag) {
|
||||||
|
// Add nametag
|
||||||
|
m_nametag = m_client->getCamera()->addNametag(node,
|
||||||
|
m_prop.nametag, m_prop.nametag_color, pos);
|
||||||
|
} else {
|
||||||
|
// Update nametag
|
||||||
|
m_nametag->nametag_text = m_prop.nametag;
|
||||||
|
m_nametag->nametag_color = m_prop.nametag_color;
|
||||||
|
m_nametag->nametag_pos = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GenericCAO::updateNodePos()
|
void GenericCAO::updateNodePos()
|
||||||
{
|
{
|
||||||
if (getParent() != NULL)
|
if (getParent() != NULL)
|
||||||
@ -1465,8 +1489,6 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const
|
|||||||
old.initial_sprite_basepos != new_.initial_sprite_basepos ||
|
old.initial_sprite_basepos != new_.initial_sprite_basepos ||
|
||||||
old.is_visible != new_.is_visible ||
|
old.is_visible != new_.is_visible ||
|
||||||
old.mesh != new_.mesh ||
|
old.mesh != new_.mesh ||
|
||||||
old.nametag != new_.nametag ||
|
|
||||||
old.nametag_color != new_.nametag_color ||
|
|
||||||
old.spritediv != new_.spritediv ||
|
old.spritediv != new_.spritediv ||
|
||||||
old.use_texture_alpha != new_.use_texture_alpha ||
|
old.use_texture_alpha != new_.use_texture_alpha ||
|
||||||
old.visual != new_.visual ||
|
old.visual != new_.visual ||
|
||||||
@ -1516,6 +1538,7 @@ void GenericCAO::processMessage(const std::string &data)
|
|||||||
|
|
||||||
if ((m_is_player && !m_is_local_player) && m_prop.nametag.empty())
|
if ((m_is_player && !m_is_local_player) && m_prop.nametag.empty())
|
||||||
m_prop.nametag = m_name;
|
m_prop.nametag = m_name;
|
||||||
|
updateNametag();
|
||||||
|
|
||||||
if (expire_visuals) {
|
if (expire_visuals) {
|
||||||
expireVisuals();
|
expireVisuals();
|
||||||
@ -1694,22 +1717,14 @@ void GenericCAO::processMessage(const std::string &data)
|
|||||||
int rating = readS16(is);
|
int rating = readS16(is);
|
||||||
m_armor_groups[name] = rating;
|
m_armor_groups[name] = rating;
|
||||||
}
|
}
|
||||||
} else if (cmd == AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) {
|
|
||||||
// Deprecated, for backwards compatibility only.
|
|
||||||
readU8(is); // version
|
|
||||||
m_prop.nametag_color = readARGB8(is);
|
|
||||||
if (m_nametag != NULL) {
|
|
||||||
m_nametag->nametag_color = m_prop.nametag_color;
|
|
||||||
v3f pos;
|
|
||||||
pos.Y = m_prop.collisionbox.MaxEdge.Y + 0.3f;
|
|
||||||
m_nametag->nametag_pos = pos;
|
|
||||||
}
|
|
||||||
} else if (cmd == AO_CMD_SPAWN_INFANT) {
|
} else if (cmd == AO_CMD_SPAWN_INFANT) {
|
||||||
u16 child_id = readU16(is);
|
u16 child_id = readU16(is);
|
||||||
u8 type = readU8(is); // maybe this will be useful later
|
u8 type = readU8(is); // maybe this will be useful later
|
||||||
(void)type;
|
(void)type;
|
||||||
|
|
||||||
addAttachmentChild(child_id);
|
addAttachmentChild(child_id);
|
||||||
|
} else if (cmd == AO_CMD_OBSOLETE1) {
|
||||||
|
// Don't do anything and also don't log a warning
|
||||||
} else {
|
} else {
|
||||||
warningstream << FUNCTION_NAME
|
warningstream << FUNCTION_NAME
|
||||||
<< ": unknown command or outdated client \""
|
<< ": unknown command or outdated client \""
|
||||||
|
@ -244,6 +244,8 @@ public:
|
|||||||
|
|
||||||
v3s16 getLightPosition();
|
v3s16 getLightPosition();
|
||||||
|
|
||||||
|
void updateNametag();
|
||||||
|
|
||||||
void updateNodePos();
|
void updateNodePos();
|
||||||
|
|
||||||
void step(float dtime, ClientEnvironment *env);
|
void step(float dtime, ClientEnvironment *env);
|
||||||
|
@ -127,9 +127,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
|
|||||||
}
|
}
|
||||||
msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4
|
msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4
|
||||||
msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5
|
msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5
|
||||||
// (AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only.
|
int message_count = 5 + m_bone_position.size();
|
||||||
msg_os << serializeLongString(generateUpdateNametagAttributesCommand(m_prop.nametag_color)); // 6
|
|
||||||
int message_count = 6 + m_bone_position.size();
|
|
||||||
for (std::unordered_set<int>::const_iterator ii = m_attachment_child_ids.begin();
|
for (std::unordered_set<int>::const_iterator ii = m_attachment_child_ids.begin();
|
||||||
ii != m_attachment_child_ids.end(); ++ii) {
|
ii != m_attachment_child_ids.end(); ++ii) {
|
||||||
if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) {
|
if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) {
|
||||||
|
@ -61,21 +61,10 @@ std::string ServerActiveObject::generateUpdateInfantCommand(u16 infant_id, u16 p
|
|||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ServerActiveObject::generateUpdateNametagAttributesCommand(const video::SColor &color) const
|
|
||||||
{
|
|
||||||
std::ostringstream os(std::ios::binary);
|
|
||||||
// command
|
|
||||||
writeU8(os, AO_CMD_UPDATE_NAMETAG_ATTRIBUTES);
|
|
||||||
// parameters
|
|
||||||
writeU8(os, 1); // version for forward compatibility
|
|
||||||
writeARGB8(os, color);
|
|
||||||
return os.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ServerActiveObject::dumpAOMessagesToQueue(std::queue<ActiveObjectMessage> &queue)
|
void ServerActiveObject::dumpAOMessagesToQueue(std::queue<ActiveObjectMessage> &queue)
|
||||||
{
|
{
|
||||||
while (!m_messages_out.empty()) {
|
while (!m_messages_out.empty()) {
|
||||||
queue.push(std::move(m_messages_out.front()));
|
queue.push(std::move(m_messages_out.front()));
|
||||||
m_messages_out.pop();
|
m_messages_out.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user