3#include "core/renderer/IndexBuffer.h"
4#include "core/renderer/Renderer.h"
5#include "core/renderer/Texture.h"
6#include "core/renderer/VertexArray.h"
7#include "core/renderer/VertexBuffer.h"
8#include "core/renderer/VertexBufferLayout.h"
9#include "editor/camera/Camera.h"
10#include "core/renderer/shapes/Shape.h"
12#include "common/types/SmartPointers.h"
13#include "utils/Error.h"
34 bool m_IsEditing =
false;
35 static unsigned int s_ID;
37 Vector<Vertex> m_Vertices;
38 Vector<GLuint> m_Indices;
40 Vector<Ref<Texture>> m_Textures;
41 Ref<VertexArray> m_Vao;
44 String m_VertexShaderPath;
45 String m_PixelShaderPath;
47 glm::mat4 m_ModelMatrix;
48 float m_Shininess = 1;
49 float m_AmbientStrength = 0.5f;
50 float m_SpecularStrength = 0.5f;
52 const unsigned int m_Instances;
60 void loadOBJ(
const std::string& file_name);
67 void normalizeVertices();
68 void recompileShader();
73 Mesh(Vector<Vertex>& verts, Vector<unsigned int>& inds,
VertexBufferLayout layout, glm::mat4 modelMatrix,
unsigned int instances = 1);
74 Mesh(Vector<Vertex>& verts, Vector<unsigned int>& inds,
unsigned int instances = 1);
75 explicit Mesh(
Shape& shape,
unsigned int instances = 1);
76 explicit Mesh(
const std::string& file_name,
unsigned int instances = 1);
77 explicit Mesh(
const std::string& file_name, Ptr<Shader> shader,
unsigned int instances = 1);
79 void Update(
const glm::mat4& modelMatrix);
81 void BindShader(Ref<Shader> shader);
83 Vector<Vertex> GetVertices() {
return m_Vertices; }
84 Vector<unsigned int> GetIndices() {
return m_Indices; };
85 glm::mat4 GetModelMatrix() {
return m_ModelMatrix; };
86 Shader& GetShader() {
return *m_Shader.get(); };
88 void SetVertices(Vector<Vertex> vertices);
89 void SetIndices(Vector<unsigned int> indices);
93 unsigned int GetID() {
return m_ID; };
98 void AddTexture(String file_name) { m_Textures.push_back(Ref<Texture>(
new Texture(file_name))); }
99 Ref<Texture> GetTexture(
int index) {
return m_Textures[index]; }
A class that represents the camera.
Manages the IndexBuffer. For more information on IndexBuffers, visit https://learnopengl....