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