add NotePreset
This commit is contained in:
parent
aadb04c41e
commit
866f6e9951
@ -426,12 +426,14 @@ void WorldRenderer::renderTexts(
|
|||||||
zvec.z *= -1;
|
zvec.z *= -1;
|
||||||
zvec = glm::normalize(zvec);
|
zvec = glm::normalize(zvec);
|
||||||
|
|
||||||
|
float ppbx = 100;
|
||||||
|
float ppby = 100;
|
||||||
font.draw(
|
font.draw(
|
||||||
*batch3d,
|
*batch3d,
|
||||||
string,
|
string,
|
||||||
pos - zvec * (font.calcWidth(string, string.length()) * 0.5f),
|
pos - zvec * (font.calcWidth(string, string.length()) * 0.5f) / ppbx,
|
||||||
zvec,
|
zvec / ppbx,
|
||||||
camera.up
|
camera.up / ppby
|
||||||
);
|
);
|
||||||
batch3d->flush();
|
batch3d->flush();
|
||||||
}
|
}
|
||||||
|
|||||||
40
src/presets/NotePreset.cpp
Normal file
40
src/presets/NotePreset.cpp
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#include "NotePreset.hpp"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
std::string to_string(NoteDisplayMode mode) {
|
||||||
|
static std::vector<std::string> names = {
|
||||||
|
"static_billboard",
|
||||||
|
"y_free_billboard",
|
||||||
|
"xy_free_billboard",
|
||||||
|
"projected"
|
||||||
|
};
|
||||||
|
return names.at(static_cast<int>(mode));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<NoteDisplayMode> NoteDisplayMode_from(std::string_view s) {
|
||||||
|
static std::map<std::string_view, NoteDisplayMode, std::less<>> map {
|
||||||
|
{"static_billboard", NoteDisplayMode::STATIC_BILLBOARD},
|
||||||
|
{"y_free_billboard", NoteDisplayMode::Y_FREE_BILLBOARD},
|
||||||
|
{"xy_free_billboard", NoteDisplayMode::XY_FREE_BILLBOARD},
|
||||||
|
{"projected", NoteDisplayMode::PROJECTED}
|
||||||
|
};
|
||||||
|
const auto& found = map.find(s);
|
||||||
|
if (found == map.end()) {
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
return found->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
dv::value NotePreset::serialize() const {
|
||||||
|
return dv::object({
|
||||||
|
{"display", to_string(displayMode)}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotePreset::deserialize(const dv::value& src) {
|
||||||
|
if (src.has("display")) {
|
||||||
|
displayMode = NoteDisplayMode_from(src["display"].asString()).value();
|
||||||
|
}
|
||||||
|
}
|
||||||
23
src/presets/NotePreset.hpp
Normal file
23
src/presets/NotePreset.hpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <glm/vec3.hpp>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
#include "interfaces/Serializable.hpp"
|
||||||
|
|
||||||
|
enum class NoteDisplayMode {
|
||||||
|
STATIC_BILLBOARD,
|
||||||
|
Y_FREE_BILLBOARD,
|
||||||
|
XY_FREE_BILLBOARD,
|
||||||
|
PROJECTED
|
||||||
|
};
|
||||||
|
|
||||||
|
std::string to_string(NoteDisplayMode mode);
|
||||||
|
std::optional<NoteDisplayMode> NoteDisplayMode_from(std::string_view s);
|
||||||
|
|
||||||
|
struct NotePreset : public Serializable {
|
||||||
|
NoteDisplayMode displayMode = NoteDisplayMode::STATIC_BILLBOARD;
|
||||||
|
|
||||||
|
dv::value serialize() const override;
|
||||||
|
void deserialize(const dv::value& src) override;
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user