39 const std::vector<MeshInstance*>&
meshInstances()
const {
return _meshInstances; }
41 const std::vector<int>&
layers()
const {
return _layers; }
44 const std::string&
type()
const {
return _type; }
69 for (
auto* mi : _meshInstances) {
70 mi->setBatchGroupId(
id);
74 static const std::vector<RenderComponent*>&
instances() {
return _instances; }
77 void rebuildPrimitiveMesh();
79 inline static std::vector<RenderComponent*> _instances;
81 std::vector<MeshInstance*> _meshInstances;
82 std::vector<std::shared_ptr<Mesh>> _ownedMeshes;
86 bool _receiveShadows =
true;
87 bool _castShadows =
true;
88 int _batchGroupId = -1;
92 std::vector<int> _layers = {1};
Base class for ECS components that attach functionality to entities.
Component(IComponentSystem *system, Entity *entity)
IComponentSystem * system() const
ECS entity — a GraphNode that hosts components defining its behavior.
Base class for GPU materials — owns uniform data, texture bindings, blend/depth state,...
void setBatchGroupId(int id)
Material * material() const
void setLayers(const std::vector< int > &layers)
void setCastShadows(bool value)
std::vector< MeshInstance * > & meshInstances()
void setType(const std::string &type)
const std::vector< MeshInstance * > & meshInstances() const
void initializeComponentData() override
void setReceiveShadows(bool value)
const std::vector< int > & layers() const
static const std::vector< RenderComponent * > & instances()
void cloneFrom(const Component *source) override
bool receiveShadows() const
RenderComponent(IComponentSystem *system, Entity *entity)
~RenderComponent() override
void setMaterial(Material *material)
const std::string & type() const