mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix: player name 3d text not updating by Decorator
This commit is contained in:
parent
a9d185256a
commit
33db2633a2
5 changed files with 23 additions and 20 deletions
|
|
@ -66,9 +66,7 @@ Decorator::Decorator(
|
|||
continue;
|
||||
}
|
||||
playerTexts[id] = renderer.texts->add(std::make_unique<TextNote>(
|
||||
util::str2wstr_utf8(player->getName()),
|
||||
playerNamePreset,
|
||||
player->getPosition()
|
||||
player->getName(), playerNamePreset, player->getPosition()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -296,9 +294,7 @@ void Decorator::updateTextNotes() {
|
|||
continue;
|
||||
}
|
||||
playerTexts[id] = renderer.texts->add(std::make_unique<TextNote>(
|
||||
util::str2wstr_utf8(player->getName()),
|
||||
playerNamePreset,
|
||||
player->getPosition()
|
||||
player->getName(), playerNamePreset, player->getPosition()
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -315,6 +311,9 @@ void Decorator::updateTextNotes() {
|
|||
position = entity->getInterpolatedPosition();
|
||||
}
|
||||
note->setPosition(position + glm::vec3(0, 1, 0));
|
||||
if (note->getText() != player->getName()) {
|
||||
note->setText(player->getName());
|
||||
}
|
||||
++textsIter;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,14 +294,14 @@ static int l_set_camera(lua::State* L) {
|
|||
|
||||
static int l_get_name(lua::State* L) {
|
||||
if (auto player = get_player(L, 1)) {
|
||||
return lua::pushstring(L, player->getName());
|
||||
return lua::pushwstring(L, player->getName());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l_set_name(lua::State* L) {
|
||||
if (auto player = get_player(L, 1)) {
|
||||
player->setName(lua::require_string(L, 2));
|
||||
player->setName(lua::require_wstring(L, 2));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -313,7 +313,7 @@ static int l_create(lua::State* L) {
|
|||
}
|
||||
auto& level = require_level();
|
||||
auto player = level.players->create(playerId);
|
||||
player->setName(lua::require_string(L, 1));
|
||||
player->setName(lua::require_wstring(L, 1));
|
||||
return lua::pushinteger(L, player->getId());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "world/generator/GeneratorDef.hpp"
|
||||
#include "data/dv_util.hpp"
|
||||
#include "debug/Logger.hpp"
|
||||
#include "util/stringutil.hpp"
|
||||
|
||||
static debug::Logger logger("player");
|
||||
|
||||
|
|
@ -28,7 +29,7 @@ constexpr int SPAWN_ATTEMPTS_PER_UPDATE = 64;
|
|||
Player::Player(
|
||||
Level& level,
|
||||
int64_t id,
|
||||
const std::string& name,
|
||||
const std::wstring& name,
|
||||
glm::vec3 position,
|
||||
float speed,
|
||||
std::shared_ptr<Inventory> inv,
|
||||
|
|
@ -230,11 +231,11 @@ entityid_t Player::getSelectedEntity() const {
|
|||
return selectedEid;
|
||||
}
|
||||
|
||||
void Player::setName(const std::string& name) {
|
||||
void Player::setName(const std::wstring& name) {
|
||||
this->name = name;
|
||||
}
|
||||
|
||||
const std::string& Player::getName() const {
|
||||
const std::wstring& Player::getName() const {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
|
@ -266,7 +267,7 @@ dv::value Player::serialize() const {
|
|||
auto root = dv::object();
|
||||
|
||||
root["id"] = id;
|
||||
root["name"] = name;
|
||||
root["name"] = util::wstr2str_utf8(name);
|
||||
|
||||
root["position"] = dv::to_value(position);
|
||||
root["rotation"] = dv::to_value(rotation);
|
||||
|
|
@ -293,7 +294,10 @@ dv::value Player::serialize() const {
|
|||
|
||||
void Player::deserialize(const dv::value& src) {
|
||||
src.at("id").get(id);
|
||||
src.at("name").get(name);
|
||||
|
||||
std::string utf8name;
|
||||
src.at("name").get(utf8name);
|
||||
name = util::str2wstr_utf8(utf8name);
|
||||
|
||||
const auto& posarr = src["position"];
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ struct CursorSelection {
|
|||
class Player : public Serializable {
|
||||
Level& level;
|
||||
int64_t id;
|
||||
std::string name;
|
||||
std::wstring name;
|
||||
float speed;
|
||||
|
||||
int chosenSlot;
|
||||
|
|
@ -79,7 +79,7 @@ public:
|
|||
Player(
|
||||
Level& level,
|
||||
int64_t id,
|
||||
const std::string& name,
|
||||
const std::wstring& name,
|
||||
glm::vec3 position,
|
||||
float speed,
|
||||
std::shared_ptr<Inventory> inv,
|
||||
|
|
@ -124,8 +124,8 @@ public:
|
|||
|
||||
entityid_t getSelectedEntity() const;
|
||||
|
||||
void setName(const std::string& name);
|
||||
const std::string& getName() const;
|
||||
void setName(const std::wstring& name);
|
||||
const std::wstring& getName() const;
|
||||
|
||||
const std::shared_ptr<Inventory>& getInventory() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ Player* Players::create(int64_t id) {
|
|||
auto playerPtr = std::make_unique<Player>(
|
||||
level,
|
||||
id,
|
||||
"",
|
||||
L"",
|
||||
glm::vec3(0, DEF_PLAYER_Y, 0),
|
||||
DEF_PLAYER_SPEED,
|
||||
level.inventories->create(DEF_PLAYER_INVENTORY_SIZE),
|
||||
|
|
@ -134,7 +134,7 @@ void Players::deserialize(const dv::value& src) {
|
|||
auto playerPtr = std::make_unique<Player>(
|
||||
level,
|
||||
0,
|
||||
"",
|
||||
L"",
|
||||
glm::vec3(0, DEF_PLAYER_Y, 0),
|
||||
DEF_PLAYER_SPEED,
|
||||
level.inventories->create(DEF_PLAYER_INVENTORY_SIZE),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue