Khaotic Engine Reborn
Loading...
Searching...
No Matches
shader_component.h
1#pragma once
2#include "../component.h"
3
4namespace ecs {
5
10enum class ShaderType
11{
12 CEL_SHADING,
13 LIGHTING,
14 NORMAL_MAPPING,
15 SPECULAR_MAPPING,
16 REFLECTION,
17 REFRACTION,
18 TEXTURE,
19 SKYBOX,
20 SUNLIGHT,
21 ALPHA_MAPPING
22};
23
24class ShaderComponent : public Component {
25public:
26
31 ShaderComponent() : m_activeShader(ShaderType::LIGHTING) {}
32 ~ShaderComponent() = default;
33
34 void Initialize() override {}
35 void Update(float deltaTime) override {}
36
41 ShaderType GetActiveShader() const { return m_activeShader; }
47 void SetActiveShader(ShaderType shader) { m_activeShader = shader; }
48
55 static ShaderType StringToShaderType(const std::string& str) {
56 if (str == "ALPHA_MAPPING") return ShaderType::ALPHA_MAPPING;
57 if (str == "CEL_SHADING") return ShaderType::CEL_SHADING;
58 if (str == "NORMAL_MAPPING") return ShaderType::NORMAL_MAPPING;
59 if (str == "SPECULAR_MAPPING") return ShaderType::SPECULAR_MAPPING;
60 if (str == "TEXTURE") return ShaderType::TEXTURE;
61 if (str == "LIGHTING") return ShaderType::LIGHTING;
62 if (str == "SUNLIGHT") return ShaderType::SUNLIGHT;
63 if (str == "SKYBOX") return ShaderType::SKYBOX;
64 if (str == "REFLECTION") return ShaderType::REFLECTION;
65 if (str == "REFRACTION") return ShaderType::REFRACTION;
66 return ShaderType::TEXTURE;
67 }
68
75 static std::string ShaderTypeToString(ShaderType type) {
76 switch (type) {
77 case ShaderType::ALPHA_MAPPING: return "ALPHA_MAPPING";
78 case ShaderType::CEL_SHADING: return "CEL_SHADING";
79 case ShaderType::NORMAL_MAPPING: return "NORMAL_MAPPING";
80 case ShaderType::SPECULAR_MAPPING: return "SPECULAR_MAPPING";
81 case ShaderType::TEXTURE: return "TEXTURE";
82 case ShaderType::LIGHTING: return "LIGHTING";
83 case ShaderType::SUNLIGHT: return "SUNLIGHT";
84 case ShaderType::SKYBOX: return "SKYBOX";
85 case ShaderType::REFLECTION: return "REFLECTION";
86 case ShaderType::REFRACTION: return "REFRACTION";
87 default: return "TEXTURE";
88 }
89 }
90
91private:
92 ShaderType m_activeShader;
93};
94
95} // namespace ecs
static std::string ShaderTypeToString(ShaderType type)
void Update(float deltaTime) override
void SetActiveShader(ShaderType shader)
void Initialize() override
ShaderType GetActiveShader() const
static ShaderType StringToShaderType(const std::string &str)
Definition component.h:9