#pragma once #include #include #include #include #include #include #include namespace metaforce { class CTexture; class CEnergyBarShader { public: struct Vertex { zeus::CVector3f pos; zeus::CVector2f uv; }; private: struct Uniform { zeus::CMatrix4f m_matrix; zeus::CColor m_color; }; boo::ObjToken m_vbo; std::array, 3> m_uniBuf; std::array, 3> m_dataBind; Uniform m_uniform; const CTexture* m_tex = nullptr; size_t m_maxVerts = 0; public: static void Initialize(); static void Shutdown(); void updateModelMatrix(); void draw(const zeus::CColor& color0, const std::vector& verts0, const zeus::CColor& color1, const std::vector& verts1, const zeus::CColor& color2, const std::vector& verts2, const CTexture* tex); }; } // namespace metaforce