#include "BlockModel.hpp"
#include "EntityModel.hpp"
#include "OutlineModel.hpp"
+#include "SkyBoxModel.hpp"
#include "SpriteModel.hpp"
+#include "shapes.hpp"
+
#include <algorithm>
#include <iostream>
void EntityModel::Update(const Buffer &buf) noexcept {
#ifndef NDEBUG
+ if (buf.tex_coords.size() < buf.vertices.size()) {
+ std::cerr << "EntityModel: not enough tex coords!" << std::endl;
+ }
if (buf.colors.size() < buf.vertices.size()) {
std::cerr << "EntityModel: not enough colors!" << std::endl;
}
vao.Bind();
vao.PushAttribute(ATTRIB_VERTEX, buf.vertices);
+ vao.PushAttribute(ATTRIB_TEXCOORD, buf.tex_coords);
vao.PushAttribute(ATTRIB_COLOR, buf.colors);
vao.PushAttribute(ATTRIB_NORMAL, buf.normals);
vao.PushIndices(ATTRIB_INDEX, buf.indices);
void BlockModel::Update(const Buffer &buf) noexcept {
#ifndef NDEBUG
+ if (buf.tex_coords.size() < buf.vertices.size()) {
+ std::cerr << "BlockModel: not enough tex coords!" << std::endl;
+ }
if (buf.colors.size() < buf.vertices.size()) {
std::cerr << "BlockModel: not enough colors!" << std::endl;
}
vao.Bind();
vao.PushAttribute(ATTRIB_VERTEX, buf.vertices);
+ vao.PushAttribute(ATTRIB_TEXCOORD, buf.tex_coords);
vao.PushAttribute(ATTRIB_COLOR, buf.colors);
vao.PushAttribute(ATTRIB_LIGHT, buf.lights);
vao.PushIndices(ATTRIB_INDEX, buf.indices);
}
+void SkyBoxModel::LoadUnitBox() {
+ Buffer buffer;
+ CuboidShape shape({{ -1, -1, -1 }, { 1, 1, 1 }});
+ shape.Vertices(buffer);
+ Update(buffer);
+}
+
+void SkyBoxModel::Update(const Buffer &buf) noexcept {
+ vao.Bind();
+ vao.PushAttribute(ATTRIB_VERTEX, buf.vertices);
+ vao.PushIndices(ATTRIB_INDEX, buf.indices);
+}
+
+void SkyBoxModel::Draw() const noexcept {
+ vao.DrawTriangleElements();
+}
+
+
void SpriteModel::Buffer::LoadRect(
float w, float h,
const glm::vec2 &pivot,