Archived
1
Fork 0

Add scene asset type to editor

This commit is contained in:
redstrate 2021-07-19 07:15:34 -04:00
parent 9d1cb3254e
commit b22447a931
2 changed files with 24 additions and 6 deletions

View file

@ -84,7 +84,8 @@ enum class AssetType {
Unknown, Unknown,
Mesh, Mesh,
Texture, Texture,
Material Material,
Scene
}; };
template<typename T> template<typename T>
@ -95,6 +96,8 @@ AssetType get_asset_type() {
return AssetType::Material; return AssetType::Material;
} else if constexpr(std::is_same<T, Texture>::value) { } else if constexpr(std::is_same<T, Texture>::value) {
return AssetType::Texture; return AssetType::Texture;
} else if constexpr(std::is_same<T, Scene>::value) {
return AssetType::Scene;
} }
return AssetType::Unknown; return AssetType::Unknown;
@ -296,6 +299,13 @@ public:
return false; return false;
} }
} }
template<class T>
void open_asset(const AssetType type, const std::function<void(prism::path path)> func_ptr) {
current_asset_type = type;
open_asset_popup = true;
on_asset_select = func_ptr;
}
DebugPass* debugPass = nullptr; DebugPass* debugPass = nullptr;

View file

@ -264,7 +264,13 @@ void CommonEditor::begin_frame() {
on_asset_select(p); on_asset_select(p);
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
} }
if (ImGui::IsItemHovered()) {
ImGui::BeginTooltip();
ImGui::Text(p.c_str());
ImGui::EndTooltip();
}
column++; column++;
if(column != 5) if(column != 5)
@ -760,6 +766,8 @@ void cacheAssetFilesystem() {
asset_files[std::filesystem::relative(p, data_directory)] = AssetType::Material; asset_files[std::filesystem::relative(p, data_directory)] = AssetType::Material;
} else if(p.path().extension() == ".png") { } else if(p.path().extension() == ".png") {
asset_files[std::filesystem::relative(p, data_directory)] = AssetType::Texture; asset_files[std::filesystem::relative(p, data_directory)] = AssetType::Texture;
} else if(p.path().extension() == ".scene") {
asset_files[std::filesystem::relative(p, data_directory)] = AssetType::Scene;
} }
} }
@ -785,16 +793,16 @@ void CommonEditor::drawAssets() {
if(ImGui::ImageButton(get_asset_thumbnail(prism::app_domain / p), ImVec2(64, 64))) if(ImGui::ImageButton(get_asset_thumbnail(prism::app_domain / p), ImVec2(64, 64)))
asset_selected(prism::app_domain / p, type); asset_selected(prism::app_domain / p, type);
if(ImGui::BeginPopupContextItem()) { if(ImGui::BeginPopupContextItem()) {
ImGui::TextDisabled("%s", p.string().c_str()); ImGui::TextDisabled("%s", p.string().c_str());
ImGui::Separator(); ImGui::Separator();
if(ImGui::Button("Regenerate thumbnail")) { if(ImGui::Button("Regenerate thumbnail")) {
asset_thumbnails.erase(asset_thumbnails.find((prism::app_domain / p).string())); asset_thumbnails.erase(asset_thumbnails.find((prism::app_domain / p).string()));
} }
ImGui::EndPopup(); ImGui::EndPopup();
} }