#ifndef __GAMEOBJECT_H__ #define __GAMEOBJECT_H__ #include #include #include #include #include #include #include #include #include #include #include "camera.hpp" //#include "rendering.hpp" #include "shader.hpp" #include "vector.hpp" #include "camera.hpp" #include "light.hpp" #include "largepos.hpp" /* * internal representation of vertices * pain */ class vertex{ public: vector3f pos; vertex(GLfloat x, GLfloat y, GLfloat z); }; /* * absolute bare minimum to get rendering to * sorta hacky work */ class gameobject{ public: shader *rend_shader; GLuint vao; GLuint shadowVao; GLuint element_number; GLuint ebo; GLuint *elements; bool shadows=false; GLuint vertice_number; enum buffers{ VERTEX_BUFFER, INDEX_BUFFER, COLOR_BUFFER, NUM_BUFFERS }; GLuint vbo[NUM_BUFFERS]; vertex *vertices; //void render(); void render(camera cam); void render(camera cam, shader *shader); void renderShadowCalc(camera cam, shader *shadowCalc); void renderShadows(light light, GLuint SHADOW_WIDTH, GLuint SHADOW_HEIGHT, GLuint depthCubemap, shader *depthshd, GLuint dfbo, float farClipPlane,camera cam, bool first=false); void genVbo(vertex vertices[], GLuint size); void genVbo(glm::vec3 vertices[], GLuint size); void genVboShadow(); void setVertexAtribPointer(std::string param, const void * pointer); void setVertexAtribPointerShadow(std::string param, shader *depthshd, const void * pointer); //void genVbo(std::vector vertices); void genEbo(GLuint elements[], GLuint size); void genEboShadow(); void setBuffer(vertex vertices[], GLuint size, buffers buffer); void setUniform(glm::mat4 matrix, std::string name); void setUniform(glm::mat4 matrix, GLint name); void setUniform(float matrix, std::string name); void setUniform(float matrix, GLint name); void setUniform(glm::vec3, std::string name); void setUniform(glm::vec3, GLint name); void updateMatrix(camera cam); GLint shdViewId; GLint shdProjId; GLint shdTrnsId; glm::mat4 scaleMatrix; glm::mat4 rotationMatrix; glm::mat4 positionMatrix; GLfloat distmult = 1.0; largePos spacePos; bool spaceAct=false; gameobject(shader *render_shader); ~gameobject(); private: }; #endif