29 #include <fmt/format.h>
34 #include <type_traits>
38 namespace visualization {
69 static const std::uint16_t
kBadId = 0;
72 inline size_t Hash()
const {
73 return static_cast<std::uint16_t
>(
type) << 16 |
id;
88 explicit operator bool()
const {
return id !=
kBadId; }
92 std::uint16_t
GetId()
const {
return id; }
108 template <EntityType entityType>
113 const auto index =
static_cast<std::uint16_t
>(entityType);
124 if (
abstract.
type != entityType) {
143 template <EntityType entityType>
167 class hash<
open3d::visualization::rendering::REHandle_abstract> {
177 template <
typename T>
178 struct formatter<T,
std::enable_if_t<std::is_base_of<open3d::visualization::rendering::REHandle_abstract, T>::value, char>> {
179 template <
typename FormatContext>
181 FormatContext& ctx) -> decltype(ctx.out()) {
182 return format_to(ctx.out(),
"[{}, {}, hash: {}]",
184 TypeToString(uid.type),
185 uid.
GetId(), uid.Hash());
188 template <
typename ParseContext>
189 constexpr
auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
filament::Texture::InternalFormat format
Definition: FilamentResourceManager.cpp:214
REHandle< EntityType::IndexBuffer > IndexBufferHandle
Definition: RendererHandle.h:158
std::ostream & operator<<(std::ostream &os, const REHandle_abstract &uid)
Definition: RendererHandle.cpp:38
REHandle< EntityType::Material > MaterialHandle
Definition: RendererHandle.h:153
REHandle< EntityType::VertexBuffer > VertexBufferHandle
Definition: RendererHandle.h:157
REHandle< EntityType::Scene > SceneHandle
Definition: RendererHandle.h:147
EntityType
Definition: RendererHandle.h:42
REHandle< EntityType::MaterialInstance > MaterialInstanceHandle
Definition: RendererHandle.h:154
REHandle< EntityType::Geometry > GeometryHandle
Definition: RendererHandle.h:148
REHandle< EntityType::Camera > CameraHandle
Definition: RendererHandle.h:152
REHandle< EntityType::RenderTarget > RenderTargetHandle
Definition: RendererHandle.h:156
REHandle< EntityType::Light > LightHandle
Definition: RendererHandle.h:149
REHandle< EntityType::Texture > TextureHandle
Definition: RendererHandle.h:155
REHandle< EntityType::Skybox > SkyboxHandle
Definition: RendererHandle.h:151
REHandle< EntityType::View > ViewHandle
Definition: RendererHandle.h:146
REHandle< EntityType::IndirectLight > IndirectLightHandle
Definition: RendererHandle.h:150
Definition: PinholeCameraIntrinsic.cpp:35
Definition: RendererHandle.h:66
bool operator!=(const REHandle_abstract &other) const
Definition: RendererHandle.h:80
std::uint16_t GetId() const
Definition: RendererHandle.h:92
bool operator<(const REHandle_abstract &other) const
Definition: RendererHandle.h:84
const EntityType type
Definition: RendererHandle.h:70
std::uint16_t id
Definition: RendererHandle.h:101
size_t Hash() const
Definition: RendererHandle.h:72
bool operator==(const REHandle_abstract &other) const
Definition: RendererHandle.h:76
REHandle_abstract(const EntityType aType, const std::uint16_t aId)
Definition: RendererHandle.h:95
REHandle_abstract()
Definition: RendererHandle.h:90
static const char * TypeToString(EntityType type)
Definition: RendererHandle.cpp:44
static std::array< std::uint16_t, static_cast< size_t >EntityType::Count)> uid_table
Definition: RendererHandle.h:99
static const std::uint16_t kBadId
Definition: RendererHandle.h:69
Definition: RendererHandle.h:109
REHandle(std::uint16_t id)
Definition: RendererHandle.h:135
static REHandle Next()
Definition: RendererHandle.h:112
REHandle(const REHandle &other)
Definition: RendererHandle.h:133
static REHandle Concretize(const REHandle_abstract &abstract)
Definition: RendererHandle.h:123
REHandle()
Definition: RendererHandle.h:132
REHandle & operator=(const REHandle &other)
Definition: RendererHandle.h:137
static const REHandle kBad
Definition: RendererHandle.h:110