Hypershade-style pin display modes for material graph nodes
Each node gets an All/Conn toggle: connected-only mode hides unconnected pins behind collapsed connector nubs on the title row; dragging a link onto (or from) a nub opens a menu to pick which hidden pin to wire, and the pin appears once connected. The toggle is drawn and hit-tested geometrically, and its tooltip is deferred to after NE::End() so it lands at the cursor. A new Preferences > Material checkbox opts into persisting the per-node mode as USD customData (uiShowAllPins); otherwise it stays session-only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+23
-1
@@ -429,11 +429,15 @@ void Application::LoadPreferences()
|
||||
m_prefs.materialBrowserWidth = [&]{ try { return std::stof(val); } catch(...){ return 220.0f; } }();
|
||||
else if (key == "MaterialPreviewWidth")
|
||||
m_prefs.materialPreviewWidth = [&]{ try { return std::stof(val); } catch(...){ return 320.0f; } }();
|
||||
else if (key == "KeepGraphNodeViewSettingsInUsd")
|
||||
m_prefs.keepGraphNodeViewSettingsInUsd = (val == "1");
|
||||
}
|
||||
|
||||
if (m_materialEditorPanel)
|
||||
if (m_materialEditorPanel) {
|
||||
m_materialEditorPanel->SetColumnWidths(m_prefs.materialBrowserWidth,
|
||||
m_prefs.materialPreviewWidth);
|
||||
m_materialEditorPanel->SetKeepGraphNodeViewSettingsInUsd(m_prefs.keepGraphNodeViewSettingsInUsd);
|
||||
}
|
||||
}
|
||||
|
||||
void Application::SavePreferences()
|
||||
@@ -455,6 +459,7 @@ void Application::SavePreferences()
|
||||
f << "OcioLook=" << m_prefs.ocioLook << "\n";
|
||||
f << "MaterialBrowserWidth=" << m_prefs.materialBrowserWidth << "\n";
|
||||
f << "MaterialPreviewWidth=" << m_prefs.materialPreviewWidth << "\n";
|
||||
f << "KeepGraphNodeViewSettingsInUsd=" << (m_prefs.keepGraphNodeViewSettingsInUsd ? 1 : 0) << "\n";
|
||||
}
|
||||
|
||||
void Application::ApplyPrefsToAllViewports()
|
||||
@@ -505,6 +510,23 @@ void Application::RenderPreferencesDialog()
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
|
||||
// ── Material ────────────────────────────────────────────────────────
|
||||
if (ImGui::BeginTabItem("Material")) {
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Checkbox("Keep graph node view settings in USD customData",
|
||||
&m_prefs.keepGraphNodeViewSettingsInUsd)) {
|
||||
if (m_materialEditorPanel)
|
||||
m_materialEditorPanel->SetKeepGraphNodeViewSettingsInUsd(
|
||||
m_prefs.keepGraphNodeViewSettingsInUsd);
|
||||
}
|
||||
ImGui::TextWrapped(
|
||||
"When enabled, each node's pin display mode (all pins vs. "
|
||||
"connected only) and any manually revealed pins are saved into "
|
||||
"the material file and restored when it's reopened. When "
|
||||
"disabled, this is a session-only view setting.");
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
|
||||
// ── Viewport ────────────────────────────────────────────────────────
|
||||
if (ImGui::BeginTabItem("Viewport")) {
|
||||
ImGui::Spacing();
|
||||
|
||||
Reference in New Issue
Block a user