#pragma once

#include "ShaderProgram.h"

namespace td {
namespace shader {

class EntityShader : public ShaderProgram {
private:
	unsigned int m_LocationProjectionMatrix = 0;
	unsigned int m_LocationViewMatrix = 0;
	unsigned int m_LocationPosition = 0;
	unsigned int m_LocationColorEffect = 0;
protected:
	virtual void GetAllUniformLocation();
public:
	EntityShader();

	void LoadShader();

	void SetColorEffect(const Vec3f& color);
	void SetProjectionMatrix(const Mat4f& proj) const;
	void SetViewMatrix(const Mat4f& view) const;
	void SetModelPos(const Vec3f& pos) const;
};

} // namespace shader
} // namespace td
