unreal-engine-mcp-server 0.4.7 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +26 -0
- package/.env.production +38 -7
- package/.eslintrc.json +0 -54
- package/.eslintrc.override.json +8 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
- package/.github/copilot-instructions.md +478 -45
- package/.github/dependabot.yml +19 -0
- package/.github/labeler.yml +24 -0
- package/.github/labels.yml +70 -0
- package/.github/pull_request_template.md +42 -0
- package/.github/release-drafter.yml +148 -0
- package/.github/workflows/auto-merge.yml +38 -0
- package/.github/workflows/ci.yml +38 -0
- package/.github/workflows/dependency-review.yml +17 -0
- package/.github/workflows/gemini-issue-triage.yml +172 -0
- package/.github/workflows/greetings.yml +23 -0
- package/.github/workflows/labeler.yml +16 -0
- package/.github/workflows/links.yml +80 -0
- package/.github/workflows/pr-size-labeler.yml +137 -0
- package/.github/workflows/publish-mcp.yml +12 -7
- package/.github/workflows/release-drafter.yml +23 -0
- package/.github/workflows/release.yml +112 -0
- package/.github/workflows/semantic-pull-request.yml +35 -0
- package/.github/workflows/smoke-test.yml +36 -0
- package/.github/workflows/stale.yml +28 -0
- package/CHANGELOG.md +267 -31
- package/CONTRIBUTING.md +140 -0
- package/README.md +166 -71
- package/claude_desktop_config_example.json +7 -6
- package/dist/automation/bridge.d.ts +50 -0
- package/dist/automation/bridge.js +452 -0
- package/dist/automation/connection-manager.d.ts +23 -0
- package/dist/automation/connection-manager.js +107 -0
- package/dist/automation/handshake.d.ts +11 -0
- package/dist/automation/handshake.js +89 -0
- package/dist/automation/index.d.ts +3 -0
- package/dist/automation/index.js +3 -0
- package/dist/automation/message-handler.d.ts +12 -0
- package/dist/automation/message-handler.js +149 -0
- package/dist/automation/request-tracker.d.ts +25 -0
- package/dist/automation/request-tracker.js +98 -0
- package/dist/automation/types.d.ts +130 -0
- package/dist/automation/types.js +2 -0
- package/dist/cli.js +32 -5
- package/dist/config.d.ts +27 -0
- package/dist/config.js +60 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +12 -0
- package/dist/graphql/resolvers.d.ts +268 -0
- package/dist/graphql/resolvers.js +743 -0
- package/dist/graphql/schema.d.ts +5 -0
- package/dist/graphql/schema.js +437 -0
- package/dist/graphql/server.d.ts +26 -0
- package/dist/graphql/server.js +115 -0
- package/dist/graphql/types.d.ts +7 -0
- package/dist/graphql/types.js +2 -0
- package/dist/handlers/resource-handlers.d.ts +20 -0
- package/dist/handlers/resource-handlers.js +180 -0
- package/dist/index.d.ts +31 -18
- package/dist/index.js +119 -619
- package/dist/prompts/index.js +4 -4
- package/dist/resources/actors.d.ts +17 -12
- package/dist/resources/actors.js +56 -76
- package/dist/resources/assets.d.ts +6 -14
- package/dist/resources/assets.js +115 -147
- package/dist/resources/levels.d.ts +13 -13
- package/dist/resources/levels.js +25 -34
- package/dist/server/resource-registry.d.ts +20 -0
- package/dist/server/resource-registry.js +37 -0
- package/dist/server/tool-registry.d.ts +23 -0
- package/dist/server/tool-registry.js +322 -0
- package/dist/server-setup.d.ts +21 -0
- package/dist/server-setup.js +111 -0
- package/dist/services/health-monitor.d.ts +34 -0
- package/dist/services/health-monitor.js +105 -0
- package/dist/services/metrics-server.d.ts +11 -0
- package/dist/services/metrics-server.js +105 -0
- package/dist/tools/actors.d.ts +147 -9
- package/dist/tools/actors.js +350 -311
- package/dist/tools/animation.d.ts +135 -4
- package/dist/tools/animation.js +510 -411
- package/dist/tools/assets.d.ts +117 -19
- package/dist/tools/assets.js +259 -284
- package/dist/tools/audio.d.ts +102 -42
- package/dist/tools/audio.js +272 -685
- package/dist/tools/base-tool.d.ts +17 -0
- package/dist/tools/base-tool.js +46 -0
- package/dist/tools/behavior-tree.d.ts +94 -0
- package/dist/tools/behavior-tree.js +39 -0
- package/dist/tools/blueprint/helpers.d.ts +29 -0
- package/dist/tools/blueprint/helpers.js +182 -0
- package/dist/tools/blueprint.d.ts +228 -118
- package/dist/tools/blueprint.js +685 -832
- package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
- package/dist/tools/consolidated-tool-definitions.js +829 -496
- package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
- package/dist/tools/consolidated-tool-handlers.js +211 -1026
- package/dist/tools/debug.d.ts +143 -85
- package/dist/tools/debug.js +234 -180
- package/dist/tools/dynamic-handler-registry.d.ts +11 -0
- package/dist/tools/dynamic-handler-registry.js +101 -0
- package/dist/tools/editor.d.ts +139 -18
- package/dist/tools/editor.js +239 -244
- package/dist/tools/engine.d.ts +10 -4
- package/dist/tools/engine.js +13 -5
- package/dist/tools/environment.d.ts +36 -0
- package/dist/tools/environment.js +267 -0
- package/dist/tools/foliage.d.ts +105 -14
- package/dist/tools/foliage.js +219 -331
- package/dist/tools/handlers/actor-handlers.d.ts +3 -0
- package/dist/tools/handlers/actor-handlers.js +232 -0
- package/dist/tools/handlers/animation-handlers.d.ts +3 -0
- package/dist/tools/handlers/animation-handlers.js +185 -0
- package/dist/tools/handlers/argument-helper.d.ts +16 -0
- package/dist/tools/handlers/argument-helper.js +80 -0
- package/dist/tools/handlers/asset-handlers.d.ts +3 -0
- package/dist/tools/handlers/asset-handlers.js +496 -0
- package/dist/tools/handlers/audio-handlers.d.ts +3 -0
- package/dist/tools/handlers/audio-handlers.js +166 -0
- package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
- package/dist/tools/handlers/blueprint-handlers.js +358 -0
- package/dist/tools/handlers/common-handlers.d.ts +14 -0
- package/dist/tools/handlers/common-handlers.js +56 -0
- package/dist/tools/handlers/editor-handlers.d.ts +3 -0
- package/dist/tools/handlers/editor-handlers.js +119 -0
- package/dist/tools/handlers/effect-handlers.d.ts +3 -0
- package/dist/tools/handlers/effect-handlers.js +171 -0
- package/dist/tools/handlers/environment-handlers.d.ts +3 -0
- package/dist/tools/handlers/environment-handlers.js +170 -0
- package/dist/tools/handlers/graph-handlers.d.ts +3 -0
- package/dist/tools/handlers/graph-handlers.js +90 -0
- package/dist/tools/handlers/input-handlers.d.ts +3 -0
- package/dist/tools/handlers/input-handlers.js +21 -0
- package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
- package/dist/tools/handlers/inspect-handlers.js +383 -0
- package/dist/tools/handlers/level-handlers.d.ts +3 -0
- package/dist/tools/handlers/level-handlers.js +237 -0
- package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
- package/dist/tools/handlers/lighting-handlers.js +144 -0
- package/dist/tools/handlers/performance-handlers.d.ts +3 -0
- package/dist/tools/handlers/performance-handlers.js +130 -0
- package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
- package/dist/tools/handlers/pipeline-handlers.js +110 -0
- package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
- package/dist/tools/handlers/sequence-handlers.js +376 -0
- package/dist/tools/handlers/system-handlers.d.ts +4 -0
- package/dist/tools/handlers/system-handlers.js +506 -0
- package/dist/tools/input.d.ts +19 -0
- package/dist/tools/input.js +89 -0
- package/dist/tools/introspection.d.ts +103 -40
- package/dist/tools/introspection.js +425 -568
- package/dist/tools/landscape.d.ts +97 -36
- package/dist/tools/landscape.js +280 -409
- package/dist/tools/level.d.ts +130 -10
- package/dist/tools/level.js +639 -675
- package/dist/tools/lighting.d.ts +77 -38
- package/dist/tools/lighting.js +441 -943
- package/dist/tools/logs.d.ts +3 -3
- package/dist/tools/logs.js +5 -57
- package/dist/tools/materials.d.ts +91 -24
- package/dist/tools/materials.js +190 -118
- package/dist/tools/niagara.d.ts +149 -39
- package/dist/tools/niagara.js +232 -182
- package/dist/tools/performance.d.ts +27 -12
- package/dist/tools/performance.js +204 -122
- package/dist/tools/physics.d.ts +32 -77
- package/dist/tools/physics.js +171 -582
- package/dist/tools/property-dictionary.d.ts +13 -0
- package/dist/tools/property-dictionary.js +82 -0
- package/dist/tools/sequence.d.ts +73 -48
- package/dist/tools/sequence.js +196 -748
- package/dist/tools/tool-definition-utils.d.ts +59 -0
- package/dist/tools/tool-definition-utils.js +35 -0
- package/dist/tools/ui.d.ts +66 -34
- package/dist/tools/ui.js +134 -214
- package/dist/types/env.d.ts +0 -3
- package/dist/types/env.js +0 -7
- package/dist/types/tool-interfaces.d.ts +898 -0
- package/dist/types/tool-interfaces.js +2 -0
- package/dist/types/tool-types.d.ts +183 -19
- package/dist/types/tool-types.js +0 -4
- package/dist/unreal-bridge.d.ts +24 -131
- package/dist/unreal-bridge.js +364 -1506
- package/dist/utils/command-validator.d.ts +9 -0
- package/dist/utils/command-validator.js +67 -0
- package/dist/utils/elicitation.d.ts +1 -1
- package/dist/utils/elicitation.js +12 -15
- package/dist/utils/error-handler.d.ts +2 -51
- package/dist/utils/error-handler.js +11 -87
- package/dist/utils/ini-reader.d.ts +3 -0
- package/dist/utils/ini-reader.js +69 -0
- package/dist/utils/logger.js +9 -6
- package/dist/utils/normalize.d.ts +3 -0
- package/dist/utils/normalize.js +56 -0
- package/dist/utils/response-factory.d.ts +7 -0
- package/dist/utils/response-factory.js +33 -0
- package/dist/utils/response-validator.d.ts +3 -24
- package/dist/utils/response-validator.js +130 -81
- package/dist/utils/result-helpers.d.ts +4 -5
- package/dist/utils/result-helpers.js +15 -16
- package/dist/utils/safe-json.js +5 -11
- package/dist/utils/unreal-command-queue.d.ts +24 -0
- package/dist/utils/unreal-command-queue.js +120 -0
- package/dist/utils/validation.d.ts +0 -40
- package/dist/utils/validation.js +1 -78
- package/dist/wasm/index.d.ts +70 -0
- package/dist/wasm/index.js +535 -0
- package/docs/GraphQL-API.md +888 -0
- package/docs/Migration-Guide-v0.5.0.md +692 -0
- package/docs/Roadmap.md +53 -0
- package/docs/WebAssembly-Integration.md +628 -0
- package/docs/editor-plugin-extension.md +370 -0
- package/docs/handler-mapping.md +242 -0
- package/docs/native-automation-progress.md +128 -0
- package/docs/testing-guide.md +423 -0
- package/mcp-config-example.json +6 -6
- package/package.json +60 -27
- package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
- package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
- package/scripts/check-unreal-connection.mjs +19 -0
- package/scripts/clean-tmp.js +23 -0
- package/scripts/patch-wasm.js +26 -0
- package/scripts/run-all-tests.mjs +131 -0
- package/scripts/smoke-test.ts +94 -0
- package/scripts/sync-mcp-plugin.js +143 -0
- package/scripts/test-no-plugin-alternates.mjs +113 -0
- package/scripts/validate-server.js +46 -0
- package/scripts/verify-automation-bridge.js +200 -0
- package/server.json +57 -21
- package/src/automation/bridge.ts +558 -0
- package/src/automation/connection-manager.ts +130 -0
- package/src/automation/handshake.ts +99 -0
- package/src/automation/index.ts +2 -0
- package/src/automation/message-handler.ts +167 -0
- package/src/automation/request-tracker.ts +123 -0
- package/src/automation/types.ts +107 -0
- package/src/cli.ts +33 -6
- package/src/config.ts +73 -0
- package/src/constants.ts +12 -0
- package/src/graphql/resolvers.ts +1010 -0
- package/src/graphql/schema.ts +452 -0
- package/src/graphql/server.ts +154 -0
- package/src/graphql/types.ts +7 -0
- package/src/handlers/resource-handlers.ts +186 -0
- package/src/index.ts +152 -663
- package/src/prompts/index.ts +4 -4
- package/src/resources/actors.ts +58 -76
- package/src/resources/assets.ts +147 -134
- package/src/resources/levels.ts +28 -33
- package/src/server/resource-registry.ts +47 -0
- package/src/server/tool-registry.ts +354 -0
- package/src/server-setup.ts +148 -0
- package/src/services/health-monitor.ts +132 -0
- package/src/services/metrics-server.ts +142 -0
- package/src/tools/actors.ts +417 -322
- package/src/tools/animation.ts +671 -461
- package/src/tools/assets.ts +353 -289
- package/src/tools/audio.ts +323 -766
- package/src/tools/base-tool.ts +52 -0
- package/src/tools/behavior-tree.ts +45 -0
- package/src/tools/blueprint/helpers.ts +189 -0
- package/src/tools/blueprint.ts +787 -965
- package/src/tools/consolidated-tool-definitions.ts +993 -515
- package/src/tools/consolidated-tool-handlers.ts +272 -1139
- package/src/tools/debug.ts +292 -187
- package/src/tools/dynamic-handler-registry.ts +151 -0
- package/src/tools/editor.ts +309 -246
- package/src/tools/engine.ts +14 -3
- package/src/tools/environment.ts +287 -0
- package/src/tools/foliage.ts +314 -379
- package/src/tools/handlers/actor-handlers.ts +271 -0
- package/src/tools/handlers/animation-handlers.ts +237 -0
- package/src/tools/handlers/argument-helper.ts +142 -0
- package/src/tools/handlers/asset-handlers.ts +532 -0
- package/src/tools/handlers/audio-handlers.ts +194 -0
- package/src/tools/handlers/blueprint-handlers.ts +380 -0
- package/src/tools/handlers/common-handlers.ts +87 -0
- package/src/tools/handlers/editor-handlers.ts +123 -0
- package/src/tools/handlers/effect-handlers.ts +220 -0
- package/src/tools/handlers/environment-handlers.ts +183 -0
- package/src/tools/handlers/graph-handlers.ts +116 -0
- package/src/tools/handlers/input-handlers.ts +28 -0
- package/src/tools/handlers/inspect-handlers.ts +450 -0
- package/src/tools/handlers/level-handlers.ts +252 -0
- package/src/tools/handlers/lighting-handlers.ts +147 -0
- package/src/tools/handlers/performance-handlers.ts +132 -0
- package/src/tools/handlers/pipeline-handlers.ts +127 -0
- package/src/tools/handlers/sequence-handlers.ts +415 -0
- package/src/tools/handlers/system-handlers.ts +564 -0
- package/src/tools/input.ts +101 -0
- package/src/tools/introspection.ts +493 -584
- package/src/tools/landscape.ts +394 -489
- package/src/tools/level.ts +752 -694
- package/src/tools/lighting.ts +583 -984
- package/src/tools/logs.ts +9 -57
- package/src/tools/materials.ts +231 -121
- package/src/tools/niagara.ts +293 -168
- package/src/tools/performance.ts +320 -168
- package/src/tools/physics.ts +268 -613
- package/src/tools/property-dictionary.ts +98 -0
- package/src/tools/sequence.ts +255 -815
- package/src/tools/tool-definition-utils.ts +35 -0
- package/src/tools/ui.ts +207 -283
- package/src/types/env.ts +0 -10
- package/src/types/tool-interfaces.ts +250 -0
- package/src/types/tool-types.ts +243 -21
- package/src/unreal-bridge.ts +460 -1550
- package/src/utils/command-validator.ts +75 -0
- package/src/utils/elicitation.ts +10 -7
- package/src/utils/error-handler.ts +14 -90
- package/src/utils/ini-reader.ts +86 -0
- package/src/utils/logger.ts +8 -3
- package/src/utils/normalize.ts +60 -0
- package/src/utils/response-factory.ts +39 -0
- package/src/utils/response-validator.ts +176 -56
- package/src/utils/result-helpers.ts +21 -19
- package/src/utils/safe-json.ts +14 -11
- package/src/utils/unreal-command-queue.ts +152 -0
- package/src/utils/validation.ts +4 -1
- package/src/wasm/index.ts +838 -0
- package/test-server.mjs +100 -0
- package/tests/run-unreal-tool-tests.mjs +242 -14
- package/tests/test-animation.mjs +44 -0
- package/tests/test-asset-advanced.mjs +82 -0
- package/tests/test-asset-errors.mjs +35 -0
- package/tests/test-audio.mjs +219 -0
- package/tests/test-automation-timeouts.mjs +98 -0
- package/tests/test-behavior-tree.mjs +261 -0
- package/tests/test-blueprint-events.mjs +35 -0
- package/tests/test-blueprint-graph.mjs +79 -0
- package/tests/test-blueprint.mjs +577 -0
- package/tests/test-client-mode.mjs +86 -0
- package/tests/test-console-command.mjs +56 -0
- package/tests/test-control-actor.mjs +425 -0
- package/tests/test-control-editor.mjs +80 -0
- package/tests/test-extra-tools.mjs +38 -0
- package/tests/test-graphql.mjs +322 -0
- package/tests/test-inspect.mjs +72 -0
- package/tests/test-landscape.mjs +60 -0
- package/tests/test-manage-asset.mjs +438 -0
- package/tests/test-manage-level.mjs +70 -0
- package/tests/test-materials.mjs +356 -0
- package/tests/test-niagara.mjs +185 -0
- package/tests/test-no-inline-python.mjs +122 -0
- package/tests/test-plugin-handshake.mjs +82 -0
- package/tests/test-render.mjs +33 -0
- package/tests/test-runner.mjs +933 -0
- package/tests/test-search-assets.mjs +66 -0
- package/tests/test-sequence.mjs +68 -0
- package/tests/test-system.mjs +57 -0
- package/tests/test-wasm.mjs +193 -0
- package/tests/test-world-partition.mjs +215 -0
- package/tsconfig.json +3 -3
- package/wasm/Cargo.lock +363 -0
- package/wasm/Cargo.toml +42 -0
- package/wasm/LICENSE +21 -0
- package/wasm/README.md +253 -0
- package/wasm/src/dependency_resolver.rs +377 -0
- package/wasm/src/lib.rs +153 -0
- package/wasm/src/property_parser.rs +271 -0
- package/wasm/src/transform_math.rs +396 -0
- package/wasm/tests/integration.rs +109 -0
- package/.github/workflows/smithery-build.yml +0 -29
- package/dist/tools/build_environment_advanced.d.ts +0 -65
- package/dist/tools/build_environment_advanced.js +0 -633
- package/dist/tools/rc.d.ts +0 -110
- package/dist/tools/rc.js +0 -437
- package/dist/tools/visual.d.ts +0 -40
- package/dist/tools/visual.js +0 -282
- package/dist/utils/http.d.ts +0 -6
- package/dist/utils/http.js +0 -151
- package/dist/utils/python-output.d.ts +0 -18
- package/dist/utils/python-output.js +0 -290
- package/dist/utils/python.d.ts +0 -2
- package/dist/utils/python.js +0 -4
- package/dist/utils/stdio-redirect.d.ts +0 -2
- package/dist/utils/stdio-redirect.js +0 -20
- package/docs/unreal-tool-test-cases.md +0 -574
- package/smithery.yaml +0 -29
- package/src/tools/build_environment_advanced.ts +0 -732
- package/src/tools/rc.ts +0 -515
- package/src/tools/visual.ts +0 -281
- package/src/utils/http.ts +0 -187
- package/src/utils/python-output.ts +0 -351
- package/src/utils/python.ts +0 -3
- package/src/utils/stdio-redirect.ts +0 -18
|
@@ -1,672 +1,1018 @@
|
|
|
1
|
-
|
|
1
|
+
import { commonSchemas } from './tool-definition-utils.js';
|
|
2
|
+
// Force rebuild timestamp update
|
|
2
3
|
|
|
3
4
|
export const consolidatedToolDefinitions = [
|
|
4
|
-
// 1. ASSET MANAGER
|
|
5
|
+
// 1. ASSET MANAGER
|
|
5
6
|
{
|
|
6
7
|
name: 'manage_asset',
|
|
7
|
-
|
|
8
|
+
description: `Comprehensive asset management suite. Handles import/export, basic file operations, dependency analysis, source control, and specialized graph editing (Materials, Behavior Trees).
|
|
8
9
|
|
|
9
10
|
Use it when you need to:
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
11
|
+
- manage asset lifecycle (import, duplicate, rename, delete).
|
|
12
|
+
- organize project structure (folders, redirects).
|
|
13
|
+
- analyze dependencies or fix reference issues.
|
|
14
|
+
- edit Material graphs or Behavior Trees.
|
|
15
|
+
- generate basic assets like Materials, Textures, or Blueprints (via asset creation).
|
|
13
16
|
|
|
14
|
-
Supported actions:
|
|
17
|
+
Supported actions:
|
|
18
|
+
- Core: list, import, duplicate, rename, move, delete, delete_assets, create_folder, search_assets.
|
|
19
|
+
- Utils: get_dependencies, get_source_control_state, analyze_graph, create_thumbnail, set_tags, get_metadata, set_metadata, validate, fixup_redirectors, find_by_tag, generate_report.
|
|
20
|
+
- Creation: create_material, create_material_instance, create_render_target.
|
|
21
|
+
- Rendering: nanite_rebuild_mesh.
|
|
22
|
+
- Material Graph: add_material_node, connect_material_pins, remove_material_node, break_material_connections, get_material_node_details.
|
|
23
|
+
- Behavior Tree: add_bt_node, connect_bt_nodes, remove_bt_node, break_bt_connections, set_bt_node_properties.`,
|
|
15
24
|
inputSchema: {
|
|
16
25
|
type: 'object',
|
|
17
26
|
properties: {
|
|
18
|
-
action: {
|
|
19
|
-
type: 'string',
|
|
20
|
-
enum: [
|
|
27
|
+
action: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
enum: [
|
|
30
|
+
// Core
|
|
31
|
+
'list', 'import', 'duplicate', 'rename', 'move', 'delete', 'delete_asset', 'delete_assets', 'create_folder', 'search_assets',
|
|
32
|
+
// Utils
|
|
33
|
+
'get_dependencies', 'get_source_control_state', 'analyze_graph', 'get_asset_graph', 'create_thumbnail', 'set_tags', 'get_metadata', 'set_metadata', 'validate', 'fixup_redirectors', 'find_by_tag', 'generate_report',
|
|
34
|
+
// Creation
|
|
35
|
+
'create_material', 'create_material_instance', 'create_render_target', 'generate_lods', 'add_material_parameter', 'list_instances', 'reset_instance_parameters', 'exists', 'get_material_stats',
|
|
36
|
+
// Rendering
|
|
37
|
+
'nanite_rebuild_mesh',
|
|
38
|
+
// Material Graph
|
|
39
|
+
'add_material_node', 'connect_material_pins', 'remove_material_node', 'break_material_connections', 'get_material_node_details', 'rebuild_material'
|
|
40
|
+
],
|
|
21
41
|
description: 'Action to perform'
|
|
22
42
|
},
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
43
|
+
// -- Common --
|
|
44
|
+
assetPath: { type: 'string', description: 'Target asset path (e.g., "/Game/MyAsset").' },
|
|
45
|
+
|
|
46
|
+
// -- List/Search --
|
|
47
|
+
directory: { type: 'string', description: 'Directory path to list.' },
|
|
48
|
+
classNames: { type: 'array', items: { type: 'string' }, description: 'Class names filter.' },
|
|
49
|
+
packagePaths: { type: 'array', items: { type: 'string' }, description: 'Package paths to search.' },
|
|
50
|
+
recursivePaths: { type: 'boolean' },
|
|
51
|
+
recursiveClasses: { type: 'boolean' },
|
|
52
|
+
limit: { type: 'number' },
|
|
53
|
+
|
|
54
|
+
// -- Import --
|
|
55
|
+
sourcePath: { type: 'string', description: 'Source file path on disk.' },
|
|
56
|
+
destinationPath: { type: 'string', description: 'Destination content path.' },
|
|
57
|
+
|
|
58
|
+
// -- Operations --
|
|
59
|
+
assetPaths: { type: 'array', items: { type: 'string' }, description: 'Batch asset paths.' },
|
|
60
|
+
lodCount: { type: 'number', description: 'Number of LODs to generate.' },
|
|
61
|
+
reductionSettings: { type: 'object', description: 'LOD reduction settings.' },
|
|
62
|
+
nodeName: { type: 'string', description: 'Variable name or Function name, depending on node type' },
|
|
63
|
+
eventName: { type: 'string', description: 'For Event nodes (e.g. ReceiveBeginPlay) or CustomEvent nodes' },
|
|
64
|
+
memberClass: { type: 'string', description: 'For Event nodes, the class defining the event (optional)' },
|
|
65
|
+
posX: { type: 'number' },
|
|
66
|
+
newName: { type: 'string', description: 'New name for rename/duplicate.' },
|
|
67
|
+
overwrite: { type: 'boolean' },
|
|
68
|
+
save: { type: 'boolean' },
|
|
69
|
+
fixupRedirectors: { type: 'boolean' },
|
|
70
|
+
directoryPath: { type: 'string' },
|
|
71
|
+
|
|
72
|
+
// -- Material/Instance Creation --
|
|
73
|
+
name: { type: 'string', description: 'Name of new asset.' },
|
|
74
|
+
path: { type: 'string', description: 'Directory to create asset in.' },
|
|
75
|
+
parentMaterial: { type: 'string', description: 'Parent material for instances.' },
|
|
76
|
+
parameters: { type: 'object', description: 'Material instance parameters.' },
|
|
77
|
+
|
|
78
|
+
// -- Render Target --
|
|
79
|
+
width: { type: 'number' },
|
|
80
|
+
height: { type: 'number' },
|
|
81
|
+
format: { type: 'string' },
|
|
82
|
+
|
|
83
|
+
// -- Nanite --
|
|
84
|
+
meshPath: { type: 'string' },
|
|
85
|
+
|
|
86
|
+
// -- Metadata/Tags --
|
|
87
|
+
tag: { type: 'string' },
|
|
88
|
+
metadata: { type: 'object' },
|
|
89
|
+
|
|
90
|
+
// -- Graph Editing (Material/BT) --
|
|
91
|
+
graphName: { type: 'string' },
|
|
92
|
+
nodeType: { type: 'string' },
|
|
93
|
+
nodeId: { type: 'string' },
|
|
94
|
+
fromNodeId: { type: 'string' },
|
|
95
|
+
fromPin: { type: 'string' },
|
|
96
|
+
toNodeId: { type: 'string' },
|
|
97
|
+
toPin: { type: 'string' },
|
|
98
|
+
parameterName: { type: 'string' },
|
|
99
|
+
value: { description: 'Property value (number, string, etc).' },
|
|
100
|
+
x: { type: 'number' },
|
|
101
|
+
y: { type: 'number' },
|
|
102
|
+
comment: { type: 'string' },
|
|
103
|
+
parentNodeId: { type: 'string' },
|
|
104
|
+
childNodeId: { type: 'string' },
|
|
105
|
+
|
|
106
|
+
// -- Analyze --
|
|
107
|
+
maxDepth: { type: 'number' }
|
|
31
108
|
},
|
|
32
109
|
required: ['action']
|
|
33
110
|
},
|
|
34
111
|
outputSchema: {
|
|
35
112
|
type: 'object',
|
|
36
113
|
properties: {
|
|
37
|
-
success: { type: 'boolean'
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Class: { type: 'string' },
|
|
47
|
-
PackagePath: { type: 'string' }
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
paths: { type: 'array', items: { type: 'string' }, description: 'Imported asset paths (for import)' },
|
|
52
|
-
materialPath: { type: 'string', description: 'Created material path (for create_material)' },
|
|
53
|
-
message: { type: 'string', description: 'Status message' },
|
|
54
|
-
error: { type: 'string', description: 'Error message if failed' }
|
|
114
|
+
success: { type: 'boolean' },
|
|
115
|
+
message: { type: 'string' },
|
|
116
|
+
assets: { type: 'array', items: { type: 'object' } },
|
|
117
|
+
paths: { type: 'array', items: { type: 'string' } },
|
|
118
|
+
path: { type: 'string' },
|
|
119
|
+
error: { type: 'string' },
|
|
120
|
+
// Graph results
|
|
121
|
+
nodeId: { type: 'string' },
|
|
122
|
+
details: { type: 'object' }
|
|
55
123
|
}
|
|
56
124
|
}
|
|
57
125
|
},
|
|
58
126
|
|
|
59
|
-
// 2.
|
|
127
|
+
// 2. BLUEPRINT MANAGER
|
|
60
128
|
{
|
|
61
|
-
name: '
|
|
62
|
-
|
|
129
|
+
name: 'manage_blueprint',
|
|
130
|
+
description: `Blueprint authoring and editing tool.
|
|
63
131
|
|
|
64
132
|
Use it when you need to:
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
133
|
+
- create new Blueprints.
|
|
134
|
+
- inspect existing Blueprints (get_blueprint).
|
|
135
|
+
- modify the component hierarchy (SCS).
|
|
136
|
+
- edit the Blueprint graph (nodes, pins, properties).
|
|
68
137
|
|
|
69
|
-
Supported actions:
|
|
138
|
+
Supported actions:
|
|
139
|
+
- Lifecycle: create, get_blueprint.
|
|
140
|
+
- Components (SCS): add_component, set_default, modify_scs, get_scs, add_scs_component, remove_scs_component, reparent_scs_component, set_scs_transform, set_scs_property.
|
|
141
|
+
- Helpers: ensure_exists, probe_handle, add_variable, add_function, add_event, add_construction_script, set_variable_metadata, set_metadata.
|
|
142
|
+
- Graph: create_node, delete_node, connect_pins, break_pin_links, set_node_property, create_reroute_node, get_node_details, get_graph_details, get_pin_details.`,
|
|
70
143
|
inputSchema: {
|
|
71
144
|
type: 'object',
|
|
72
145
|
properties: {
|
|
73
|
-
action: {
|
|
74
|
-
type: 'string',
|
|
75
|
-
enum: [
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
type: 'object',
|
|
87
|
-
description: 'World space location in centimeters (Unreal units). Optional for spawn, defaults to origin.',
|
|
88
|
-
properties: {
|
|
89
|
-
x: { type: 'number', description: 'X coordinate (forward axis in Unreal)' },
|
|
90
|
-
y: { type: 'number', description: 'Y coordinate (right axis in Unreal)' },
|
|
91
|
-
z: { type: 'number', description: 'Z coordinate (up axis in Unreal)' }
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
rotation: {
|
|
95
|
-
type: 'object',
|
|
96
|
-
description: 'World space rotation in degrees. Optional for spawn, defaults to zero rotation.',
|
|
97
|
-
properties: {
|
|
98
|
-
pitch: { type: 'number', description: 'Pitch rotation in degrees (Y-axis rotation)' },
|
|
99
|
-
yaw: { type: 'number', description: 'Yaw rotation in degrees (Z-axis rotation)' },
|
|
100
|
-
roll: { type: 'number', description: 'Roll rotation in degrees (X-axis rotation)' }
|
|
101
|
-
}
|
|
146
|
+
action: {
|
|
147
|
+
type: 'string',
|
|
148
|
+
enum: [
|
|
149
|
+
// Lifecycle
|
|
150
|
+
'create', 'get_blueprint', 'get', 'compile',
|
|
151
|
+
// SCS
|
|
152
|
+
'add_component', 'set_default', 'modify_scs', 'get_scs', 'add_scs_component', 'remove_scs_component', 'reparent_scs_component', 'set_scs_transform', 'set_scs_property',
|
|
153
|
+
// Helpers
|
|
154
|
+
'ensure_exists', 'probe_handle', 'add_variable', 'remove_variable', 'rename_variable', 'add_function', 'add_event', 'remove_event', 'add_construction_script', 'set_variable_metadata', 'set_metadata',
|
|
155
|
+
// Graph
|
|
156
|
+
'create_node', 'add_node', 'delete_node', 'connect_pins', 'break_pin_links', 'set_node_property', 'create_reroute_node', 'get_node_details', 'get_graph_details', 'get_pin_details'
|
|
157
|
+
],
|
|
158
|
+
description: 'Blueprint action'
|
|
102
159
|
},
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
160
|
+
// -- Identifiers --
|
|
161
|
+
name: { type: 'string', description: 'Blueprint name.' },
|
|
162
|
+
blueprintPath: { type: 'string', description: 'Blueprint asset path.' },
|
|
163
|
+
|
|
164
|
+
// -- Create --
|
|
165
|
+
blueprintType: { type: 'string', description: 'Parent class (e.g., Actor).' },
|
|
166
|
+
savePath: { type: 'string' },
|
|
167
|
+
|
|
168
|
+
// -- Components --
|
|
169
|
+
componentType: { type: 'string' },
|
|
170
|
+
componentName: { type: 'string' },
|
|
171
|
+
componentClass: { type: 'string' },
|
|
172
|
+
attachTo: { type: 'string' },
|
|
173
|
+
newParent: { type: 'string' },
|
|
174
|
+
|
|
175
|
+
// -- Properties/Defaults --
|
|
176
|
+
propertyName: { type: 'string' },
|
|
177
|
+
variableName: { type: 'string', description: 'Name of the variable.' },
|
|
178
|
+
oldName: { type: 'string' },
|
|
179
|
+
newName: { type: 'string' },
|
|
180
|
+
value: { description: 'Value to set.' },
|
|
181
|
+
metadata: { type: 'object' },
|
|
182
|
+
properties: { type: 'object', description: 'Initial CDO properties for new blueprints.' },
|
|
183
|
+
|
|
184
|
+
// -- Graph Editing --
|
|
185
|
+
graphName: { type: 'string' },
|
|
186
|
+
nodeType: { type: 'string' },
|
|
187
|
+
nodeId: { type: 'string' },
|
|
188
|
+
pinName: { type: 'string' },
|
|
189
|
+
linkedTo: { type: 'string' },
|
|
190
|
+
memberName: { type: 'string' },
|
|
191
|
+
x: { type: 'number' },
|
|
192
|
+
y: { type: 'number' },
|
|
193
|
+
|
|
194
|
+
// -- SCS Transform --
|
|
195
|
+
location: { type: 'array', items: { type: 'number' } },
|
|
196
|
+
rotation: { type: 'array', items: { type: 'number' } },
|
|
197
|
+
scale: { type: 'array', items: { type: 'number' } },
|
|
198
|
+
|
|
199
|
+
// -- Batch Operations --
|
|
200
|
+
operations: { type: 'array', items: { type: 'object' } },
|
|
201
|
+
compile: { type: 'boolean' },
|
|
202
|
+
save: { type: 'boolean' },
|
|
203
|
+
|
|
204
|
+
// -- Events --
|
|
205
|
+
eventType: { type: 'string', description: 'Event type (e.g. "BeginPlay", "Tick", "custom").' },
|
|
206
|
+
customEventName: { type: 'string', description: 'Name for custom event.' },
|
|
207
|
+
parameters: { type: 'array', items: { type: 'object' }, description: 'Parameters for the event.' }
|
|
113
208
|
},
|
|
114
209
|
required: ['action']
|
|
115
210
|
},
|
|
116
211
|
outputSchema: {
|
|
117
212
|
type: 'object',
|
|
118
213
|
properties: {
|
|
119
|
-
success: { type: 'boolean'
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
214
|
+
success: { type: 'boolean' },
|
|
215
|
+
blueprintPath: { type: 'string' },
|
|
216
|
+
message: { type: 'string' },
|
|
217
|
+
error: { type: 'string' },
|
|
218
|
+
// Snapshot data
|
|
219
|
+
blueprint: { type: 'object' }
|
|
125
220
|
}
|
|
126
221
|
}
|
|
127
222
|
},
|
|
128
223
|
|
|
129
|
-
// 3.
|
|
224
|
+
// 3. ACTOR CONTROL
|
|
130
225
|
{
|
|
131
|
-
name: '
|
|
132
|
-
|
|
226
|
+
name: 'control_actor',
|
|
227
|
+
description: `Viewport actor manipulation.
|
|
133
228
|
|
|
134
229
|
Use it when you need to:
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
230
|
+
- spawn, destroy, or duplicate actors.
|
|
231
|
+
- move/rotate/scale actors.
|
|
232
|
+
- modify actor components or tags.
|
|
233
|
+
- apply physics forces.
|
|
138
234
|
|
|
139
|
-
Supported actions:
|
|
235
|
+
Supported actions: spawn, spawn_blueprint, delete, delete_by_tag, duplicate, apply_force, set_transform, get_transform, set_visibility, add_component, set_component_properties, get_components, add_tag, remove_tag, find_by_tag, find_by_name, list, set_blueprint_variables, create_snapshot, attach, detach.`,
|
|
140
236
|
inputSchema: {
|
|
141
237
|
type: 'object',
|
|
142
238
|
properties: {
|
|
143
|
-
action: {
|
|
144
|
-
type: 'string',
|
|
145
|
-
enum: [
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
x: { type: 'number', description: 'X coordinate in centimeters' },
|
|
154
|
-
y: { type: 'number', description: 'Y coordinate in centimeters' },
|
|
155
|
-
z: { type: 'number', description: 'Z coordinate in centimeters' }
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
rotation: {
|
|
159
|
-
type: 'object',
|
|
160
|
-
description: 'Camera rotation for set_camera action. All rotation components required.',
|
|
161
|
-
properties: {
|
|
162
|
-
pitch: { type: 'number', description: 'Pitch in degrees' },
|
|
163
|
-
yaw: { type: 'number', description: 'Yaw in degrees' },
|
|
164
|
-
roll: { type: 'number', description: 'Roll in degrees' }
|
|
165
|
-
}
|
|
239
|
+
action: {
|
|
240
|
+
type: 'string',
|
|
241
|
+
enum: [
|
|
242
|
+
'spawn', 'spawn_blueprint', 'delete', 'delete_by_tag', 'duplicate',
|
|
243
|
+
'apply_force', 'set_transform', 'get_transform', 'set_visibility',
|
|
244
|
+
'add_component', 'set_component_properties', 'get_components',
|
|
245
|
+
'add_tag', 'remove_tag', 'find_by_tag', 'find_by_name', 'list', 'set_blueprint_variables',
|
|
246
|
+
'create_snapshot', 'attach', 'detach'
|
|
247
|
+
],
|
|
248
|
+
description: 'Action to perform'
|
|
166
249
|
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
250
|
+
actorName: { type: 'string' },
|
|
251
|
+
childActor: { type: 'string', description: 'Name of the child actor (alias for actorName in detach, or specific child for attach).' },
|
|
252
|
+
parentActor: { type: 'string' },
|
|
253
|
+
classPath: { type: 'string' },
|
|
254
|
+
meshPath: { type: 'string' },
|
|
255
|
+
blueprintPath: { type: 'string' },
|
|
256
|
+
location: commonSchemas.location,
|
|
257
|
+
rotation: commonSchemas.rotation,
|
|
258
|
+
scale: commonSchemas.scale,
|
|
259
|
+
force: commonSchemas.vector3,
|
|
260
|
+
componentType: { type: 'string' },
|
|
261
|
+
componentName: { type: 'string' },
|
|
262
|
+
properties: { type: 'object' },
|
|
263
|
+
visible: { type: 'boolean' },
|
|
264
|
+
newName: { type: 'string' },
|
|
265
|
+
tag: { type: 'string' },
|
|
266
|
+
variables: { type: 'object' },
|
|
267
|
+
snapshotName: { type: 'string' }
|
|
172
268
|
},
|
|
173
269
|
required: ['action']
|
|
174
270
|
},
|
|
175
271
|
outputSchema: {
|
|
176
272
|
type: 'object',
|
|
177
273
|
properties: {
|
|
178
|
-
success: { type: 'boolean'
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
274
|
+
success: { type: 'boolean' },
|
|
275
|
+
actor: { type: 'string' },
|
|
276
|
+
actorPath: { type: 'string' },
|
|
277
|
+
message: { type: 'string' },
|
|
278
|
+
components: {
|
|
279
|
+
type: 'array',
|
|
280
|
+
items: {
|
|
281
|
+
type: 'object',
|
|
282
|
+
properties: {
|
|
283
|
+
name: { type: 'string' },
|
|
284
|
+
class: { type: 'string' },
|
|
285
|
+
relativeLocation: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
|
|
286
|
+
relativeRotation: { type: 'object', properties: { pitch: { type: 'number' }, yaw: { type: 'number' }, roll: { type: 'number' } } },
|
|
287
|
+
relativeScale: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
|
|
288
|
+
}
|
|
289
|
+
}
|
|
189
290
|
},
|
|
190
|
-
|
|
191
|
-
message: { type: 'string', description: 'Status message' }
|
|
291
|
+
data: { type: 'object' }
|
|
192
292
|
}
|
|
193
293
|
}
|
|
194
294
|
},
|
|
195
295
|
|
|
196
|
-
// 4.
|
|
296
|
+
// 4. EDITOR CONTROL
|
|
197
297
|
{
|
|
198
|
-
name: '
|
|
199
|
-
|
|
298
|
+
name: 'control_editor',
|
|
299
|
+
description: `Editor session control.
|
|
200
300
|
|
|
201
301
|
Use it when you need to:
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
302
|
+
- control PIE (Play In Editor).
|
|
303
|
+
- move the viewport camera.
|
|
304
|
+
- execute console commands (legacy).
|
|
305
|
+
- take screenshots/bookmarks.
|
|
306
|
+
- simulate input (UI).
|
|
206
307
|
|
|
207
|
-
Supported actions:
|
|
308
|
+
Supported actions: play, stop, stop_pie, pause, resume, set_game_speed, eject, possess, set_camera, set_camera_position, set_camera_fov, set_view_mode, set_viewport_resolution, console_command, screenshot, step_frame, start_recording, stop_recording, create_bookmark, jump_to_bookmark, set_preferences, set_viewport_realtime, open_asset, simulate_input.`,
|
|
208
309
|
inputSchema: {
|
|
209
310
|
type: 'object',
|
|
210
311
|
properties: {
|
|
211
|
-
action: {
|
|
212
|
-
type: 'string',
|
|
213
|
-
enum: ['load', 'save', 'stream', 'create_light', 'build_lighting'],
|
|
214
|
-
description: 'Level action'
|
|
215
|
-
},
|
|
216
|
-
// Level
|
|
217
|
-
levelPath: { type: 'string', description: 'Full content path to level asset (e.g., "/Game/Maps/MyLevel"). Required for load action.' },
|
|
218
|
-
levelName: { type: 'string', description: 'Level name for streaming operations. Required for stream action.' },
|
|
219
|
-
streaming: { type: 'boolean', description: 'Whether to use streaming load (true) or direct load (false). Optional for load action.' },
|
|
220
|
-
shouldBeLoaded: { type: 'boolean', description: 'Whether to load (true) or unload (false) the streaming level. Required for stream action.' },
|
|
221
|
-
shouldBeVisible: { type: 'boolean', description: 'Whether the streaming level should be visible after loading. Optional for stream action.' },
|
|
222
|
-
// Lighting
|
|
223
|
-
lightType: {
|
|
224
|
-
type: 'string',
|
|
225
|
-
enum: ['Directional', 'Point', 'Spot', 'Rect'],
|
|
226
|
-
description: 'Type of light to create. Directional for sun-like lighting, Point for omni-directional, Spot for cone-shaped, Rect for area lighting. Required for create_light.'
|
|
227
|
-
},
|
|
228
|
-
name: { type: 'string', description: 'Name for the spawned light actor. Optional, auto-generated if not provided.' },
|
|
229
|
-
location: {
|
|
230
|
-
type: 'object',
|
|
231
|
-
description: 'World space location for light placement in centimeters. Optional for create_light, defaults to origin.',
|
|
232
|
-
properties: {
|
|
233
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
234
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
235
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
intensity: { type: 'number', description: 'Light intensity value in lumens (for Point/Spot) or lux (for Directional). Typical range: 1000-10000. Optional for create_light.' },
|
|
239
|
-
quality: {
|
|
312
|
+
action: {
|
|
240
313
|
type: 'string',
|
|
241
|
-
enum: [
|
|
242
|
-
|
|
243
|
-
|
|
314
|
+
enum: [
|
|
315
|
+
'play', 'stop', 'stop_pie', 'pause', 'resume', 'set_game_speed', 'eject', 'possess',
|
|
316
|
+
'set_camera', 'set_camera_position', 'set_camera_fov', 'set_view_mode',
|
|
317
|
+
'set_viewport_resolution', 'console_command', 'execute_command', 'screenshot', 'step_frame',
|
|
318
|
+
'start_recording', 'stop_recording', 'create_bookmark', 'jump_to_bookmark',
|
|
319
|
+
'set_preferences', 'set_viewport_realtime', 'open_asset', 'simulate_input'
|
|
320
|
+
],
|
|
321
|
+
description: 'Editor action'
|
|
322
|
+
},
|
|
323
|
+
location: commonSchemas.location,
|
|
324
|
+
rotation: commonSchemas.rotation,
|
|
325
|
+
viewMode: { type: 'string' },
|
|
326
|
+
enabled: { type: 'boolean', description: 'For set_viewport_realtime.' },
|
|
327
|
+
speed: { type: 'number' },
|
|
328
|
+
filename: { type: 'string' },
|
|
329
|
+
fov: { type: 'number' },
|
|
330
|
+
width: { type: 'number' },
|
|
331
|
+
height: { type: 'number' },
|
|
332
|
+
command: { type: 'string' },
|
|
333
|
+
steps: { type: 'integer' },
|
|
334
|
+
bookmarkName: { type: 'string' },
|
|
335
|
+
assetPath: { type: 'string' },
|
|
336
|
+
// Simulate Input
|
|
337
|
+
keyName: { type: 'string' },
|
|
338
|
+
eventType: { type: 'string', enum: ['KeyDown', 'KeyUp', 'Both'] }
|
|
244
339
|
},
|
|
245
340
|
required: ['action']
|
|
246
341
|
},
|
|
247
342
|
outputSchema: {
|
|
248
343
|
type: 'object',
|
|
249
344
|
properties: {
|
|
250
|
-
success: { type: 'boolean'
|
|
251
|
-
|
|
252
|
-
loaded: { type: 'boolean', description: 'Level loaded state' },
|
|
253
|
-
visible: { type: 'boolean', description: 'Level visibility' },
|
|
254
|
-
lightName: { type: 'string', description: 'Created light name' },
|
|
255
|
-
buildQuality: { type: 'string', description: 'Lighting build quality used' },
|
|
256
|
-
message: { type: 'string', description: 'Status message' }
|
|
345
|
+
success: { type: 'boolean' },
|
|
346
|
+
message: { type: 'string' }
|
|
257
347
|
}
|
|
258
348
|
}
|
|
259
349
|
},
|
|
260
350
|
|
|
261
|
-
// 5.
|
|
351
|
+
// 5. LEVEL MANAGER
|
|
262
352
|
{
|
|
263
|
-
name: '
|
|
264
|
-
|
|
353
|
+
name: 'manage_level',
|
|
354
|
+
description: `Level and World Partition management.
|
|
265
355
|
|
|
266
356
|
Use it when you need to:
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
-
|
|
357
|
+
- load/save levels.
|
|
358
|
+
- manage streaming levels.
|
|
359
|
+
- build lighting.
|
|
360
|
+
- load world partition cells or toggle data layers.
|
|
270
361
|
|
|
271
|
-
Supported actions:
|
|
362
|
+
Supported actions: load, save, stream, create_level, create_light, build_lighting, set_metadata, load_cells, set_datalayer, export_level, import_level, list_levels, get_summary, delete, validate_level.`,
|
|
272
363
|
inputSchema: {
|
|
273
364
|
type: 'object',
|
|
274
365
|
properties: {
|
|
275
|
-
action: {
|
|
276
|
-
type: 'string',
|
|
277
|
-
enum: [
|
|
278
|
-
|
|
366
|
+
action: {
|
|
367
|
+
type: 'string',
|
|
368
|
+
enum: [
|
|
369
|
+
'load', 'save', 'save_as', 'save_level_as', 'stream', 'create_level', 'create_light', 'build_lighting',
|
|
370
|
+
'set_metadata', 'load_cells', 'set_datalayer',
|
|
371
|
+
'export_level', 'import_level', 'list_levels', 'get_summary', 'delete', 'validate_level',
|
|
372
|
+
'cleanup_invalid_datalayers', 'add_sublevel'
|
|
373
|
+
],
|
|
374
|
+
description: 'Action'
|
|
279
375
|
},
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
376
|
+
levelPath: { type: 'string', description: 'Required for load/save actions and get_summary.' },
|
|
377
|
+
levelName: { type: 'string' },
|
|
378
|
+
streaming: { type: 'boolean' },
|
|
379
|
+
shouldBeLoaded: { type: 'boolean' },
|
|
380
|
+
shouldBeVisible: { type: 'boolean' },
|
|
381
|
+
// Lighting
|
|
382
|
+
lightType: { type: 'string', enum: ['Directional', 'Point', 'Spot', 'Rect'] },
|
|
383
|
+
location: commonSchemas.location,
|
|
384
|
+
intensity: { type: 'number' },
|
|
385
|
+
quality: { type: 'string' },
|
|
386
|
+
// World Partition
|
|
387
|
+
min: { type: 'array', items: { type: 'number' } },
|
|
388
|
+
max: { type: 'array', items: { type: 'number' } },
|
|
389
|
+
dataLayerLabel: { type: 'string' },
|
|
390
|
+
dataLayerState: { type: 'string' },
|
|
391
|
+
recursive: { type: 'boolean' },
|
|
392
|
+
// Export/Import
|
|
393
|
+
exportPath: { type: 'string' },
|
|
394
|
+
packagePath: { type: 'string' },
|
|
395
|
+
destinationPath: { type: 'string' },
|
|
396
|
+
note: { type: 'string' },
|
|
397
|
+
// Delete
|
|
398
|
+
levelPaths: { type: 'array', items: { type: 'string' } },
|
|
399
|
+
// Sublevel
|
|
400
|
+
subLevelPath: { type: 'string' },
|
|
401
|
+
parentLevel: { type: 'string' },
|
|
402
|
+
streamingMethod: { type: 'string', enum: ['Blueprint', 'AlwaysLoaded'] }
|
|
292
403
|
},
|
|
293
404
|
required: ['action']
|
|
294
405
|
},
|
|
295
406
|
outputSchema: {
|
|
296
407
|
type: 'object',
|
|
297
408
|
properties: {
|
|
298
|
-
success: { type: 'boolean'
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
playRate: { type: 'number', description: 'Current play rate' },
|
|
302
|
-
ragdollActive: { type: 'boolean', description: 'Ragdoll activation state' },
|
|
303
|
-
message: { type: 'string', description: 'Status message' }
|
|
409
|
+
success: { type: 'boolean' },
|
|
410
|
+
message: { type: 'string' },
|
|
411
|
+
data: { type: 'object' }
|
|
304
412
|
}
|
|
305
413
|
}
|
|
306
414
|
},
|
|
307
415
|
|
|
308
|
-
// 6.
|
|
416
|
+
// 6. ANIMATION & PHYSICS
|
|
309
417
|
{
|
|
310
|
-
name: '
|
|
311
|
-
|
|
418
|
+
name: 'animation_physics',
|
|
419
|
+
description: `Animation and Physics tools.
|
|
312
420
|
|
|
313
421
|
Use it when you need to:
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
422
|
+
- create Animation Blueprints, Montages, or Blend Spaces.
|
|
423
|
+
- setup Ragdolls or Physics Assets.
|
|
424
|
+
- configure vehicles.
|
|
317
425
|
|
|
318
|
-
Supported actions:
|
|
426
|
+
Supported actions: create_animation_bp, play_montage, setup_ragdoll, configure_vehicle, create_blend_space, create_state_machine, setup_ik, create_procedural_anim, create_blend_tree, setup_retargeting, setup_physics_simulation, cleanup.`,
|
|
319
427
|
inputSchema: {
|
|
320
428
|
type: 'object',
|
|
321
429
|
properties: {
|
|
322
|
-
action: {
|
|
323
|
-
type: 'string',
|
|
324
|
-
enum: ['particle', 'niagara', 'debug_shape'],
|
|
325
|
-
description: 'Effect type'
|
|
326
|
-
},
|
|
327
|
-
// Common
|
|
328
|
-
name: { type: 'string', description: 'Name for the spawned effect actor. Optional, auto-generated if not provided.' },
|
|
329
|
-
location: {
|
|
330
|
-
type: 'object',
|
|
331
|
-
description: 'World space location where effect will be spawned in centimeters. Optional, defaults to origin.',
|
|
332
|
-
properties: {
|
|
333
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
334
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
335
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
// Particles
|
|
339
|
-
effectType: {
|
|
340
|
-
type: 'string',
|
|
341
|
-
description: 'Preset particle effect type (Fire, Smoke, Water, Explosion, etc.). Used for particle action to spawn common effects.'
|
|
342
|
-
},
|
|
343
|
-
systemPath: { type: 'string', description: 'Content path to Niagara system asset (e.g., "/Game/Effects/MyNiagaraSystem"). Required for niagara action.' },
|
|
344
|
-
scale: { type: 'number', description: 'Uniform scale multiplier for Niagara effect. 1.0 is normal size. Optional, defaults to 1.0.' },
|
|
345
|
-
// Debug
|
|
346
|
-
shape: {
|
|
430
|
+
action: {
|
|
347
431
|
type: 'string',
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
description: '
|
|
432
|
+
enum: [
|
|
433
|
+
'create_animation_bp', 'play_montage', 'setup_ragdoll', 'activate_ragdoll', 'configure_vehicle',
|
|
434
|
+
'create_blend_space', 'create_state_machine', 'setup_ik', 'create_procedural_anim',
|
|
435
|
+
'create_blend_tree', 'setup_retargeting', 'setup_physics_simulation', 'cleanup',
|
|
436
|
+
'create_animation_asset', 'add_notify'
|
|
437
|
+
],
|
|
438
|
+
description: 'Action'
|
|
355
439
|
},
|
|
356
|
-
|
|
440
|
+
name: { type: 'string' },
|
|
441
|
+
actorName: { type: 'string' },
|
|
442
|
+
skeletonPath: { type: 'string' },
|
|
443
|
+
montagePath: { type: 'string' },
|
|
444
|
+
animationPath: { type: 'string' },
|
|
445
|
+
playRate: { type: 'number' },
|
|
446
|
+
physicsAssetName: { type: 'string' },
|
|
447
|
+
meshPath: { type: 'string' },
|
|
448
|
+
vehicleName: { type: 'string' },
|
|
449
|
+
vehicleType: { type: 'string' },
|
|
450
|
+
// ... (omitting detailed vehicle/IK schema for brevity, keeping core structure)
|
|
451
|
+
savePath: { type: 'string' }
|
|
357
452
|
},
|
|
358
453
|
required: ['action']
|
|
359
454
|
},
|
|
360
455
|
outputSchema: {
|
|
361
456
|
type: 'object',
|
|
362
457
|
properties: {
|
|
363
|
-
success: { type: 'boolean'
|
|
364
|
-
|
|
365
|
-
effectPath: { type: 'string', description: 'Effect asset path' },
|
|
366
|
-
spawned: { type: 'boolean', description: 'Whether effect was spawned in level' },
|
|
367
|
-
location: {
|
|
368
|
-
type: 'array',
|
|
369
|
-
items: { type: 'number' },
|
|
370
|
-
description: 'Effect location [x, y, z]'
|
|
371
|
-
},
|
|
372
|
-
message: { type: 'string', description: 'Status message' }
|
|
458
|
+
success: { type: 'boolean' },
|
|
459
|
+
message: { type: 'string' }
|
|
373
460
|
}
|
|
374
461
|
}
|
|
375
462
|
},
|
|
376
463
|
|
|
377
|
-
// 7.
|
|
464
|
+
// 7. EFFECTS MANAGER (Niagara & Particles)
|
|
378
465
|
{
|
|
379
|
-
name: '
|
|
380
|
-
|
|
466
|
+
name: 'manage_effect',
|
|
467
|
+
description: `Effects management (Niagara, Particles, Debug Shapes).
|
|
381
468
|
|
|
382
469
|
Use it when you need to:
|
|
383
|
-
-
|
|
384
|
-
-
|
|
470
|
+
- spawn effects or debug shapes.
|
|
471
|
+
- create/edit Niagara systems and emitters.
|
|
472
|
+
- edit Niagara graphs (modules, pins).
|
|
385
473
|
|
|
386
|
-
Supported actions:
|
|
474
|
+
Supported actions:
|
|
475
|
+
- Spawning: particle, niagara, debug_shape, spawn_niagara, create_dynamic_light.
|
|
476
|
+
- Asset Creation: create_niagara_system, create_niagara_emitter.
|
|
477
|
+
- Graph: add_niagara_module, connect_niagara_pins, remove_niagara_node, set_niagara_parameter.
|
|
478
|
+
- Utils: clear_debug_shapes, cleanup.`,
|
|
387
479
|
inputSchema: {
|
|
388
480
|
type: 'object',
|
|
389
481
|
properties: {
|
|
390
|
-
action: {
|
|
391
|
-
type: 'string',
|
|
392
|
-
enum: ['create', 'add_component'],
|
|
393
|
-
description: 'Blueprint action'
|
|
394
|
-
},
|
|
395
|
-
name: { type: 'string', description: 'Name for the blueprint asset. Required for create action. For add_component, this is the blueprint asset name or path.' },
|
|
396
|
-
blueprintType: {
|
|
482
|
+
action: {
|
|
397
483
|
type: 'string',
|
|
398
|
-
|
|
484
|
+
enum: [
|
|
485
|
+
'particle', 'niagara', 'debug_shape', 'spawn_niagara', 'create_dynamic_light',
|
|
486
|
+
'create_niagara_system', 'create_niagara_emitter',
|
|
487
|
+
'create_volumetric_fog', 'create_particle_trail', 'create_environment_effect', 'create_impact_effect', 'create_niagara_ribbon',
|
|
488
|
+
'activate', 'activate_effect', 'deactivate', 'reset', 'advance_simulation',
|
|
489
|
+
'add_niagara_module', 'connect_niagara_pins', 'remove_niagara_node', 'set_niagara_parameter',
|
|
490
|
+
'clear_debug_shapes', 'cleanup'
|
|
491
|
+
],
|
|
492
|
+
description: 'Action'
|
|
399
493
|
},
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
494
|
+
name: { type: 'string' },
|
|
495
|
+
systemName: { type: 'string' },
|
|
496
|
+
systemPath: { type: 'string', description: 'Required for spawning Niagara effects (spawn_niagara, create_volumetric_fog, etc) and most graph operations.' },
|
|
497
|
+
preset: { type: 'string', description: 'Required for particle action. Path to particle system asset.' },
|
|
498
|
+
location: commonSchemas.location,
|
|
499
|
+
scale: { type: 'number' },
|
|
500
|
+
shape: { type: 'string', description: 'Supported: sphere, box, cylinder, line, cone, capsule, arrow, plane' },
|
|
501
|
+
size: { type: 'number' },
|
|
502
|
+
color: { type: 'array', items: { type: 'number' } },
|
|
503
|
+
// Graph
|
|
504
|
+
modulePath: { type: 'string' },
|
|
505
|
+
emitterName: { type: 'string' },
|
|
506
|
+
pinName: { type: 'string' },
|
|
507
|
+
linkedTo: { type: 'string' },
|
|
508
|
+
parameterName: { type: 'string' },
|
|
509
|
+
parameterType: { type: 'string', description: 'Float, Vector, Color, Bool, etc.' },
|
|
510
|
+
type: { type: 'string', description: 'Alias for parameterType' },
|
|
511
|
+
value: { description: 'Value.' },
|
|
512
|
+
// Cleanup
|
|
513
|
+
filter: { type: 'string', description: 'Filter for cleanup action. Required.' }
|
|
403
514
|
},
|
|
404
|
-
required: ['action'
|
|
515
|
+
required: ['action']
|
|
405
516
|
},
|
|
406
517
|
outputSchema: {
|
|
407
518
|
type: 'object',
|
|
408
519
|
properties: {
|
|
409
|
-
success: { type: 'boolean'
|
|
410
|
-
|
|
411
|
-
componentAdded: { type: 'string', description: 'Added component name' },
|
|
412
|
-
message: { type: 'string', description: 'Status message' },
|
|
413
|
-
warning: { type: 'string', description: 'Warning if manual steps needed' }
|
|
520
|
+
success: { type: 'boolean' },
|
|
521
|
+
message: { type: 'string' }
|
|
414
522
|
}
|
|
415
523
|
}
|
|
416
524
|
},
|
|
417
525
|
|
|
418
|
-
// 8. ENVIRONMENT BUILDER
|
|
526
|
+
// 8. ENVIRONMENT BUILDER
|
|
419
527
|
{
|
|
420
528
|
name: 'build_environment',
|
|
421
|
-
|
|
529
|
+
description: `Environment creation (Landscape, Foliage).
|
|
422
530
|
|
|
423
531
|
Use it when you need to:
|
|
424
|
-
- create
|
|
425
|
-
-
|
|
426
|
-
-
|
|
427
|
-
- spawn explicit foliage instances at transforms.
|
|
532
|
+
- create/sculpt landscapes.
|
|
533
|
+
- paint foliage.
|
|
534
|
+
- procedural generation.
|
|
428
535
|
|
|
429
|
-
Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances,
|
|
536
|
+
Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances, get_foliage_instances, remove_foliage.`,
|
|
430
537
|
inputSchema: {
|
|
431
538
|
type: 'object',
|
|
432
539
|
properties: {
|
|
433
|
-
action: {
|
|
434
|
-
type: 'string',
|
|
435
|
-
enum: [
|
|
436
|
-
|
|
540
|
+
action: {
|
|
541
|
+
type: 'string',
|
|
542
|
+
enum: [
|
|
543
|
+
'create_landscape', 'sculpt', 'sculpt_landscape', 'add_foliage', 'paint_foliage',
|
|
544
|
+
'create_procedural_terrain', 'create_procedural_foliage', 'add_foliage_instances',
|
|
545
|
+
'get_foliage_instances', 'remove_foliage', 'paint_landscape', 'paint_landscape_layer',
|
|
546
|
+
'modify_heightmap', 'set_landscape_material', 'create_landscape_grass_type',
|
|
547
|
+
'generate_lods', 'bake_lightmap', 'export_snapshot', 'import_snapshot', 'delete'
|
|
548
|
+
],
|
|
549
|
+
description: 'Action'
|
|
437
550
|
},
|
|
438
551
|
// Common
|
|
439
|
-
name: { type: 'string', description: 'Name
|
|
552
|
+
name: { type: 'string', description: 'Name of landscape, foliage type, or procedural volume.' },
|
|
553
|
+
landscapeName: { type: 'string' },
|
|
554
|
+
heightData: { type: 'array', items: { type: 'number' } },
|
|
555
|
+
minX: { type: 'number' },
|
|
556
|
+
minY: { type: 'number' },
|
|
557
|
+
maxX: { type: 'number' },
|
|
558
|
+
maxY: { type: 'number' },
|
|
559
|
+
updateNormals: { type: 'boolean' },
|
|
560
|
+
location: commonSchemas.location,
|
|
561
|
+
rotation: commonSchemas.rotation,
|
|
562
|
+
scale: commonSchemas.scale,
|
|
563
|
+
|
|
440
564
|
// Landscape
|
|
441
|
-
sizeX: { type: 'number'
|
|
442
|
-
sizeY: { type: 'number'
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
},
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
},
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
},
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
properties: {
|
|
469
|
-
meshPath: { type: 'string' },
|
|
470
|
-
density: { type: 'number' },
|
|
471
|
-
minScale: { type: 'number' },
|
|
472
|
-
maxScale: { type: 'number' },
|
|
473
|
-
alignToNormal: { type: 'boolean' },
|
|
474
|
-
randomYaw: { type: 'boolean' }
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
},
|
|
478
|
-
seed: { type: 'number' },
|
|
479
|
-
// Advanced: direct foliage instances
|
|
480
|
-
foliageType: { type: 'string' },
|
|
565
|
+
sizeX: { type: 'number' },
|
|
566
|
+
sizeY: { type: 'number' },
|
|
567
|
+
sectionSize: { type: 'number' },
|
|
568
|
+
sectionsPerComponent: { type: 'number' },
|
|
569
|
+
componentCount: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' } } },
|
|
570
|
+
materialPath: { type: 'string' },
|
|
571
|
+
|
|
572
|
+
// Sculpt/Paint
|
|
573
|
+
tool: { type: 'string' },
|
|
574
|
+
radius: { type: 'number' },
|
|
575
|
+
strength: { type: 'number' },
|
|
576
|
+
falloff: { type: 'number' },
|
|
577
|
+
brushSize: { type: 'number' },
|
|
578
|
+
layerName: { type: 'string', description: 'Required for paint_landscape.' },
|
|
579
|
+
eraseMode: { type: 'boolean' },
|
|
580
|
+
|
|
581
|
+
// Foliage
|
|
582
|
+
foliageType: { type: 'string', description: 'Required for add_foliage_instances, paint_foliage.' },
|
|
583
|
+
foliageTypePath: { type: 'string' },
|
|
584
|
+
meshPath: { type: 'string' },
|
|
585
|
+
density: { type: 'number' },
|
|
586
|
+
minScale: { type: 'number' },
|
|
587
|
+
maxScale: { type: 'number' },
|
|
588
|
+
cullDistance: { type: 'number' },
|
|
589
|
+
alignToNormal: { type: 'boolean' },
|
|
590
|
+
randomYaw: { type: 'boolean' },
|
|
591
|
+
locations: { type: 'array', items: commonSchemas.location },
|
|
481
592
|
transforms: {
|
|
482
593
|
type: 'array',
|
|
483
594
|
items: {
|
|
484
595
|
type: 'object',
|
|
485
596
|
properties: {
|
|
486
|
-
location:
|
|
487
|
-
rotation:
|
|
488
|
-
scale:
|
|
597
|
+
location: commonSchemas.location,
|
|
598
|
+
rotation: commonSchemas.rotation,
|
|
599
|
+
scale: commonSchemas.scale
|
|
489
600
|
}
|
|
490
601
|
}
|
|
491
602
|
},
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
},
|
|
505
|
-
brushSize: { type: 'number', description: 'Radius of foliage paint brush in centimeters. Typical range: 500-5000. Required for paint_foliage action.' },
|
|
506
|
-
strength: { type: 'number', description: 'Paint tool strength/intensity (0.0 to 1.0). Higher values place more instances. Optional for paint_foliage, defaults to 0.5.' }
|
|
603
|
+
position: commonSchemas.location,
|
|
604
|
+
|
|
605
|
+
// Procedural
|
|
606
|
+
bounds: { type: 'object' },
|
|
607
|
+
volumeName: { type: 'string' },
|
|
608
|
+
seed: { type: 'number' },
|
|
609
|
+
foliageTypes: { type: 'array', items: { type: 'object' } },
|
|
610
|
+
|
|
611
|
+
// General
|
|
612
|
+
path: { type: 'string' },
|
|
613
|
+
filename: { type: 'string' },
|
|
614
|
+
assetPaths: { type: 'array', items: { type: 'string' } }
|
|
507
615
|
},
|
|
508
616
|
required: ['action']
|
|
509
617
|
},
|
|
510
618
|
outputSchema: {
|
|
511
619
|
type: 'object',
|
|
512
620
|
properties: {
|
|
513
|
-
success: { type: 'boolean'
|
|
514
|
-
|
|
515
|
-
foliageTypeName: { type: 'string', description: 'Foliage type name' },
|
|
516
|
-
instancesPlaced: { type: 'number', description: 'Number of foliage instances placed' },
|
|
517
|
-
message: { type: 'string', description: 'Status message' }
|
|
621
|
+
success: { type: 'boolean' },
|
|
622
|
+
message: { type: 'string' }
|
|
518
623
|
}
|
|
519
624
|
}
|
|
520
625
|
},
|
|
521
626
|
|
|
522
|
-
// 9.
|
|
627
|
+
// 9. SYSTEM CONTROL
|
|
523
628
|
{
|
|
524
629
|
name: 'system_control',
|
|
525
|
-
|
|
630
|
+
description: `System-level control.
|
|
526
631
|
|
|
527
632
|
Use it when you need to:
|
|
528
|
-
-
|
|
529
|
-
-
|
|
530
|
-
-
|
|
531
|
-
-
|
|
532
|
-
-
|
|
633
|
+
- profiling & performance (stat commands).
|
|
634
|
+
- quality settings.
|
|
635
|
+
- run external tools (UBT, Tests).
|
|
636
|
+
- manage logs/insights.
|
|
637
|
+
- execute arbitrary console commands.
|
|
638
|
+
- set/get CVars and project settings.
|
|
639
|
+
- validate assets.
|
|
533
640
|
|
|
534
|
-
Supported actions:
|
|
641
|
+
Supported actions:
|
|
642
|
+
- Core: profile, show_fps, set_quality, screenshot, set_resolution, set_fullscreen, execute_command, console_command.
|
|
643
|
+
- CVars: set_cvar.
|
|
644
|
+
- Settings: get_project_settings, validate_assets.
|
|
645
|
+
- Pipeline: run_ubt, run_tests.
|
|
646
|
+
- Debug/Logs: subscribe, spawn_category, start_session.
|
|
647
|
+
- Render: lumen_update_scene.
|
|
648
|
+
- UI: play_sound, create_widget, show_widget.`,
|
|
535
649
|
inputSchema: {
|
|
536
650
|
type: 'object',
|
|
537
651
|
properties: {
|
|
538
|
-
action: {
|
|
539
|
-
type: 'string',
|
|
540
|
-
enum: ['profile', 'show_fps', 'set_quality', 'play_sound', 'create_widget', 'show_widget', 'screenshot', 'engine_start', 'engine_quit', 'read_log'],
|
|
541
|
-
description: 'System action'
|
|
542
|
-
},
|
|
543
|
-
// Performance
|
|
544
|
-
profileType: {
|
|
652
|
+
action: {
|
|
545
653
|
type: 'string',
|
|
546
|
-
|
|
654
|
+
enum: [
|
|
655
|
+
'profile', 'show_fps', 'set_quality', 'screenshot', 'set_resolution', 'set_fullscreen', 'execute_command', 'console_command',
|
|
656
|
+
'run_ubt', 'run_tests', 'subscribe', 'unsubscribe', 'spawn_category', 'start_session', 'lumen_update_scene',
|
|
657
|
+
'play_sound', 'create_widget', 'show_widget', 'add_widget_child',
|
|
658
|
+
// Added missing actions
|
|
659
|
+
'set_cvar', 'get_project_settings', 'validate_assets',
|
|
660
|
+
'set_project_setting'
|
|
661
|
+
],
|
|
662
|
+
description: 'Action'
|
|
547
663
|
},
|
|
548
|
-
|
|
664
|
+
// Profile/Quality
|
|
665
|
+
profileType: { type: 'string' },
|
|
666
|
+
category: { type: 'string' },
|
|
667
|
+
level: { type: 'number' },
|
|
668
|
+
enabled: { type: 'boolean' },
|
|
669
|
+
resolution: { type: 'string', description: 'Resolution string (e.g. "1920x1080").' },
|
|
670
|
+
|
|
671
|
+
// Commands
|
|
672
|
+
command: { type: 'string' },
|
|
673
|
+
|
|
674
|
+
// UBT
|
|
675
|
+
target: { type: 'string' },
|
|
676
|
+
platform: { type: 'string' },
|
|
677
|
+
configuration: { type: 'string' },
|
|
678
|
+
arguments: { type: 'string' },
|
|
679
|
+
|
|
680
|
+
// Tests
|
|
681
|
+
filter: { type: 'string' },
|
|
682
|
+
|
|
683
|
+
// Insights
|
|
684
|
+
channels: { type: 'string' },
|
|
685
|
+
|
|
686
|
+
// UI Widget Management
|
|
687
|
+
widgetPath: { type: 'string', description: 'Path to the widget blueprint (for add_widget_child).' },
|
|
688
|
+
childClass: { type: 'string', description: 'Class of the child widget to add (e.g. /Script/UMG.Button).' },
|
|
689
|
+
parentName: { type: 'string', description: 'Name of the parent widget to add to (optional).' },
|
|
690
|
+
|
|
691
|
+
// Project Settings
|
|
692
|
+
section: { type: 'string', description: 'Config section (e.g. /Script/EngineSettings.GeneralProjectSettings).' },
|
|
693
|
+
key: { type: 'string', description: 'Config key (e.g. ProjectID).' },
|
|
694
|
+
value: { type: 'string', description: 'Config value.' },
|
|
695
|
+
configName: { type: 'string', description: 'Config file name (Game, Engine, Input, etc.). Defaults to Game.' }
|
|
696
|
+
},
|
|
697
|
+
required: ['action']
|
|
698
|
+
},
|
|
699
|
+
outputSchema: {
|
|
700
|
+
type: 'object',
|
|
701
|
+
properties: {
|
|
702
|
+
success: { type: 'boolean' },
|
|
703
|
+
message: { type: 'string' },
|
|
704
|
+
output: { type: 'string' }
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
|
|
709
|
+
// 10. SEQUENCER
|
|
710
|
+
{
|
|
711
|
+
name: 'manage_sequence',
|
|
712
|
+
description: `Sequencer (Cinematics) management.
|
|
713
|
+
|
|
714
|
+
Use it when you need to:
|
|
715
|
+
- create/edit level sequences.
|
|
716
|
+
- add tracks (camera, actors, audio, events).
|
|
717
|
+
- keyframe properties.
|
|
718
|
+
- manage sequence playback and settings.
|
|
719
|
+
|
|
720
|
+
Supported actions:
|
|
721
|
+
- Lifecycle: create, open, duplicate, rename, delete, list.
|
|
722
|
+
- Bindings: add_camera, add_actor, add_actors, remove_actors, get_bindings, add_spawnable_from_class.
|
|
723
|
+
- Playback: play, pause, stop, set_playback_speed.
|
|
724
|
+
- Keyframes: add_keyframe.
|
|
725
|
+
- Properties: get_properties, set_properties, get_metadata, set_metadata.
|
|
726
|
+
- Tracks: add_track, add_section, list_tracks, remove_track, set_track_muted, set_track_solo, set_track_locked.
|
|
727
|
+
- Settings: set_display_rate, set_tick_resolution, set_work_range, set_view_range.`,
|
|
728
|
+
inputSchema: {
|
|
729
|
+
type: 'object',
|
|
730
|
+
properties: {
|
|
731
|
+
action: {
|
|
549
732
|
type: 'string',
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
description: '
|
|
560
|
-
properties: {
|
|
561
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
562
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
563
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
564
|
-
}
|
|
733
|
+
enum: [
|
|
734
|
+
'create', 'open', 'add_camera', 'add_actor', 'add_actors', 'remove_actors',
|
|
735
|
+
'get_bindings', 'play', 'pause', 'stop', 'set_playback_speed', 'add_keyframe',
|
|
736
|
+
// Added missing sequence actions
|
|
737
|
+
'get_properties', 'set_properties', 'duplicate', 'rename', 'delete', 'list', 'get_metadata', 'set_metadata',
|
|
738
|
+
'add_spawnable_from_class', 'add_track', 'add_section', 'set_display_rate', 'set_tick_resolution',
|
|
739
|
+
'set_work_range', 'set_view_range', 'set_track_muted', 'set_track_solo', 'set_track_locked',
|
|
740
|
+
'list_tracks', 'remove_track'
|
|
741
|
+
],
|
|
742
|
+
description: 'Action'
|
|
565
743
|
},
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
744
|
+
name: { type: 'string', description: 'Sequence name for creation.' },
|
|
745
|
+
path: { type: 'string', description: 'Sequence asset path.' },
|
|
746
|
+
actorName: { type: 'string', description: 'Actor name for binding.' },
|
|
747
|
+
actorNames: { type: 'array', items: { type: 'string' }, description: 'Multiple actor names.' },
|
|
748
|
+
frame: { type: 'number', description: 'Frame number for keyframes.' },
|
|
749
|
+
value: { type: 'object', description: 'Value for keyframes.' },
|
|
750
|
+
property: { type: 'string', description: 'Property name for keyframes.' },
|
|
751
|
+
// Duplicate/Rename
|
|
752
|
+
destinationPath: { type: 'string', description: 'Destination path for duplicate.' },
|
|
753
|
+
newName: { type: 'string', description: 'New name for rename/duplicate.' },
|
|
754
|
+
overwrite: { type: 'boolean', description: 'Overwrite existing on duplicate.' },
|
|
755
|
+
// Playback
|
|
756
|
+
speed: { type: 'number', description: 'Playback speed multiplier.' },
|
|
757
|
+
startTime: { type: 'number', description: 'Start time for playback.' },
|
|
758
|
+
loopMode: { type: 'string', description: 'Loop mode for playback.' },
|
|
759
|
+
// Spawnable
|
|
760
|
+
className: { type: 'string', description: 'Class name for spawnables.' },
|
|
761
|
+
spawnable: { type: 'boolean', description: 'Create as spawnable.' },
|
|
762
|
+
// Track management
|
|
763
|
+
trackType: { type: 'string', description: 'Track type (Animation, Transform, Audio, Event).' },
|
|
764
|
+
trackName: { type: 'string', description: 'Track name for track operations.' },
|
|
765
|
+
muted: { type: 'boolean', description: 'Mute state for set_track_muted.' },
|
|
766
|
+
solo: { type: 'boolean', description: 'Solo state for set_track_solo.' },
|
|
767
|
+
locked: { type: 'boolean', description: 'Lock state for set_track_locked.' },
|
|
768
|
+
// Section
|
|
769
|
+
assetPath: { type: 'string', description: 'Asset path for section content.' },
|
|
770
|
+
startFrame: { type: 'number', description: 'Section start frame.' },
|
|
771
|
+
endFrame: { type: 'number', description: 'Section end frame.' },
|
|
772
|
+
// Display settings
|
|
773
|
+
frameRate: { type: 'string', description: 'Display frame rate (e.g., "30fps").' },
|
|
774
|
+
resolution: { type: 'string', description: 'Tick resolution (e.g., "24000fps").' },
|
|
775
|
+
// Work/View range
|
|
776
|
+
start: { type: 'number', description: 'Range start.' },
|
|
777
|
+
end: { type: 'number', description: 'Range end.' },
|
|
778
|
+
// Properties
|
|
779
|
+
lengthInFrames: { type: 'number', description: 'Sequence length in frames.' },
|
|
780
|
+
playbackStart: { type: 'number', description: 'Playback start frame.' },
|
|
781
|
+
playbackEnd: { type: 'number', description: 'Playback end frame.' },
|
|
782
|
+
// Metadata
|
|
783
|
+
metadata: { type: 'object', description: 'Metadata object.' }
|
|
784
|
+
},
|
|
785
|
+
required: ['action']
|
|
786
|
+
},
|
|
787
|
+
outputSchema: {
|
|
788
|
+
type: 'object',
|
|
789
|
+
properties: {
|
|
790
|
+
success: { type: 'boolean' },
|
|
791
|
+
message: { type: 'string' }
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
|
|
796
|
+
// 11. INPUT MANAGEMENT
|
|
797
|
+
{
|
|
798
|
+
name: 'manage_input',
|
|
799
|
+
description: `Enhanced Input management.
|
|
800
|
+
|
|
801
|
+
Use it when you need to:
|
|
802
|
+
- create Input Actions (IA_*)
|
|
803
|
+
- create Input Mapping Contexts (IMC_*)
|
|
804
|
+
- bind keys to actions in a mapping context.
|
|
805
|
+
|
|
806
|
+
Supported actions:
|
|
807
|
+
- create_input_action: Create a UInputAction asset.
|
|
808
|
+
- create_input_mapping_context: Create a UInputMappingContext asset.
|
|
809
|
+
- add_mapping: Add a key mapping to a context.
|
|
810
|
+
- remove_mapping: Remove a mapping from a context.`,
|
|
811
|
+
inputSchema: {
|
|
812
|
+
type: 'object',
|
|
813
|
+
properties: {
|
|
814
|
+
action: {
|
|
571
815
|
type: 'string',
|
|
572
|
-
|
|
816
|
+
enum: [
|
|
817
|
+
'create_input_action',
|
|
818
|
+
'create_input_mapping_context',
|
|
819
|
+
'add_mapping',
|
|
820
|
+
'remove_mapping'
|
|
821
|
+
],
|
|
822
|
+
description: 'Action to perform'
|
|
573
823
|
},
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
editorExe: { type: 'string', description: 'Absolute path to Unreal Editor executable (e.g., "C:/UnrealEngine/Engine/Binaries/Win64/UnrealEditor.exe"). Required for engine_start unless UE_EDITOR_EXE environment variable is set.' }
|
|
580
|
-
,
|
|
581
|
-
// Log reading
|
|
582
|
-
filter_category: { description: 'Category filter as string or array; comma-separated or array values' },
|
|
583
|
-
filter_level: { type: 'string', enum: ['Error','Warning','Log','Verbose','VeryVerbose','All'], description: 'Log level filter' },
|
|
584
|
-
lines: { type: 'number', description: 'Number of lines to read from tail' },
|
|
585
|
-
log_path: { type: 'string', description: 'Absolute path to a specific .log file to read' },
|
|
586
|
-
include_prefixes: { type: 'array', items: { type: 'string' }, description: 'Only include categories starting with any of these prefixes' },
|
|
587
|
-
exclude_categories: { type: 'array', items: { type: 'string' }, description: 'Categories to exclude' }
|
|
824
|
+
name: { type: 'string', description: 'Name of the asset (for creation).' },
|
|
825
|
+
path: { type: 'string', description: 'Path to save the asset (e.g. /Game/Input).' },
|
|
826
|
+
contextPath: { type: 'string', description: 'Path to the Input Mapping Context.' },
|
|
827
|
+
actionPath: { type: 'string', description: 'Path to the Input Action.' },
|
|
828
|
+
key: { type: 'string', description: 'Key name (e.g. "SpaceBar", "W", "Gamepad_FaceButton_Bottom").' }
|
|
588
829
|
},
|
|
589
830
|
required: ['action']
|
|
590
831
|
},
|
|
591
832
|
outputSchema: {
|
|
592
833
|
type: 'object',
|
|
593
834
|
properties: {
|
|
594
|
-
success: { type: 'boolean'
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
835
|
+
success: { type: 'boolean' },
|
|
836
|
+
message: { type: 'string' },
|
|
837
|
+
assetPath: { type: 'string' }
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
|
|
842
|
+
// 12. INTROSPECTION (INSPECT)
|
|
843
|
+
{
|
|
844
|
+
name: 'inspect',
|
|
845
|
+
description: `Low-level object inspection and property manipulation.
|
|
846
|
+
|
|
847
|
+
Use it when you need to:
|
|
848
|
+
- read/write properties of any UObject or component.
|
|
849
|
+
- list objects/components.
|
|
850
|
+
- manage actor tags and snapshots.
|
|
851
|
+
- find objects by class or tag.
|
|
852
|
+
|
|
853
|
+
Supported actions:
|
|
854
|
+
- Object: inspect_object, inspect_class, list_objects, find_by_class, delete_object, export.
|
|
855
|
+
- Properties: get_property, set_property, get_component_property, set_component_property.
|
|
856
|
+
- Components: get_components, get_bounding_box.
|
|
857
|
+
- Tags: add_tag, find_by_tag, get_metadata.
|
|
858
|
+
- Snapshots: create_snapshot, restore_snapshot.`,
|
|
859
|
+
inputSchema: {
|
|
860
|
+
type: 'object',
|
|
861
|
+
properties: {
|
|
862
|
+
action: {
|
|
863
|
+
type: 'string',
|
|
864
|
+
enum: [
|
|
865
|
+
'inspect_object', 'set_property', 'get_property', 'get_components', 'inspect_class', 'list_objects',
|
|
866
|
+
// Added missing inspect actions
|
|
867
|
+
'get_component_property', 'set_component_property', 'get_metadata', 'add_tag', 'find_by_tag',
|
|
868
|
+
'create_snapshot', 'restore_snapshot', 'export', 'delete_object', 'find_by_class', 'get_bounding_box'
|
|
869
|
+
],
|
|
870
|
+
description: 'Action'
|
|
611
871
|
},
|
|
612
|
-
|
|
872
|
+
objectPath: { type: 'string', description: 'UObject path to inspect/modify.' },
|
|
873
|
+
propertyName: { type: 'string', description: 'Property name to get/set.' },
|
|
874
|
+
propertyPath: { type: 'string', description: 'Alternate property path parameter.' },
|
|
875
|
+
value: { description: 'Value to set.' },
|
|
876
|
+
// Actor/Component identifiers
|
|
877
|
+
actorName: { type: 'string', description: 'Actor name (required for snapshots, export, and component resolution).' },
|
|
878
|
+
name: { type: 'string', description: 'Object name (alternative to objectPath).' },
|
|
879
|
+
componentName: { type: 'string', description: 'Component name for component property access.' },
|
|
880
|
+
// Search/Filter
|
|
881
|
+
className: { type: 'string', description: 'Class name for find_by_class.' },
|
|
882
|
+
classPath: { type: 'string', description: 'Class path (alternative to className).' },
|
|
883
|
+
tag: { type: 'string', description: 'Tag for add_tag/find_by_tag.' },
|
|
884
|
+
filter: { type: 'string', description: 'Filter for list_objects.' },
|
|
885
|
+
// Snapshots
|
|
886
|
+
snapshotName: { type: 'string', description: 'Snapshot name for create/restore.' },
|
|
887
|
+
// Export
|
|
888
|
+
destinationPath: { type: 'string', description: 'Export destination path.' },
|
|
889
|
+
outputPath: { type: 'string', description: 'Alternative export path.' },
|
|
890
|
+
format: { type: 'string', description: 'Export format (e.g., JSON).' }
|
|
891
|
+
},
|
|
892
|
+
required: ['action']
|
|
893
|
+
},
|
|
894
|
+
outputSchema: {
|
|
895
|
+
type: 'object',
|
|
896
|
+
properties: {
|
|
897
|
+
success: { type: 'boolean' },
|
|
898
|
+
value: { description: 'Property value.' }
|
|
613
899
|
}
|
|
614
900
|
}
|
|
615
901
|
},
|
|
616
902
|
|
|
617
|
-
//
|
|
903
|
+
// 12. AUDIO MANAGER
|
|
618
904
|
{
|
|
619
|
-
name: '
|
|
620
|
-
|
|
905
|
+
name: 'manage_audio',
|
|
906
|
+
description: `Audio asset and component management.
|
|
907
|
+
|
|
908
|
+
Use it when you need to:
|
|
909
|
+
- create sound cues/mixes.
|
|
910
|
+
- play sounds (3D/2D).
|
|
911
|
+
- control audio components.
|
|
621
912
|
|
|
622
|
-
|
|
913
|
+
Supported actions:
|
|
914
|
+
- Assets: create_sound_cue, create_sound_mix, create_sound_class, create_reverb_zone, create_ambient_sound.
|
|
915
|
+
- Playback: play_sound_at_location, play_sound_2d, play_sound_attached, spawn_sound_at_location.
|
|
916
|
+
- Components: create_audio_component, fade_sound, fade_sound_in, fade_sound_out.
|
|
917
|
+
- Mixes: push_sound_mix, pop_sound_mix, set_sound_mix_class_override, clear_sound_mix_class_override, set_base_sound_mix.
|
|
918
|
+
- Global: enable_audio_analysis, set_doppler_effect, set_audio_occlusion, set_sound_attenuation.`,
|
|
623
919
|
inputSchema: {
|
|
624
920
|
type: 'object',
|
|
625
921
|
properties: {
|
|
626
|
-
|
|
922
|
+
action: {
|
|
923
|
+
type: 'string',
|
|
924
|
+
enum: [
|
|
925
|
+
'create_sound_cue', 'play_sound_at_location', 'play_sound_2d', 'create_audio_component',
|
|
926
|
+
'create_sound_mix', 'push_sound_mix', 'pop_sound_mix',
|
|
927
|
+
'set_sound_mix_class_override', 'clear_sound_mix_class_override', 'set_base_sound_mix',
|
|
928
|
+
'prime_sound', 'play_sound_attached', 'spawn_sound_at_location',
|
|
929
|
+
'fade_sound_in', 'fade_sound_out', 'create_ambient_sound',
|
|
930
|
+
// Added missing actions
|
|
931
|
+
'create_sound_class', 'set_sound_attenuation', 'create_reverb_zone',
|
|
932
|
+
'enable_audio_analysis', 'fade_sound', 'set_doppler_effect', 'set_audio_occlusion'
|
|
933
|
+
],
|
|
934
|
+
description: 'Action'
|
|
935
|
+
},
|
|
936
|
+
name: { type: 'string' },
|
|
937
|
+
soundPath: { type: 'string', description: 'Required for create_sound_cue, play_sound_*, create_audio_component, create_ambient_sound.' },
|
|
938
|
+
location: commonSchemas.location,
|
|
939
|
+
rotation: commonSchemas.rotation,
|
|
940
|
+
volume: { type: 'number' },
|
|
941
|
+
pitch: { type: 'number' },
|
|
942
|
+
startTime: { type: 'number' },
|
|
943
|
+
attenuationPath: { type: 'string' },
|
|
944
|
+
concurrencyPath: { type: 'string' },
|
|
945
|
+
mixName: { type: 'string' },
|
|
946
|
+
soundClassName: { type: 'string' },
|
|
947
|
+
fadeInTime: { type: 'number' },
|
|
948
|
+
fadeOutTime: { type: 'number' },
|
|
949
|
+
fadeTime: { type: 'number' },
|
|
950
|
+
targetVolume: { type: 'number' },
|
|
951
|
+
attachPointName: { type: 'string' },
|
|
952
|
+
actorName: { type: 'string' },
|
|
953
|
+
componentName: { type: 'string' },
|
|
954
|
+
// Added missing parameters
|
|
955
|
+
parentClass: { type: 'string' },
|
|
956
|
+
properties: { type: 'object' },
|
|
957
|
+
innerRadius: { type: 'number' },
|
|
958
|
+
falloffDistance: { type: 'number' },
|
|
959
|
+
attenuationShape: { type: 'string' },
|
|
960
|
+
falloffMode: { type: 'string' },
|
|
961
|
+
reverbEffect: { type: 'string' },
|
|
962
|
+
size: commonSchemas.scale,
|
|
963
|
+
fftSize: { type: 'number' },
|
|
964
|
+
outputType: { type: 'string' },
|
|
965
|
+
soundName: { type: 'string' },
|
|
966
|
+
fadeType: { type: 'string' },
|
|
967
|
+
scale: { type: 'number' },
|
|
968
|
+
lowPassFilterFrequency: { type: 'number' },
|
|
969
|
+
volumeAttenuation: { type: 'number' },
|
|
970
|
+
enabled: { type: 'boolean' }
|
|
627
971
|
},
|
|
628
|
-
required: ['
|
|
972
|
+
required: ['action']
|
|
629
973
|
},
|
|
630
974
|
outputSchema: {
|
|
631
975
|
type: 'object',
|
|
632
976
|
properties: {
|
|
633
|
-
success: { type: 'boolean'
|
|
634
|
-
|
|
635
|
-
result: { type: 'object', description: 'Command execution result' },
|
|
636
|
-
warning: { type: 'string', description: 'Warning if command may be unrecognized' },
|
|
637
|
-
info: { type: 'string', description: 'Additional information' },
|
|
638
|
-
error: { type: 'string', description: 'Error message if failed' }
|
|
977
|
+
success: { type: 'boolean' },
|
|
978
|
+
message: { type: 'string' }
|
|
639
979
|
}
|
|
640
980
|
}
|
|
641
981
|
},
|
|
642
982
|
|
|
643
|
-
//
|
|
983
|
+
// 13. BEHAVIOR TREE
|
|
644
984
|
{
|
|
645
|
-
name: '
|
|
646
|
-
|
|
985
|
+
name: 'manage_behavior_tree',
|
|
986
|
+
description: `Behavior Tree editing tool.
|
|
647
987
|
|
|
648
988
|
Use it when you need to:
|
|
649
|
-
- create
|
|
650
|
-
-
|
|
651
|
-
-
|
|
652
|
-
-
|
|
989
|
+
- create new Behavior Tree assets.
|
|
990
|
+
- add nodes (Sequence, Selector, Tasks).
|
|
991
|
+
- connect nodes.
|
|
992
|
+
- set properties.
|
|
653
993
|
|
|
654
|
-
Supported actions:
|
|
994
|
+
Supported actions: create, add_node, connect_nodes, remove_node, break_connections, set_node_properties.`,
|
|
655
995
|
inputSchema: {
|
|
656
996
|
type: 'object',
|
|
657
997
|
properties: {
|
|
658
998
|
action: {
|
|
659
999
|
type: 'string',
|
|
660
|
-
enum: ['
|
|
661
|
-
description: '
|
|
1000
|
+
enum: ['create', 'add_node', 'connect_nodes', 'remove_node', 'break_connections', 'set_node_properties'],
|
|
1001
|
+
description: 'Action'
|
|
662
1002
|
},
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
1003
|
+
// For create action
|
|
1004
|
+
name: { type: 'string', description: 'Name of the new Behavior Tree asset' },
|
|
1005
|
+
savePath: { type: 'string', description: 'Path to save the new Behavior Tree (e.g., /Game/AI)' },
|
|
1006
|
+
// Existing params
|
|
1007
|
+
assetPath: { type: 'string' },
|
|
1008
|
+
nodeType: { type: 'string' },
|
|
1009
|
+
nodeId: { type: 'string' },
|
|
1010
|
+
parentNodeId: { type: 'string' },
|
|
1011
|
+
childNodeId: { type: 'string' },
|
|
1012
|
+
x: { type: 'number' },
|
|
1013
|
+
y: { type: 'number' },
|
|
1014
|
+
comment: { type: 'string' },
|
|
1015
|
+
properties: { type: 'object' }
|
|
670
1016
|
},
|
|
671
1017
|
required: ['action']
|
|
672
1018
|
},
|
|
@@ -675,50 +1021,147 @@ Supported actions: create_preset, expose_actor, expose_property, list_fields, se
|
|
|
675
1021
|
properties: {
|
|
676
1022
|
success: { type: 'boolean' },
|
|
677
1023
|
message: { type: 'string' },
|
|
678
|
-
|
|
679
|
-
fields: { type: 'array', items: { type: 'object' } },
|
|
680
|
-
value: {},
|
|
681
|
-
error: { type: 'string' }
|
|
1024
|
+
nodeId: { type: 'string' }
|
|
682
1025
|
}
|
|
683
1026
|
}
|
|
684
1027
|
},
|
|
685
1028
|
|
|
686
|
-
//
|
|
1029
|
+
// 14. BLUEPRINT GRAPH DIRECT
|
|
687
1030
|
{
|
|
688
|
-
name: '
|
|
689
|
-
|
|
1031
|
+
name: 'manage_blueprint_graph',
|
|
1032
|
+
description: `Direct Blueprint Graph manipulation.
|
|
690
1033
|
|
|
691
1034
|
Use it when you need to:
|
|
692
|
-
-
|
|
693
|
-
-
|
|
694
|
-
-
|
|
695
|
-
-
|
|
1035
|
+
- add nodes (Function, Variable, Event, Macro).
|
|
1036
|
+
- connect/disconnect pins.
|
|
1037
|
+
- create reroute nodes.
|
|
1038
|
+
- set node properties.
|
|
1039
|
+
- get node/graph details.
|
|
696
1040
|
|
|
697
|
-
Supported actions:
|
|
1041
|
+
Supported actions: create_node, delete_node, connect_pins, break_pin_links, set_node_property, create_reroute_node, get_node_details, get_graph_details, get_pin_details.`,
|
|
698
1042
|
inputSchema: {
|
|
699
1043
|
type: 'object',
|
|
700
1044
|
properties: {
|
|
701
|
-
action: {
|
|
702
|
-
type: 'string',
|
|
1045
|
+
action: {
|
|
1046
|
+
type: 'string',
|
|
703
1047
|
enum: [
|
|
704
|
-
'
|
|
705
|
-
'
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
description: 'Sequence action'
|
|
1048
|
+
'create_node', 'delete_node', 'connect_pins', 'break_pin_links', 'set_node_property',
|
|
1049
|
+
'create_reroute_node', 'get_node_details', 'get_graph_details', 'get_pin_details'
|
|
1050
|
+
],
|
|
1051
|
+
description: 'Action'
|
|
709
1052
|
},
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
1053
|
+
blueprintPath: { type: 'string' },
|
|
1054
|
+
graphName: { type: 'string' },
|
|
1055
|
+
nodeType: { type: 'string' },
|
|
1056
|
+
nodeId: { type: 'string' },
|
|
1057
|
+
pinName: { type: 'string' },
|
|
1058
|
+
linkedTo: { type: 'string' },
|
|
1059
|
+
memberName: { type: 'string' },
|
|
1060
|
+
x: { type: 'number' },
|
|
1061
|
+
y: { type: 'number' },
|
|
1062
|
+
propertyName: { type: 'string' },
|
|
1063
|
+
value: { description: 'Value.' }
|
|
1064
|
+
},
|
|
1065
|
+
required: ['action']
|
|
1066
|
+
},
|
|
1067
|
+
outputSchema: {
|
|
1068
|
+
type: 'object',
|
|
1069
|
+
properties: {
|
|
1070
|
+
success: { type: 'boolean' },
|
|
1071
|
+
nodeId: { type: 'string' },
|
|
1072
|
+
details: { type: 'object' }
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
},
|
|
1076
|
+
|
|
1077
|
+
// 15. LIGHTING MANAGER
|
|
1078
|
+
{
|
|
1079
|
+
name: 'manage_lighting',
|
|
1080
|
+
description: `Lighting and Rendering configuration.
|
|
1081
|
+
|
|
1082
|
+
Use it when you need to:
|
|
1083
|
+
- spawn and configure lights (Directional, Point, Spot, Rect, Sky).
|
|
1084
|
+
- configure Global Illumination (Lumen, Lightmass) and Shadows.
|
|
1085
|
+
- setup Volumetric Fog and Atmosphere.
|
|
1086
|
+
- build lighting (bake).
|
|
1087
|
+
- set exposure and post-process settings.
|
|
1088
|
+
|
|
1089
|
+
Supported actions:
|
|
1090
|
+
- Spawning: spawn_light, create_light, spawn_sky_light, create_sky_light, ensure_single_sky_light, create_lightmass_volume, create_lighting_enabled_level, create_dynamic_light.
|
|
1091
|
+
- Configuration: setup_global_illumination, configure_shadows, set_exposure, set_ambient_occlusion, setup_volumetric_fog.
|
|
1092
|
+
- Building: build_lighting.`,
|
|
1093
|
+
inputSchema: {
|
|
1094
|
+
type: 'object',
|
|
1095
|
+
properties: {
|
|
1096
|
+
action: {
|
|
1097
|
+
type: 'string',
|
|
1098
|
+
enum: [
|
|
1099
|
+
'spawn_light', 'create_light', 'spawn_sky_light', 'create_sky_light', 'ensure_single_sky_light',
|
|
1100
|
+
'create_lightmass_volume', 'create_lighting_enabled_level', 'create_dynamic_light',
|
|
1101
|
+
'setup_global_illumination', 'configure_shadows', 'set_exposure', 'set_ambient_occlusion', 'setup_volumetric_fog',
|
|
1102
|
+
'build_lighting'
|
|
1103
|
+
],
|
|
1104
|
+
description: 'Action'
|
|
1105
|
+
},
|
|
1106
|
+
// Common
|
|
1107
|
+
name: { type: 'string' },
|
|
1108
|
+
location: commonSchemas.location,
|
|
1109
|
+
rotation: commonSchemas.rotation,
|
|
1110
|
+
|
|
1111
|
+
// Light Properties
|
|
1112
|
+
lightType: { type: 'string', enum: ['Directional', 'Point', 'Spot', 'Rect'] },
|
|
1113
|
+
intensity: { type: 'number' },
|
|
1114
|
+
color: { type: 'array', items: { type: 'number' } },
|
|
1115
|
+
castShadows: { type: 'boolean' },
|
|
1116
|
+
useAsAtmosphereSunLight: { type: 'boolean', description: 'For Directional Lights, use as Atmosphere Sun Light.' },
|
|
1117
|
+
temperature: { type: 'number' },
|
|
1118
|
+
radius: { type: 'number' },
|
|
1119
|
+
falloffExponent: { type: 'number' },
|
|
1120
|
+
innerCone: { type: 'number' },
|
|
1121
|
+
outerCone: { type: 'number' },
|
|
1122
|
+
width: { type: 'number' },
|
|
1123
|
+
height: { type: 'number' },
|
|
1124
|
+
|
|
1125
|
+
// Sky Light
|
|
1126
|
+
sourceType: { type: 'string', enum: ['CapturedScene', 'SpecifiedCubemap'] },
|
|
1127
|
+
cubemapPath: { type: 'string' },
|
|
1128
|
+
recapture: { type: 'boolean' },
|
|
1129
|
+
|
|
1130
|
+
// Global Illumination
|
|
1131
|
+
method: { type: 'string', enum: ['Lightmass', 'LumenGI', 'ScreenSpace', 'None'] },
|
|
1132
|
+
quality: { type: 'string' }, // 'Low' | 'Medium' | 'High' | 'Epic' | 'Preview' | 'Production'
|
|
1133
|
+
indirectLightingIntensity: { type: 'number' },
|
|
1134
|
+
bounces: { type: 'number' },
|
|
1135
|
+
|
|
1136
|
+
// Shadows
|
|
1137
|
+
shadowQuality: { type: 'string' },
|
|
1138
|
+
cascadedShadows: { type: 'boolean' },
|
|
1139
|
+
shadowDistance: { type: 'number' },
|
|
1140
|
+
contactShadows: { type: 'boolean' },
|
|
1141
|
+
rayTracedShadows: { type: 'boolean' },
|
|
1142
|
+
|
|
1143
|
+
// Exposure / Post Process
|
|
1144
|
+
compensationValue: { type: 'number' },
|
|
1145
|
+
minBrightness: { type: 'number' },
|
|
1146
|
+
maxBrightness: { type: 'number' },
|
|
1147
|
+
enabled: { type: 'boolean' },
|
|
1148
|
+
|
|
1149
|
+
// Volumetric Fog
|
|
1150
|
+
density: { type: 'number' },
|
|
1151
|
+
scatteringIntensity: { type: 'number' },
|
|
1152
|
+
fogHeight: { type: 'number' },
|
|
1153
|
+
|
|
1154
|
+
// Building
|
|
1155
|
+
buildOnlySelected: { type: 'boolean' },
|
|
1156
|
+
buildReflectionCaptures: { type: 'boolean' },
|
|
1157
|
+
|
|
1158
|
+
// Level
|
|
1159
|
+
levelName: { type: 'string' },
|
|
1160
|
+
copyActors: { type: 'boolean' },
|
|
1161
|
+
useTemplate: { type: 'boolean' },
|
|
1162
|
+
|
|
1163
|
+
// Volume
|
|
1164
|
+
size: commonSchemas.scale
|
|
722
1165
|
},
|
|
723
1166
|
required: ['action']
|
|
724
1167
|
},
|
|
@@ -726,41 +1169,77 @@ Supported actions: create, open, add_camera, add_actor, add_actors, remove_actor
|
|
|
726
1169
|
type: 'object',
|
|
727
1170
|
properties: {
|
|
728
1171
|
success: { type: 'boolean' },
|
|
729
|
-
sequencePath: { type: 'string' },
|
|
730
|
-
cameraBindingId: { type: 'string' },
|
|
731
|
-
bindings: { type: 'array', items: { type: 'object' } },
|
|
732
|
-
actorsAdded: { type: 'array', items: { type: 'string' } },
|
|
733
|
-
removedActors: { type: 'array', items: { type: 'string' } },
|
|
734
|
-
notFound: { type: 'array', items: { type: 'string' } },
|
|
735
|
-
spawnableId: { type: 'string' },
|
|
736
|
-
frameRate: { type: 'object' },
|
|
737
|
-
playbackStart: { type: 'number' },
|
|
738
|
-
playbackEnd: { type: 'number' },
|
|
739
|
-
duration: { type: 'number' },
|
|
740
|
-
playbackSpeed: { type: 'number' },
|
|
741
1172
|
message: { type: 'string' },
|
|
742
|
-
|
|
1173
|
+
actorName: { type: 'string' }
|
|
743
1174
|
}
|
|
744
1175
|
}
|
|
745
1176
|
},
|
|
746
1177
|
|
|
747
|
-
//
|
|
1178
|
+
// 16. PERFORMANCE MANAGER
|
|
748
1179
|
{
|
|
749
|
-
name: '
|
|
750
|
-
|
|
1180
|
+
name: 'manage_performance',
|
|
1181
|
+
description: `Performance profiling and optimization.
|
|
751
1182
|
|
|
752
1183
|
Use it when you need to:
|
|
753
|
-
-
|
|
754
|
-
-
|
|
1184
|
+
- profiling (CPU, GPU, Memory, RenderThread).
|
|
1185
|
+
- optimize content (LODs, texture streaming, draw calls).
|
|
1186
|
+
- benchmark the scene.
|
|
1187
|
+
- configure rendering features (Nanite, Lumen, World Partition).
|
|
755
1188
|
|
|
756
|
-
Supported actions:
|
|
1189
|
+
Supported actions:
|
|
1190
|
+
- Profiling: start_profiling, stop_profiling, run_benchmark, show_fps, show_stats, generate_memory_report.
|
|
1191
|
+
- Settings: set_scalability, set_resolution_scale, set_vsync, set_frame_rate_limit, enable_gpu_timing.
|
|
1192
|
+
- Optimization: configure_texture_streaming, configure_lod, apply_baseline_settings, optimize_draw_calls, merge_actors, configure_occlusion_culling, optimize_shaders.
|
|
1193
|
+
- Features: configure_nanite, configure_world_partition.`,
|
|
757
1194
|
inputSchema: {
|
|
758
1195
|
type: 'object',
|
|
759
1196
|
properties: {
|
|
760
|
-
action: {
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
1197
|
+
action: {
|
|
1198
|
+
type: 'string',
|
|
1199
|
+
enum: [
|
|
1200
|
+
'start_profiling', 'stop_profiling', 'run_benchmark', 'show_fps', 'show_stats', 'generate_memory_report',
|
|
1201
|
+
'set_scalability', 'set_resolution_scale', 'set_vsync', 'set_frame_rate_limit', 'enable_gpu_timing',
|
|
1202
|
+
'configure_texture_streaming', 'configure_lod', 'apply_baseline_settings', 'optimize_draw_calls', 'merge_actors',
|
|
1203
|
+
'configure_occlusion_culling', 'optimize_shaders', 'configure_nanite', 'configure_world_partition'
|
|
1204
|
+
],
|
|
1205
|
+
description: 'Action'
|
|
1206
|
+
},
|
|
1207
|
+
// Profiling
|
|
1208
|
+
type: { type: 'string', enum: ['CPU', 'GPU', 'Memory', 'RenderThread', 'GameThread', 'All'] },
|
|
1209
|
+
duration: { type: 'number' },
|
|
1210
|
+
outputPath: { type: 'string' },
|
|
1211
|
+
detailed: { type: 'boolean' },
|
|
1212
|
+
category: { type: 'string' },
|
|
1213
|
+
|
|
1214
|
+
// Settings
|
|
1215
|
+
level: { type: 'number' },
|
|
1216
|
+
scale: { type: 'number' },
|
|
1217
|
+
enabled: { type: 'boolean' },
|
|
1218
|
+
maxFPS: { type: 'number' },
|
|
1219
|
+
verbose: { type: 'boolean' },
|
|
1220
|
+
|
|
1221
|
+
// Optimization
|
|
1222
|
+
poolSize: { type: 'number' },
|
|
1223
|
+
boostPlayerLocation: { type: 'boolean' },
|
|
1224
|
+
forceLOD: { type: 'number' },
|
|
1225
|
+
lodBias: { type: 'number' },
|
|
1226
|
+
distanceScale: { type: 'number' },
|
|
1227
|
+
skeletalBias: { type: 'number' },
|
|
1228
|
+
hzb: { type: 'boolean' },
|
|
1229
|
+
enableInstancing: { type: 'boolean' },
|
|
1230
|
+
enableBatching: { type: 'boolean' },
|
|
1231
|
+
mergeActors: { type: 'boolean' },
|
|
1232
|
+
actors: { type: 'array', items: { type: 'string' } },
|
|
1233
|
+
freezeRendering: { type: 'boolean' },
|
|
1234
|
+
compileOnDemand: { type: 'boolean' },
|
|
1235
|
+
cacheShaders: { type: 'boolean' },
|
|
1236
|
+
reducePermutations: { type: 'boolean' },
|
|
1237
|
+
|
|
1238
|
+
// Features
|
|
1239
|
+
maxPixelsPerEdge: { type: 'number' },
|
|
1240
|
+
streamingPoolSize: { type: 'number' },
|
|
1241
|
+
streamingDistance: { type: 'number' },
|
|
1242
|
+
cellSize: { type: 'number' }
|
|
764
1243
|
},
|
|
765
1244
|
required: ['action']
|
|
766
1245
|
},
|
|
@@ -768,9 +1247,8 @@ Supported actions: inspect_object, set_property.`,
|
|
|
768
1247
|
type: 'object',
|
|
769
1248
|
properties: {
|
|
770
1249
|
success: { type: 'boolean' },
|
|
771
|
-
info: { type: 'object' },
|
|
772
1250
|
message: { type: 'string' },
|
|
773
|
-
|
|
1251
|
+
params: { type: 'object' }
|
|
774
1252
|
}
|
|
775
1253
|
}
|
|
776
1254
|
}
|