diff options
author | rtk0c <[email protected]> | 2022-05-30 23:42:02 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-05-30 23:42:02 -0700 |
commit | 8a0f2cd0b398ee0b7740e44a0e5fb2f75d090ccb (patch) | |
tree | 2838fd73313948f4db156b60c079468314eb1564 /source/30-game/Shader.cpp | |
parent | 3571627772b245e3e1a45b66e9a8fe4d50d06c8c (diff) |
Changeset: 59 Integrate enum codegen into the actual project
Diffstat (limited to 'source/30-game/Shader.cpp')
-rw-r--r-- | source/30-game/Shader.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/source/30-game/Shader.cpp b/source/30-game/Shader.cpp index 48881f0..4a58635 100644 --- a/source/30-game/Shader.cpp +++ b/source/30-game/Shader.cpp @@ -1,9 +1,11 @@ #include "Shader.hpp" #include "AppConfig.hpp" -#include "RapidJsonHelper.hpp" -#include "ScopeGuard.hpp" -#include "Utils.hpp" + +#include <Metadata.hpp> +#include <RapidJsonHelper.hpp> +#include <ScopeGuard.hpp> +#include <Utils.hpp> #include <imgui.h> #include <misc/cpp/imgui_stdlib.h> @@ -16,20 +18,20 @@ using namespace std::literals; void ShaderMathVariable::ShowInfo() const { - ImGui::BulletText("Location: %d\nName: %s\nSemantic: %s\nType: %s %dx%d", + ImGui::BulletText("Location: %d\nName: %s\nSemantic: %.*s\nType: %.*s %dx%d", location, name.c_str(), - Tags::NameOf(semantic).data(), - Tags::NameOfGLType(scalarType).data(), + PRINTF_STRING_VIEW(Metadata::EnumToString(semantic)), + PRINTF_STRING_VIEW(Tags::GLTypeToString(scalarType)), width, height); } void ShaderSamplerVariable::ShowInfo() const { - ImGui::BulletText("Location: %d\nName: %s\nSemantic: %s\nType: Sampler", + ImGui::BulletText("Location: %d\nName: %s\nSemantic: %.*s\nType: Sampler", location, name.c_str(), - Tags::NameOf(semantic).data()); + PRINTF_STRING_VIEW(Metadata::EnumToString(semantic))); } bool ShaderThingId::IsValid() const { @@ -527,18 +529,22 @@ bool Shader::IsValid() const { namespace ProjectBrussel_UNITY_ID { void WriteShaderVariable(rapidjson::Value& value, rapidjson::Document& root, const ShaderVariable& var) { value.AddMember("Name", var.name, root.GetAllocator()); - value.AddMember("Semantic", rapidjson::StringRef(Tags::NameOf(var.semantic)), root.GetAllocator()); + value.AddMember("Semantic", rapidjson::StringRef(Metadata::EnumToString(var.semantic)), root.GetAllocator()); value.AddMember("OpenGLLocation", var.location, root.GetAllocator()); } bool ReadShaderVariable(const rapidjson::Value& value, ShaderVariable& var) { + using namespace Tags; + BRUSSEL_JSON_GET(value, "Name", std::string, var.name, return false); { // Semantic auto rvSemantic = rapidjson::GetProperty(value, rapidjson::kStringType, "Semantic"sv); if (!rvSemantic) { - var.semantic = Tags::VES_Generic; + var.semantic = VES_Generic; } else { - var.semantic = Tags::FindVertexElementSemantic(rapidjson::AsStringView(*rvSemantic)); + auto str = rapidjson::AsStringView(*rvSemantic); + auto lookup = Metadata::EnumFromString<VertexElementSemantic>(str); + var.semantic = lookup.value_or(VES_Generic); } } BRUSSEL_JSON_GET_DEFAULT(value, "OpenGLLocation", int, var.location, 0); @@ -547,7 +553,7 @@ bool ReadShaderVariable(const rapidjson::Value& value, ShaderVariable& var) { void WriteShaderMathVariable(rapidjson::Value& value, rapidjson::Document& root, const ShaderMathVariable& var) { WriteShaderVariable(value, root, var); - value.AddMember("ScalarType", rapidjson::StringRef(Tags::NameOfGLType(var.scalarType)), root.GetAllocator()); + value.AddMember("ScalarType", rapidjson::StringRef(Tags::GLTypeToString(var.scalarType)), root.GetAllocator()); value.AddMember("Width", var.width, root.GetAllocator()); value.AddMember("Height", var.height, root.GetAllocator()); value.AddMember("ArrayLength", var.arrayLength, root.GetAllocator()); @@ -558,7 +564,7 @@ bool ReadShaderMathVariable(const rapidjson::Value& value, ShaderMathVariable& v { auto rvScalar = rapidjson::GetProperty(value, rapidjson::kStringType, "ScalarType"sv); if (!rvScalar) return false; - var.scalarType = Tags::FindGLType(rapidjson::AsStringView(*rvScalar)); + var.scalarType = Tags::GLTypeFromString(rapidjson::AsStringView(*rvScalar)); } BRUSSEL_JSON_GET(value, "Width", int, var.width, return false); BRUSSEL_JSON_GET(value, "Height", int, var.height, return false); |