candlewick 0.10.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
24enum class RenderMode { FILL, LINE };
25
28 std::vector<PbrMaterial> materials;
30 MeshMaterialComponent(Mesh &&mesh, std::vector<PbrMaterial> &&materials)
31 : mesh(std::move(mesh)), materials(std::move(materials)) {
32 assert(mesh.numViews() == materials.size());
33 }
34
35 bool hasTransparency() const;
36};
37
45bool updateTransparencyClassification(entt::registry &reg, entt::entity entity,
46 const MeshMaterialComponent &mmc);
47
48inline void toggleDisable(entt::registry &reg, entt::entity id, bool flag) {
49 if (flag)
50 reg.remove<Disable>(id);
51 else
52 reg.emplace<Disable>(id);
53}
54
55} // 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.
RenderMode
Definition Components.h:24
@ LINE
Definition Components.h:24
@ FILL
Definition Components.h:24
Eigen::Matrix4f Mat4f
Definition math_types.h:11
void toggleDisable(entt::registry &reg, entt::entity id, bool flag)
Definition Components.h:48
Tag struct for disabled (invisible) entities.
Definition Components.h:14
Definition Components.h:17
Definition Components.h:26
Mesh mesh
Definition Components.h:27
MeshMaterialComponent(Mesh &&mesh, std::vector< PbrMaterial > &&materials)
Definition Components.h:30
std::vector< PbrMaterial > materials
Definition Components.h:28
RenderMode mode
Definition Components.h:29
Tag struct for denoting an entity as opaque, for render pass organization.
Definition Components.h:11
Definition Components.h:19