candlewick 0.6.0
A tiny cross-platform renderer based on SDL3
Loading...
Searching...
No Matches
Components.h
Go to the documentation of this file.
1#pragma once
2#include "math_types.h"
3#include "Mesh.h"
4#include "MaterialUniform.h"
5
6#include <entt/entity/fwd.hpp>
7
8namespace candlewick {
9
11struct Opaque {};
12
14struct Disable {};
15
16// Tag environment entities
18
20 using Mat4f::Mat4f;
21 using Mat4f::operator=;
22};
23
26 std::vector<PbrMaterial> materials;
27 MeshMaterialComponent(Mesh &&mesh, std::vector<PbrMaterial> &&materials)
28 : mesh(std::move(mesh)), materials(std::move(materials)) {
29 assert(mesh.numViews() == materials.size());
30 }
31};
32
40bool updateTransparencyClassification(entt::registry &reg, entt::entity entity,
41 const MeshMaterialComponent &mmc);
42
43inline void toggleDisable(entt::registry &reg, entt::entity id, bool flag) {
44 if (flag)
45 reg.remove<Disable>(id);
46 else
47 reg.emplace<Disable>(id);
48}
49
50} // namespace candlewick
Handle class for meshes (vertex buffers and an optional index buffer) on the GPU.
Definition Mesh.h:57
Definition Camera.h:8
bool updateTransparencyClassification(entt::registry &reg, entt::entity entity, const MeshMaterialComponent &mmc)
Updates (adds or removes) the Opaque tag component for a given entity.
Eigen::Matrix4f Mat4f
Definition math_types.h:11
void toggleDisable(entt::registry &reg, entt::entity id, bool flag)
Definition Components.h:43
Tag struct for disabled (invisible) entities.
Definition Components.h:14
Definition Components.h:17
Definition Components.h:24
Mesh mesh
Definition Components.h:25
MeshMaterialComponent(Mesh &&mesh, std::vector< PbrMaterial > &&materials)
Definition Components.h:27
std::vector< PbrMaterial > materials
Definition Components.h:26
Tag struct for denoting an entity as opaque, for render pass organization.
Definition Components.h:11
Definition Components.h:19