35 auto& thumbnail = gen.thumbnails[asset.uid()];
36 auto current_fbo = thumbnail.get();
38 if(gen.remaining > 0 && thumbnail.needs_regeneration)
42 auto& scn = gen.get_scene();
49 auto& rpath = ctx.get_cached<rendering_system>();
50 rpath.on_frame_update(scn, dt);
51 rpath.on_frame_before_render(scn, dt);
52 auto new_fbo = rpath.render_scene(scn, dt);
53 thumbnail.set(new_fbo);
55 catch(
const std::exception& e)
65auto get_thumbnail_impl(thumbnail_manager::generator& gen,
72 return transparent.get();
80 return make_thumbnail(gen, asset);
89 auto thumbnail = get_thumbnail_impl(gen_, asset, thumbnails_.transparent, thumbnails_.loading);
96 return thumbnails_.mesh.get();
102 auto thumbnail = get_thumbnail_impl(gen_, asset, thumbnails_.transparent, thumbnails_.loading);
109 return thumbnails_.material.get();
116 if(!asset.is_valid())
118 return thumbnails_.transparent.get();
120 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.ui_tree.get();
126 if(!asset.is_valid())
128 return thumbnails_.transparent.get();
130 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.style_sheet.get();
136 if(!asset.is_valid())
138 return thumbnails_.transparent.get();
140 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.script.get();
147 if(!asset.is_valid())
149 return thumbnails_.transparent.get();
151 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.physics_material.get();
157 if(!asset.is_valid())
159 return thumbnails_.transparent.get();
161 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.audio_clip.get();
167 if(!asset.is_valid())
169 return thumbnails_.transparent.get();
171 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.font.get();
177 if(!asset.is_valid())
179 return thumbnails_.transparent.get();
181 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.animation.get();
187 if(!asset.is_valid())
189 return thumbnails_.transparent.get();
192 return !asset.is_ready() ? thumbnails_.loading.get() : asset.get();
198 if(!asset.is_valid())
200 return thumbnails_.transparent.get();
202 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.shader.get();
208 auto thumbnail = get_thumbnail_impl(gen_, asset, thumbnails_.transparent, thumbnails_.loading);
215 return thumbnails_.prefab.get();
221 if(!asset.is_valid())
223 return thumbnails_.transparent.get();
225 return !asset.is_ready() ? thumbnails_.loading.get() : thumbnails_.scene_prefab.get();
231 if(fs::is_directory(path, ec))
233 return thumbnails_.folder.get();
236 return thumbnails_.file.get();
241 gen_.
thumbnails[uid].needs_regeneration =
true;
259 icon = gimzmo_icons_.camera;
265 const auto&
light = light_comp.get_light();
274 return gimzmo_icons_.sky_light;
276 return gimzmo_icons_.directional_light;
279 return gimzmo_icons_.point_light;
281 return gimzmo_icons_.spot_light;
283 return gimzmo_icons_.sky_light;
292 icon = gimzmo_icons_.reflection_probe;
297 icon = gimzmo_icons_.audio_source;
306 APPLOG_TRACE(
"{}::{}", hpp::type_name_str(*
this), __func__);
308 auto& ev = ctx.get_cached<
events>();
314 thumbnails_.file = am.get_asset<
gfx::texture>(
"editor:/data/icons/file.png");
315 thumbnails_.folder = am.get_asset<
gfx::texture>(
"editor:/data/icons/folder.png");
316 thumbnails_.folder_empty = am.get_asset<
gfx::texture>(
"editor:/data/icons/folder_empty.png");
317 thumbnails_.loading = am.get_asset<
gfx::texture>(
"editor:/data/icons/loading.png");
318 thumbnails_.font = am.get_asset<
gfx::texture>(
"editor:/data/icons/font.png");
319 thumbnails_.shader = am.get_asset<
gfx::texture>(
"editor:/data/icons/shader.png");
320 thumbnails_.material = am.get_asset<
gfx::texture>(
"editor:/data/icons/material.png");
321 thumbnails_.physics_material = am.get_asset<
gfx::texture>(
"editor:/data/icons/material.png");
322 thumbnails_.mesh = am.get_asset<
gfx::texture>(
"editor:/data/icons/mesh.png");
323 thumbnails_.animation = am.get_asset<
gfx::texture>(
"editor:/data/icons/animation.png");
324 thumbnails_.prefab = am.get_asset<
gfx::texture>(
"editor:/data/icons/prefab.png");
325 thumbnails_.scene_prefab = am.get_asset<
gfx::texture>(
"editor:/data/icons/scene.png");
326 thumbnails_.audio_clip = am.get_asset<
gfx::texture>(
"editor:/data/icons/sound.png");
327 thumbnails_.script = am.get_asset<
gfx::texture>(
"editor:/data/icons/script.png");
328 thumbnails_.ui_tree = am.get_asset<
gfx::texture>(
"editor:/data/icons/rhtml.png");
329 thumbnails_.style_sheet = am.get_asset<
gfx::texture>(
"editor:/data/icons/rcss.png");
331 gimzmo_icons_.camera = am.get_asset<
gfx::texture>(
"editor:/data/icons/camera.png");
332 gimzmo_icons_.sky_light = am.get_asset<
gfx::texture>(
"editor:/data/icons/sky_light.png");
333 gimzmo_icons_.directional_light = am.get_asset<
gfx::texture>(
"editor:/data/icons/directional_light.png");
334 gimzmo_icons_.point_light = am.get_asset<
gfx::texture>(
"editor:/data/icons/point_light.png");
335 gimzmo_icons_.spot_light = am.get_asset<
gfx::texture>(
"editor:/data/icons/spot_light.png");
336 gimzmo_icons_.audio_source = am.get_asset<
gfx::texture>(
"editor:/data/icons/audio_source.png");
337 gimzmo_icons_.reflection_probe = am.get_asset<
gfx::texture>(
"editor:/data/icons/reflection_probe.png");
343 APPLOG_TRACE(
"{}::{}", hpp::type_name_str(*
this), __func__);
360 return thumbnail->get_texture();
373 return scenes[remaining];
378 if(wait_frames-- <= 0)
380 for(
auto& scn : scenes)
384 remaining = scenes.size();
std::shared_ptr< texture > ptr
Manages assets, including loading, unloading, and storage.
auto get_asset(const std::string &key, load_flags flags=load_flags::standard) -> asset_handle< T >
Gets an asset by its key.
Class that contains core data for audio sources.
Class that contains core camera data, used for rendering and other purposes.
Class that contains core light data, used for rendering and other purposes.
Class that contains core reflection probe data, used for rendering and other purposes.
Class that contains sky light data.
std::chrono::duration< float > delta_t
#define APPLOG_ERROR(...)
#define APPLOG_TRACE(...)
Represents a handle to an asset, providing access and management functions.
auto get(bool wait=true) const -> std::shared_ptr< T >
Gets the shared pointer to the asset.
static void create_default_3d_scene_for_asset_preview(rtti::context &ctx, scene &scn, const asset_handle< T > &asset, const usize32_t &size)
Creates a default 3D scene for asset preview.
static auto context() -> rtti::context &
hpp::event< void(rtti::context &, delta_t)> on_frame_update
Struct representing a light.
light_type type
The type of the light.
Represents a scene in the ACE framework, managing entities and their relationships.
auto get() -> gfx::texture::ptr
void set(gfx::frame_buffer::ptr fbo)
gfx::frame_buffer::ptr thumbnail
std::map< hpp::uuid, generated_thumbnail > thumbnails
auto get_scene() -> scene &
auto init(rtti::context &ctx) -> bool
auto get_thumbnail(const asset_handle< T > &asset) -> gfx::texture::ptr
auto deinit(rtti::context &ctx) -> bool
auto get_gizmo_icon(entt::handle e) -> gfx::texture::ptr
void on_frame_update(rtti::context &ctx, delta_t)
void remove_thumbnail(const hpp::uuid &uid)
void regenerate_thumbnail(const hpp::uuid &uid)