Unravel Engine C++ Reference
Loading...
Searching...
No Matches
inspector_assets.h
Go to the documentation of this file.
1#pragma once
2
3#include "inspector.h"
6#include <engine/ecs/scene.h>
7#include <audiopp/source.h>
8
9namespace gfx
10{
11struct texture;
12}
13
14namespace unravel
15{
16class mesh;
17class material;
18struct physics_material;
19struct animation_clip;
20struct audio_clip;
21struct font;
22struct prefab;
23struct scene_prefab;
24struct ui_tree;
25struct style_sheet;
26
27struct inspector_asset_handle : public crtp_meta_type<inspector_asset_handle, inspector>
28{
29 ImGuiTextFilter filter;
30};
31
32struct inspector_asset_handle_texture : public crtp_meta_type<inspector_asset_handle_texture, inspector_asset_handle>
33{
34 void draw_image(const asset_handle<gfx::texture>& data, ImVec2 size);
36 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
37
39 std::shared_ptr<texture_importer_meta> importer_;
41 uintptr_t inspected_version_{};
42
43};
44REFLECT_INSPECTOR_INLINE(inspector_asset_handle_texture, asset_handle<gfx::texture>)
45
47{
48 auto inspect_as_property(rtti::context& ctx, asset_handle<material>& data) -> inspect_result;
49 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
50};
52
54{
55 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
56};
58
59
61{
62 auto inspect_as_property(rtti::context& ctx, asset_handle<mesh>& data) -> inspect_result;
63 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
64
66 std::shared_ptr<mesh_importer_meta> importer_;
67 uintptr_t inspected_version_{};
68};
69REFLECT_INSPECTOR_INLINE(inspector_asset_handle_mesh, asset_handle<mesh>)
70
72{
73 auto inspect_as_property(rtti::context& ctx, asset_handle<animation_clip>& data) -> inspect_result;
74 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
75
77 std::shared_ptr<animation_importer_meta> importer_;
78 uintptr_t inspected_version_{};
79};
80REFLECT_INSPECTOR_INLINE(inspector_asset_handle_animation, asset_handle<animation_clip>)
81
83{
84 auto inspect_as_property(rtti::context& ctx, asset_handle<prefab>& data) -> inspect_result;
85 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
86
87private:
88 auto get_prefab_entity(rtti::context& ctx, const asset_handle<prefab>& prefab) -> entt::handle;
89
90 scene inspected_scene_{"inspector_asset_handle_prefab"};
91 uintptr_t inspected_version_{};
92
93
94};
96
98{
99 auto inspect_as_property(rtti::context& ctx, asset_handle<scene_prefab>& data) -> inspect_result;
100 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
101};
103
105{
106 auto inspect_as_property(rtti::context& ctx, asset_handle<physics_material>& data) -> inspect_result;
107 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
108};
110
112{
113 auto inspect_as_property(rtti::context& ctx, asset_handle<audio_clip>& data) -> inspect_result;
114 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
115
117 std::shared_ptr<audio_importer_meta> importer_;
118 uintptr_t inspected_version_{};
119
120private:
121 void inspect_clip(const std::shared_ptr<audio_clip>& clip);
122 std::shared_ptr<audio::source> source_;
123};
124REFLECT_INSPECTOR_INLINE(inspector_asset_handle_audio_clip, asset_handle<audio_clip>)
125
126
128{
129 auto inspect_as_property(rtti::context& ctx, asset_handle<font>& data) -> inspect_result;
130 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
131};
133
135{
136 auto inspect_as_property(rtti::context& ctx, asset_handle<ui_tree>& data) -> inspect_result;
137 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
138};
140
142{
143 auto inspect_as_property(rtti::context& ctx, asset_handle<style_sheet>& data) -> inspect_result;
144 auto inspect(rtti::context& ctx, entt::meta_any& var, const meta_any_proxy& var_proxy, const var_info& info, const entt::meta_custom& custom) -> inspect_result override;
145};
147
148
149} // namespace unravel
ImGui::Font::Enum font
Definition hub.cpp:24
#define REFLECT_INSPECTOR_INLINE(inspector_type, inspected_type)
Macro to register an inspector inline with its inspected type.
Definition inspector.h:310
Provides utilities for inspecting and converting sequence-related types to strings.
auto inspect(rtti::context &ctx, T &obj) -> inspect_result
Convenience template function for inspecting objects of known type.
Definition inspectors.h:393
Represents a handle to an asset, providing access and management functions.
Result of an inspection operation indicating what changes occurred.
Definition inspector.h:146
std::shared_ptr< animation_importer_meta > importer_
asset_handle< animation_clip > inspected_asset_
std::shared_ptr< audio_importer_meta > importer_
std::shared_ptr< mesh_importer_meta > importer_
asset_handle< gfx::texture > inspected_asset_
auto inspect_as_property(rtti::context &ctx, asset_handle< gfx::texture > &data) -> inspect_result
auto inspect(rtti::context &ctx, entt::meta_any &var, const meta_any_proxy &var_proxy, const var_info &info, const entt::meta_custom &custom) -> inspect_result override
std::shared_ptr< texture_importer_meta > importer_
void draw_image(const asset_handle< gfx::texture > &data, ImVec2 size)
Safe deferred property access proxy for arbitrary object properties.
Definition inspector.h:198
Represents a generic prefab with a buffer for serialized data.
Definition prefab.h:18
Represents a scene in the ACE framework, managing entities and their relationships.
Definition scene.h:21
Metadata about a variable being inspected.
Definition inspector.h:133