class ShaderExplorer : DockPanel { string currentPath = ""; void onRender() { UI::setupAutomaticColumns(128); // To avoid problems we will cache the current path const string cache_currentPath = currentPath; if (cache_currentPath != "") { UI::drawIconCentered("folder", 64); if (UI::isItemClicked(0) and UI::isMouseDoubleClicked(0)) { currentPath = ""; } UI::textCenter(cache_currentPath + "/.."); UI::nextColumn(); } ResourceType resourceType = ResourceType::Shader; int dirCount = Resource::getDirCount(resourceType, cache_currentPath); for (int i = 0; i < dirCount; i++) { UI::drawIconCentered("folder", 64); if (UI::isItemClicked(0) and UI::isMouseDoubleClicked(0)) { Engine::print(Resource::getDirPathById(resourceType, cache_currentPath, i)); currentPath = Resource::getDirPathById(resourceType, cache_currentPath, i); } UI::textCenter(Resource::getDirNameById(resourceType, cache_currentPath, i)); UI::nextColumn(); } int meshCount = Resource::getResourceCount(resourceType, cache_currentPath); for (int i = 0; i < meshCount; i++) { UI::drawIconCentered("file", 64); UI::dragDropSource("SHADER", any(Resource::getResourcePathById(resourceType, cache_currentPath, i)), Resource::getResourcePathById(resourceType, cache_currentPath, i)); UI::textCenter(Resource::getResourceNameById(resourceType, cache_currentPath, i)); UI::nextColumn(); } UI::endColumns(); } }