#include "Material.hpp" #include #include "IdGenerator.hpp" #include "interfaces/ITexture.hpp" #include "Types.hpp" #include "Vector2.hpp" #include "Vector3.hpp" #include "Vector4.hpp" #include "Color.hpp" #include "Matrix4x4.hpp" namespace TSE { Material::Material() : name(""), shader(nullptr) { id = GenerateRandomUUID(); } Material::Material(const string& name, IShader* shader, uuids::uuid id) : name(name), shader(shader), id(id) {} Material::Material(const string &name, IShader *shader) : name(name), shader(shader) { id = GenerateRandomUUID(); } bool Material::HasValue(const string &key) const { return values.find(key) != values.end(); } int Material::GetValueCount() const { return values.size(); } std::tuple &Material::GetValueAt(int j) { auto it = values.begin(); for (int i = 0; i < j; i++) { it++; } return it->second; } string &Material::GetName() { return name; } IShader *Material::GetShader() const { return shader; } void Material::SetShader(IShader *shader) { this->shader = shader; } uuids::uuid Material::GetID() const { return id; } template void Material::SetValue(const string&, const int&); template void Material::SetValue(const string&, const float&); template void Material::SetValue(const string&, const Vector2&); template void Material::SetValue(const string&, const Vector3&); template void Material::SetValue(const string&, const Vector4&); template void Material::SetValue(const string&, const Matrix4x4&); template void Material::SetValue(const string&, const Color&); template void Material::SetValue(const string&, const string&); template void Material::SetValue(const string&, const ITexture*); template int Material::GetValue(const string&) const; template float Material::GetValue(const string&) const; template Vector2 Material::GetValue(const string&) const; template Vector3 Material::GetValue(const string&) const; template Vector4 Material::GetValue(const string&) const; template Matrix4x4 Material::GetValue(const string&) const; template Color Material::GetValue(const string&) const; template string Material::GetValue(const string&) const; template ITexture* Material::GetValue(const string&) const; } // namespace TSE