17 #include <ht_platform.h> 18 #include <ht_string.h> 35 if (m_data !=
nullptr)
53 inline Type GetType() {
return m_type; }
54 inline void* GetData() {
return m_data; }
56 static inline ShaderVariable::Type TypeFromString(
const std::string& str)
59 return ShaderVariable::Type::INT;
60 else if (str ==
"FLOAT")
61 return ShaderVariable::Type::FLOAT;
62 else if (str ==
"DOUBLE")
63 return ShaderVariable::Type::DOUBLE;
64 else if (str ==
"FLOAT2")
65 return ShaderVariable::Type::FLOAT2;
66 else if (str ==
"FLOAT3")
67 return ShaderVariable::Type::FLOAT3;
68 else if (str ==
"FLOAT4")
69 return ShaderVariable::Type::FLOAT4;
70 else if (str ==
"MAT4")
71 return ShaderVariable::Type::MAT4;
74 HT_DEBUG_PRINTF(
"WARNING: UNKNOWN SHADER VARIABLE TYPE; RETURNING INT\n");
75 return ShaderVariable::Type::INT;
79 static inline size_t SizeFromType(ShaderVariable::Type type)
85 case ShaderVariable::Type::INT:
86 size =
sizeof(uint32_t);
88 case ShaderVariable::Type::DOUBLE:
89 size =
sizeof(double);
91 case ShaderVariable::Type::FLOAT:
94 case ShaderVariable::Type::FLOAT2:
95 size =
sizeof(float) * 2;
97 case ShaderVariable::Type::FLOAT3:
98 size =
sizeof(float) * 3;
100 case ShaderVariable::Type::FLOAT4:
101 size =
sizeof(float) * 4;
103 case ShaderVariable::Type::MAT4:
104 size =
sizeof(float) * 16;
113 BYTE* m_data =
nullptr;
123 inline void SetData(T t);
131 memcpy(m_data, &data,
sizeof(
int));
137 m_data =
new BYTE[
sizeof(int)];
145 m_data =
new BYTE[
sizeof(int)];
155 memcpy(m_data, &data,
sizeof(
float));
161 m_data =
new BYTE[
sizeof(float)];
163 m_type = Type::FLOAT;
169 m_data =
new BYTE[
sizeof(float)];
171 m_type = Type::FLOAT;
179 memcpy(m_data, &data,
sizeof(
double));
185 m_data =
new BYTE[
sizeof(double)];
187 m_type = Type::DOUBLE;
193 m_data =
new BYTE[
sizeof(double)];
195 m_type = Type::DOUBLE;
203 memcpy(m_data, data.m_data,
sizeof(
float) * 2);
209 m_data =
new BYTE[
sizeof(float) * 2];
210 SetData(Math::Vector2());
211 m_type = Type::FLOAT2;
217 m_data =
new BYTE[
sizeof(float) * 2];
219 m_type = Type::FLOAT2;
226 memcpy(m_data, data.m_data,
sizeof(
float) * 3);
232 m_data =
new BYTE[
sizeof(float) * 3];
233 SetData(Math::Vector3());
234 m_type = Type::FLOAT3;
240 m_data =
new BYTE[
sizeof(float) * 3];
242 m_type = Type::FLOAT3;
250 memcpy(m_data, data.m_data,
sizeof(
float) * 4);
256 m_data =
new BYTE[
sizeof(float) * 4];
257 SetData(Math::Vector4());
258 m_type = Type::FLOAT4;
264 m_data =
new BYTE[
sizeof(float) * 4];
266 m_type = Type::FLOAT4;
274 memcpy(this->m_data, data.m_data,
sizeof(
float) * 16);
280 m_data =
new BYTE[
sizeof(float) * 16];
281 SetData(Math::Matrix4());
288 m_data =
new BYTE[
sizeof(float) * 16];
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_assimp.h:31
Definition: ht_shadervariable.h:31
Definition: ht_shadervariable.h:117
Definition: ht_shadervariable.h:306