add player_name text3d preset

This commit is contained in:
MihailRis 2024-11-23 08:00:35 +03:00
parent 65e5063326
commit e1579f0c25
4 changed files with 32 additions and 19 deletions

View File

@ -0,0 +1,3 @@
display = "projected"
xray_opacity = 0.3
render_distance = 128

View File

@ -50,7 +50,7 @@ LevelScreen::LevelScreen(Engine* engine, std::unique_ptr<Level> levelPtr)
hud = std::make_unique<Hud>(engine, *frontend, controller->getPlayer()); hud = std::make_unique<Hud>(engine, *frontend, controller->getPlayer());
decorator = std::make_unique<Decorator>( decorator = std::make_unique<Decorator>(
*controller, *worldRenderer, assets *engine, *controller, *worldRenderer, assets
); );
keepAlive(settings.graphics.backlight.observe([=](bool) { keepAlive(settings.graphics.backlight.observe([=](bool) {

View File

@ -13,7 +13,10 @@
#include "objects/Players.hpp" #include "objects/Players.hpp"
#include "logic/LevelController.hpp" #include "logic/LevelController.hpp"
#include "util/stringutil.hpp" #include "util/stringutil.hpp"
#include "presets/NotePreset.hpp" #include "engine.hpp"
#include "files/files.hpp"
namespace fs = std::filesystem;
/// @brief Not greather than 64 for this BIG_PRIME value /// @brief Not greather than 64 for this BIG_PRIME value
inline constexpr int UPDATE_AREA_DIAMETER = 32; inline constexpr int UPDATE_AREA_DIAMETER = 32;
@ -25,22 +28,11 @@ inline constexpr int ITERATIONS = 512;
/// @brief Big prime number used for pseudo-random 3d array iteration /// @brief Big prime number used for pseudo-random 3d array iteration
inline constexpr int BIG_PRIME = 666667; inline constexpr int BIG_PRIME = 666667;
static u64id_t create_player_name_note(
const WorldRenderer& renderer, const Player& player
) {
NotePreset preset {};
preset.displayMode = NoteDisplayMode::PROJECTED;
preset.xrayOpacity = 0.3f;
preset.renderDistance = 128.0f;
return renderer.texts->add(std::make_unique<TextNote>(
util::str2wstr_utf8(player.getName()), preset, player.getPosition()
));
}
Decorator::Decorator( Decorator::Decorator(
LevelController& controller, WorldRenderer& renderer, const Assets& assets Engine& engine, LevelController& controller, WorldRenderer& renderer, const Assets& assets
) )
: level(*controller.getLevel()), : engine(engine),
level(*controller.getLevel()),
renderer(renderer), renderer(renderer),
assets(assets), assets(assets),
player(*controller.getPlayer()) { player(*controller.getPlayer()) {
@ -54,8 +46,15 @@ Decorator::Decorator(
if (id == controller.getPlayer()->getId()) { if (id == controller.getPlayer()->getId()) {
continue; continue;
} }
playerTexts[id] = create_player_name_note(renderer, *player); playerTexts[id] = renderer.texts->add(std::make_unique<TextNote>(
util::str2wstr_utf8(player->getName()),
playerNamePreset,
player->getPosition()
));
} }
playerNamePreset.deserialize(engine.getResPaths()->readCombinedObject(
fs::u8path("presets/text3d/player_name.toml")
));
} }
void Decorator::addParticles(const Block& def, const glm::ivec3& pos) { void Decorator::addParticles(const Block& def, const glm::ivec3& pos) {
@ -141,7 +140,11 @@ void Decorator::update(float delta, const Camera& camera) {
playerTexts.find(id) != playerTexts.end()) { playerTexts.find(id) != playerTexts.end()) {
continue; continue;
} }
playerTexts[id] = create_player_name_note(renderer, *player); playerTexts[id] = renderer.texts->add(std::make_unique<TextNote>(
util::str2wstr_utf8(player->getName()),
playerNamePreset,
player->getPosition()
));
} }
auto textsIter = playerTexts.begin(); auto textsIter = playerTexts.begin();

View File

@ -7,6 +7,7 @@
#include <unordered_map> #include <unordered_map>
#include "typedefs.hpp" #include "typedefs.hpp"
#include "presets/NotePreset.hpp"
class Level; class Level;
class Chunks; class Chunks;
@ -14,10 +15,12 @@ class Camera;
class Assets; class Assets;
class Player; class Player;
struct Block; struct Block;
class Engine;
class LevelController; class LevelController;
class WorldRenderer; class WorldRenderer;
class Decorator { class Decorator {
Engine& engine;
const Level& level; const Level& level;
const Assets& assets; const Assets& assets;
Player& player; Player& player;
@ -25,6 +28,7 @@ class Decorator {
std::unordered_map<glm::ivec3, uint64_t> blockEmitters; std::unordered_map<glm::ivec3, uint64_t> blockEmitters;
std::unordered_map<int64_t, u64id_t> playerTexts; std::unordered_map<int64_t, u64id_t> playerTexts;
int currentIndex = 0; int currentIndex = 0;
NotePreset playerNamePreset {};
void update( void update(
float delta, const glm::ivec3& areaStart, const glm::ivec3& areaCenter float delta, const glm::ivec3& areaStart, const glm::ivec3& areaCenter
@ -32,7 +36,10 @@ class Decorator {
void addParticles(const Block& def, const glm::ivec3& pos); void addParticles(const Block& def, const glm::ivec3& pos);
public: public:
Decorator( Decorator(
LevelController& level, WorldRenderer& renderer, const Assets& assets Engine& engine,
LevelController& level,
WorldRenderer& renderer,
const Assets& assets
); );
void update(float delta, const Camera& camera); void update(float delta, const Camera& camera);