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:
+11
-1
@@ -5,6 +5,7 @@
|
||||
#include <exception>
|
||||
#include <Windows.h>
|
||||
#include <string>
|
||||
#include <filesystem>
|
||||
|
||||
static void SetUsdPluginPath() {
|
||||
char exePath[MAX_PATH];
|
||||
@@ -98,7 +99,16 @@ static void SetUsdPluginPath() {
|
||||
int main(int /*argc*/, char* /*argv*/[]) {
|
||||
try {
|
||||
UsdLayerManager::Logger::Instance().SetLogLevel(UsdLayerManager::LogLevel::Info);
|
||||
|
||||
// Temporary: capture LOG_INFO to a file so the [NodeGraph]/[ed] debug
|
||||
// traces are readable after the fact (this is a WIN32-subsystem app,
|
||||
// so stdout isn't visible when launched normally). Remove once the
|
||||
// node-editor drag regression is diagnosed.
|
||||
if (const char* appData = getenv("APPDATA")) {
|
||||
std::filesystem::path logDir = std::filesystem::path(appData) / "UsdLayerManager";
|
||||
std::filesystem::create_directories(logDir);
|
||||
UsdLayerManager::Logger::Instance().SetLogFile((logDir / "debug.log").string());
|
||||
}
|
||||
|
||||
LOG_INFO("=== USD Layer Manager Starting ===");
|
||||
|
||||
SetUsdPluginPath();
|
||||
|
||||
Reference in New Issue
Block a user