#pragma once

#include "ShaderProgram.h"

namespace blitz {
namespace shader {

class EntityShader : public ShaderProgram {
  private:
	unsigned int m_LocationProjectionMatrix = 0;
	unsigned int m_LocationViewMatrix = 0;
	unsigned int m_LocationTransform = 0;

  protected:
	virtual void GetAllUniformLocation() override;

  public:
	EntityShader();

	void LoadShader();

	void SetProjectionMatrix(const Mat4f& proj) const;
	void SetViewMatrix(const Mat4f& view) const;
	void SetModelTransform(const Mat4f& transform) const;
};

}  // namespace shader
}  // namespace blitz
