Skip to content

Commit d504831

Browse files
TeTpaAkaSmallJoker
authored andcommittedJul 29, 2017
Move the nametag back to the top of the player (#6179)
read the actual height of the collisionbox
1 parent 765fd9a commit d504831

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed
 

Diff for: ‎src/camera.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ void Camera::drawNametags()
617617
// shadow can remain.
618618
continue;
619619
}
620-
v3f pos = nametag->parent_node->getAbsolutePosition() + v3f(0.0, 1.1 * BS, 0.0);
620+
v3f pos = nametag->parent_node->getAbsolutePosition() + nametag->nametag_pos * BS;
621621
f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f };
622622
trans.multiplyWith1x4Matrix(transformed_pos);
623623
if (transformed_pos[3] > 0) {
@@ -641,9 +641,10 @@ void Camera::drawNametags()
641641
}
642642

643643
Nametag *Camera::addNametag(scene::ISceneNode *parent_node,
644-
std::string nametag_text, video::SColor nametag_color)
644+
const std::string &nametag_text, video::SColor nametag_color,
645+
const v3f &pos)
645646
{
646-
Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color);
647+
Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color, pos);
647648
m_nametags.push_back(nametag);
648649
return nametag;
649650
}

Diff for: ‎src/camera.h

+7-3
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,18 @@ class WieldMeshSceneNode;
3939
struct Nametag {
4040
Nametag(scene::ISceneNode *a_parent_node,
4141
const std::string &a_nametag_text,
42-
const video::SColor &a_nametag_color):
42+
const video::SColor &a_nametag_color,
43+
const v3f a_nametag_pos):
4344
parent_node(a_parent_node),
4445
nametag_text(a_nametag_text),
45-
nametag_color(a_nametag_color)
46+
nametag_color(a_nametag_color),
47+
nametag_pos(a_nametag_pos)
4648
{
4749
}
4850
scene::ISceneNode *parent_node;
4951
std::string nametag_text;
5052
video::SColor nametag_color;
53+
v3f nametag_pos;
5154
};
5255

5356
enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT};
@@ -157,7 +160,8 @@ class Camera
157160
}
158161

159162
Nametag *addNametag(scene::ISceneNode *parent_node,
160-
std::string nametag_text, video::SColor nametag_color);
163+
const std::string &nametag_text, video::SColor nametag_color,
164+
const v3f &pos);
161165

162166
void removeNametag(Nametag *nametag);
163167

Diff for: ‎src/content_cao.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -895,8 +895,11 @@ void GenericCAO::addToScene(ITextureSource *tsrc)
895895
scene::ISceneNode *node = getSceneNode();
896896
if (node && m_prop.nametag != "" && !m_is_local_player) {
897897
// Add nametag
898+
v3f pos;
899+
pos.Y = m_prop.collisionbox.MaxEdge.Y + 0.3f;
898900
m_nametag = m_client->getCamera()->addNametag(node,
899-
m_prop.nametag, m_prop.nametag_color);
901+
m_prop.nametag, m_prop.nametag_color,
902+
pos);
900903
}
901904

902905
updateNodePos();
@@ -1700,6 +1703,9 @@ void GenericCAO::processMessage(const std::string &data)
17001703
m_prop.nametag_color = readARGB8(is);
17011704
if (m_nametag != NULL) {
17021705
m_nametag->nametag_color = m_prop.nametag_color;
1706+
v3f pos;
1707+
pos.Y = m_prop.collisionbox.MaxEdge.Y + 0.3f;
1708+
m_nametag->nametag_pos = pos;
17031709
}
17041710
} else if (cmd == GENERIC_CMD_SPAWN_INFANT) {
17051711
u16 child_id = readU16(is);

0 commit comments

Comments
 (0)
Please sign in to comment.