9#include <glm/detail/type_mat4x4.hpp>
10#include <glm/detail/type_vec3.hpp>
12#include "hellfire/graphics/Mesh.h"
13#include "hellfire/graphics/renderer/RenderingUtils.h"
14#include "hellfire/graphics/managers/MaterialManager.h"
17#define Color glm::vec3
18#define Transform glm::mat4
32 const glm::vec3& c =
glm::
vec3(1.0f),
55 void set_instances(
const std::vector<InstanceData>& instances);
56 void add_instances(
const std::vector<InstanceData>& instances);
void update_gpu_buffer() const
~InstancedRenderableComponent() override
void update_instance(size_t index, const InstanceData &instance)
void reserve_instances(size_t count)
InstancedRenderableComponent(std::shared_ptr< Mesh > mesh, size_t max_instances=1000)
std::shared_ptr< Material > material_
std::shared_ptr< Material > get_material() const
void add_instance(const InstanceData &instance)
InstancedRenderableComponent()=default
size_t get_max_instances() const
void unbind_instance_buffers()
void setup_instanced_vertex_attributes()
void set_material(std::shared_ptr< Material > material)
std::shared_ptr< Mesh > get_mesh() const
void enable_instance_attributes()
const std::vector< InstanceData > & get_instances() const
void add_instances(const std::vector< InstanceData > &instances)
void setup_instance_buffers()
std::vector< InstanceData > instances_
void bind_instance_buffers()
void set_mesh(std::shared_ptr< Mesh > mesh)
size_t get_instance_count() const
void disable_instance_attributes()
std::shared_ptr< Mesh > mesh_
void set_instances(const std::vector< InstanceData > &instances)
bool vertex_attributes_setup_
InstanceData(const glm::mat4 &t=glm::mat4(1.0f), const glm::vec3 &c=glm::vec3(1.0f), float s=1.0f)