Vendor node editor in-tree; add material presets; debug drag regression
Move the imgui-node-editor subset the build actually compiles from third_party/imgui-node-editor to src/ui/NodeEditor (version-controlled, MIT LICENSE included). FindImguiNodeEditor.cmake points at the new location; CMakeLists excludes src/ui/NodeEditor from UI_SOURCES so it isn't compiled twice. Material editor presets: a Presets menu (disabled with no open material) builds a UsdPreviewSurface + UsdUVTexture graph fed by an st primvar reader, or a MaterialX standard_surface + image graph fed by a texcoord node. Each is one idempotent, undoable command that re-normalizes layout. Create Material becomes an icon button. New nodes route through FindFreeCanvasSpot so a creation never lands on top of an existing node (overlapping nodes fight over the editor hit test and become undraggable). Shader-ball preview: pick a previewable output (terminal or 3/4-component color-like) instead of always the first output, so scalar-only nodes keep the whole-material preview rather than failing Storm codegen. Per-shape camera frame-fit margins and auto-clip framing. Fixes: DeletePrimCommand::Undo recreates missing destination ancestors before SdfCopySpec (parent material may have been deleted after the command ran). ConfigWindowsMoveFromTitleBarOnly stops a content-area drag in the node canvas from moving the whole Material Editor window. Temporary (marked for removal once the node-editor drag regression is diagnosed): main.cpp mirrors LOG_INFO to %APPDATA%\UsdLayerManager\ debug.log; a g_AxNodeEditorDebugLog hook in the vendored editor plus a [NodeGraph] event-trace block in RenderNodeGraphCanvas dump click/drag/ selection/position-save state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
# FindImguiNodeEditor.cmake - Find or configure thedmd/imgui-node-editor
|
||||
#
|
||||
# This module looks for imgui-node-editor in the third_party/imgui-node-editor
|
||||
# directory (vendored, docking branch) and compiles its sources directly
|
||||
# against this project's own Imgui::Imgui target so it shares the exact same
|
||||
# ImGui headers/defines (no second copy of ImGui is pulled in).
|
||||
# This module looks for imgui-node-editor at src/ui/NodeEditor (an in-tree,
|
||||
# version-controlled subset of the upstream library — MIT licensed, see
|
||||
# src/ui/NodeEditor/LICENSE — containing only the files this project's build
|
||||
# actually compiles; the full upstream drop, including the standalone example
|
||||
# app used to reproduce library-level bugs against a pure reference build,
|
||||
# stays vendored separately at third_party/imgui-node-editor) and compiles its
|
||||
# sources directly against this project's own Imgui::Imgui target so it shares
|
||||
# the exact same ImGui headers/defines (no second copy of ImGui is pulled in).
|
||||
#
|
||||
# Inputs:
|
||||
# IMGUI_NODE_EDITOR_DIR - Path to imgui-node-editor/NodeEditor root
|
||||
@@ -13,12 +17,12 @@
|
||||
# ImguiNodeEditor::ImguiNodeEditor (imported STATIC target)
|
||||
|
||||
if(NOT IMGUI_NODE_EDITOR_DIR)
|
||||
set(IMGUI_NODE_EDITOR_DIR "${CMAKE_SOURCE_DIR}/third_party/imgui-node-editor/NodeEditor")
|
||||
set(IMGUI_NODE_EDITOR_DIR "${CMAKE_SOURCE_DIR}/src/ui/NodeEditor")
|
||||
endif()
|
||||
|
||||
if(NOT IMGUI_NODE_EDITOR_BLUEPRINT_UTILITIES_DIR)
|
||||
set(IMGUI_NODE_EDITOR_BLUEPRINT_UTILITIES_DIR
|
||||
"${CMAKE_SOURCE_DIR}/third_party/imgui-node-editor/Examples/Common/BlueprintUtilities")
|
||||
"${CMAKE_SOURCE_DIR}/src/ui/NodeEditor/BlueprintWidgets")
|
||||
endif()
|
||||
|
||||
find_path(ImguiNodeEditor_INCLUDE_DIR
|
||||
@@ -48,7 +52,7 @@ endforeach()
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(ImguiNodeEditor
|
||||
REQUIRED_VARS ImguiNodeEditor_INCLUDE_DIR
|
||||
FAIL_MESSAGE "imgui-node-editor not found — expected it vendored at third_party/imgui-node-editor/NodeEditor"
|
||||
FAIL_MESSAGE "imgui-node-editor not found — expected it at src/ui/NodeEditor"
|
||||
)
|
||||
|
||||
if(ImguiNodeEditor_FOUND AND ImguiNodeEditor_SOURCES_MISSING)
|
||||
|
||||
Reference in New Issue
Block a user