unreal-engine-mcp-server 0.5.21 → 0.5.30
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/CHANGELOG.md +247 -4
- package/README.md +140 -85
- package/dist/automation/bridge.d.ts +8 -0
- package/dist/automation/bridge.d.ts.map +1 -1
- package/dist/automation/bridge.js +94 -14
- package/dist/automation/bridge.js.map +1 -1
- package/dist/automation/connection-manager.d.ts.map +1 -1
- package/dist/automation/connection-manager.js +13 -5
- package/dist/automation/connection-manager.js.map +1 -1
- package/dist/automation/handshake.d.ts.map +1 -1
- package/dist/automation/handshake.js +40 -27
- package/dist/automation/handshake.js.map +1 -1
- package/dist/automation/index.d.ts +1 -1
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.js +0 -1
- package/dist/automation/index.js.map +1 -1
- package/dist/automation/message-handler.d.ts.map +1 -1
- package/dist/automation/message-handler.js +13 -9
- package/dist/automation/message-handler.js.map +1 -1
- package/dist/automation/message-schema.d.ts.map +1 -1
- package/dist/automation/message-schema.js +19 -18
- package/dist/automation/message-schema.js.map +1 -1
- package/dist/automation/request-tracker.d.ts +1 -0
- package/dist/automation/request-tracker.d.ts.map +1 -1
- package/dist/automation/request-tracker.js +30 -31
- package/dist/automation/request-tracker.js.map +1 -1
- package/dist/automation/types.d.ts +38 -32
- package/dist/automation/types.d.ts.map +1 -1
- package/dist/cli.js +14 -16
- package/dist/cli.js.map +1 -1
- package/dist/config/class-aliases.d.ts.map +1 -1
- package/dist/config/class-aliases.js +10 -2
- package/dist/config/class-aliases.js.map +1 -1
- package/dist/config.d.ts +9 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +58 -32
- package/dist/config.js.map +1 -1
- package/dist/handlers/resource-handlers.d.ts +15 -2
- package/dist/handlers/resource-handlers.d.ts.map +1 -1
- package/dist/handlers/resource-handlers.js +46 -63
- package/dist/handlers/resource-handlers.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -48
- package/dist/index.js.map +1 -1
- package/dist/resources/assets.d.ts.map +1 -1
- package/dist/resources/assets.js +34 -9
- package/dist/resources/assets.js.map +1 -1
- package/dist/resources/levels.d.ts +3 -0
- package/dist/resources/levels.d.ts.map +1 -1
- package/dist/resources/levels.js +33 -17
- package/dist/resources/levels.js.map +1 -1
- package/dist/server/resource-registry.d.ts +15 -2
- package/dist/server/resource-registry.d.ts.map +1 -1
- package/dist/server/resource-registry.js +9 -8
- package/dist/server/resource-registry.js.map +1 -1
- package/dist/server/tool-registry.d.ts +0 -1
- package/dist/server/tool-registry.d.ts.map +1 -1
- package/dist/server/tool-registry.js +91 -101
- package/dist/server/tool-registry.js.map +1 -1
- package/dist/server-setup.d.ts +5 -2
- package/dist/server-setup.d.ts.map +1 -1
- package/dist/server-setup.js +15 -19
- package/dist/server-setup.js.map +1 -1
- package/dist/services/health-monitor.d.ts +3 -0
- package/dist/services/health-monitor.d.ts.map +1 -1
- package/dist/services/health-monitor.js +30 -11
- package/dist/services/health-monitor.js.map +1 -1
- package/dist/services/metrics-server.d.ts +1 -1
- package/dist/services/metrics-server.d.ts.map +1 -1
- package/dist/services/metrics-server.js +65 -3
- package/dist/services/metrics-server.js.map +1 -1
- package/dist/tools/base-tool.d.ts.map +1 -1
- package/dist/tools/base-tool.js +14 -16
- package/dist/tools/base-tool.js.map +1 -1
- package/dist/tools/consolidated-tool-definitions.d.ts +16 -1
- package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -1
- package/dist/tools/consolidated-tool-definitions.js +1479 -2538
- package/dist/tools/consolidated-tool-definitions.js.map +1 -1
- package/dist/tools/consolidated-tool-handlers.d.ts.map +1 -1
- package/dist/tools/consolidated-tool-handlers.js +195 -217
- package/dist/tools/consolidated-tool-handlers.js.map +1 -1
- package/dist/tools/dynamic-handler-registry.d.ts +1 -0
- package/dist/tools/dynamic-handler-registry.d.ts.map +1 -1
- package/dist/tools/dynamic-handler-registry.js +15 -7
- package/dist/tools/dynamic-handler-registry.js.map +1 -1
- package/dist/tools/dynamic-tool-manager.d.ts +1 -1
- package/dist/tools/dynamic-tool-manager.d.ts.map +1 -1
- package/dist/tools/dynamic-tool-manager.js +30 -18
- package/dist/tools/dynamic-tool-manager.js.map +1 -1
- package/dist/tools/editor.d.ts +2 -2
- package/dist/tools/editor.d.ts.map +1 -1
- package/dist/tools/editor.js +4 -4
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/handlers/actor-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/actor-handlers.js +66 -7
- package/dist/tools/handlers/actor-handlers.js.map +1 -1
- package/dist/tools/handlers/ai-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/ai-handlers.js +24 -13
- package/dist/tools/handlers/ai-handlers.js.map +1 -1
- package/dist/tools/handlers/animation-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/animation-authoring-handlers.js +285 -218
- package/dist/tools/handlers/animation-authoring-handlers.js.map +1 -1
- package/dist/tools/handlers/animation-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/animation-handlers.js +69 -21
- package/dist/tools/handlers/animation-handlers.js.map +1 -1
- package/dist/tools/handlers/asset-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/asset-handlers.js +75 -16
- package/dist/tools/handlers/asset-handlers.js.map +1 -1
- package/dist/tools/handlers/audio-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/audio-authoring-handlers.js +102 -9
- package/dist/tools/handlers/audio-authoring-handlers.js.map +1 -1
- package/dist/tools/handlers/audio-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/audio-handlers.js +48 -13
- package/dist/tools/handlers/audio-handlers.js.map +1 -1
- package/dist/tools/handlers/blueprint-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/blueprint-handlers.js +28 -48
- package/dist/tools/handlers/blueprint-handlers.js.map +1 -1
- package/dist/tools/handlers/character-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/character-handlers.js +13 -12
- package/dist/tools/handlers/character-handlers.js.map +1 -1
- package/dist/tools/handlers/combat-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/combat-handlers.js +12 -12
- package/dist/tools/handlers/combat-handlers.js.map +1 -1
- package/dist/tools/handlers/common-handlers.d.ts +14 -0
- package/dist/tools/handlers/common-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/common-handlers.js +117 -9
- package/dist/tools/handlers/common-handlers.js.map +1 -1
- package/dist/tools/handlers/editor-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/editor-handlers.js +139 -67
- package/dist/tools/handlers/editor-handlers.js.map +1 -1
- package/dist/tools/handlers/effect-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/effect-handlers.js +324 -36
- package/dist/tools/handlers/effect-handlers.js.map +1 -1
- package/dist/tools/handlers/environment-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/environment-handlers.js +186 -21
- package/dist/tools/handlers/environment-handlers.js.map +1 -1
- package/dist/tools/handlers/game-framework-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/game-framework-handlers.js +10 -12
- package/dist/tools/handlers/game-framework-handlers.js.map +1 -1
- package/dist/tools/handlers/gas-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/gas-handlers.js +136 -20
- package/dist/tools/handlers/gas-handlers.js.map +1 -1
- package/dist/tools/handlers/geometry-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/geometry-handlers.js +130 -7
- package/dist/tools/handlers/geometry-handlers.js.map +1 -1
- package/dist/tools/handlers/graph-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/graph-handlers.js +46 -11
- package/dist/tools/handlers/graph-handlers.js.map +1 -1
- package/dist/tools/handlers/input-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/input-handlers.js +33 -75
- package/dist/tools/handlers/input-handlers.js.map +1 -1
- package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/inspect-handlers.js +136 -39
- package/dist/tools/handlers/inspect-handlers.js.map +1 -1
- package/dist/tools/handlers/interaction-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/interaction-handlers.js +14 -12
- package/dist/tools/handlers/interaction-handlers.js.map +1 -1
- package/dist/tools/handlers/inventory-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/inventory-handlers.js +19 -12
- package/dist/tools/handlers/inventory-handlers.js.map +1 -1
- package/dist/tools/handlers/level-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/level-handlers.js +166 -149
- package/dist/tools/handlers/level-handlers.js.map +1 -1
- package/dist/tools/handlers/level-structure-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/level-structure-handlers.js +18 -34
- package/dist/tools/handlers/level-structure-handlers.js.map +1 -1
- package/dist/tools/handlers/manage-tools-handlers.js +3 -3
- package/dist/tools/handlers/manage-tools-handlers.js.map +1 -1
- package/dist/tools/handlers/material-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/material-authoring-handlers.js +382 -41
- package/dist/tools/handlers/material-authoring-handlers.js.map +1 -1
- package/dist/tools/handlers/navigation-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/navigation-handlers.js +11 -36
- package/dist/tools/handlers/navigation-handlers.js.map +1 -1
- package/dist/tools/handlers/networking-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/networking-handlers.js +17 -15
- package/dist/tools/handlers/networking-handlers.js.map +1 -1
- package/dist/tools/handlers/niagara-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/niagara-authoring-handlers.js +24 -23
- package/dist/tools/handlers/niagara-authoring-handlers.js.map +1 -1
- package/dist/tools/handlers/pcg-handlers.d.ts +4 -0
- package/dist/tools/handlers/pcg-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/pcg-handlers.js +77 -0
- package/dist/tools/handlers/pcg-handlers.js.map +1 -0
- package/dist/tools/handlers/performance-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/performance-handlers.js +35 -42
- package/dist/tools/handlers/performance-handlers.js.map +1 -1
- package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/pipeline-handlers.js +157 -39
- package/dist/tools/handlers/pipeline-handlers.js.map +1 -1
- package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/sequence-handlers.js +6 -4
- package/dist/tools/handlers/sequence-handlers.js.map +1 -1
- package/dist/tools/handlers/sessions-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/sessions-handlers.js +7 -15
- package/dist/tools/handlers/sessions-handlers.js.map +1 -1
- package/dist/tools/handlers/spline-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/spline-handlers.js +8 -35
- package/dist/tools/handlers/spline-handlers.js.map +1 -1
- package/dist/tools/handlers/system-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/system-handlers.js +100 -26
- package/dist/tools/handlers/system-handlers.js.map +1 -1
- package/dist/tools/handlers/texture-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/texture-handlers.js +14 -0
- package/dist/tools/handlers/texture-handlers.js.map +1 -1
- package/dist/tools/handlers/volume-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/volume-handlers.js +6 -33
- package/dist/tools/handlers/volume-handlers.js.map +1 -1
- package/dist/tools/handlers/widget-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/widget-authoring-handlers.js +26 -20
- package/dist/tools/handlers/widget-authoring-handlers.js.map +1 -1
- package/dist/tools/level.d.ts +2 -2
- package/dist/tools/level.d.ts.map +1 -1
- package/dist/tools/level.js +2 -1
- package/dist/tools/level.js.map +1 -1
- package/dist/tools/property-dictionary.js +1 -1
- package/dist/tools/property-dictionary.js.map +1 -1
- package/dist/tools/schemas/core-tools.d.ts +1 -1
- package/dist/tools/schemas/core-tools.d.ts.map +1 -1
- package/dist/tools/schemas/core-tools.js +94 -57
- package/dist/tools/schemas/core-tools.js.map +1 -1
- package/dist/tools/tool-definition-utils.d.ts +8 -0
- package/dist/tools/tool-definition-utils.d.ts.map +1 -1
- package/dist/tools/tool-definition-utils.js +20 -0
- package/dist/tools/tool-definition-utils.js.map +1 -1
- package/dist/types/automation-responses.d.ts +26 -33
- package/dist/types/automation-responses.d.ts.map +1 -1
- package/dist/types/env.d.ts.map +1 -1
- package/dist/types/env.js +7 -6
- package/dist/types/env.js.map +1 -1
- package/dist/types/handler-types.d.ts +41 -20
- package/dist/types/handler-types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/tool-interfaces.d.ts +5 -873
- package/dist/types/tool-interfaces.d.ts.map +1 -1
- package/dist/types/tool-types.d.ts +35 -1
- package/dist/types/tool-types.d.ts.map +1 -1
- package/dist/unreal-bridge.d.ts.map +1 -1
- package/dist/unreal-bridge.js +16 -6
- package/dist/unreal-bridge.js.map +1 -1
- package/dist/utils/action-constants.d.ts +4 -1
- package/dist/utils/action-constants.d.ts.map +1 -1
- package/dist/utils/action-constants.js +4 -1
- package/dist/utils/action-constants.js.map +1 -1
- package/dist/utils/command-validator.d.ts.map +1 -1
- package/dist/utils/command-validator.js +5 -4
- package/dist/utils/command-validator.js.map +1 -1
- package/dist/utils/elicitation.d.ts +5 -2
- package/dist/utils/elicitation.d.ts.map +1 -1
- package/dist/utils/elicitation.js +38 -21
- package/dist/utils/elicitation.js.map +1 -1
- package/dist/utils/environment-snapshot.d.ts +17 -0
- package/dist/utils/environment-snapshot.d.ts.map +1 -0
- package/dist/utils/environment-snapshot.js +242 -0
- package/dist/utils/environment-snapshot.js.map +1 -0
- package/dist/utils/error-handler.d.ts +1 -11
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +41 -25
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ini-reader.js +4 -4
- package/dist/utils/ini-reader.js.map +1 -1
- package/dist/utils/log-reader.d.ts +29 -0
- package/dist/utils/log-reader.d.ts.map +1 -0
- package/dist/utils/log-reader.js +229 -0
- package/dist/utils/log-reader.js.map +1 -0
- package/dist/utils/log-redaction.d.ts +4 -0
- package/dist/utils/log-redaction.d.ts.map +1 -0
- package/dist/utils/log-redaction.js +27 -0
- package/dist/utils/log-redaction.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +20 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/normalize.js +31 -30
- package/dist/utils/normalize.js.map +1 -1
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js +20 -11
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/response-factory.d.ts +1 -1
- package/dist/utils/response-factory.d.ts.map +1 -1
- package/dist/utils/response-factory.js +17 -3
- package/dist/utils/response-factory.js.map +1 -1
- package/dist/utils/response-validator.d.ts.map +1 -1
- package/dist/utils/response-validator.js +114 -47
- package/dist/utils/response-validator.js.map +1 -1
- package/dist/utils/safe-json.d.ts.map +1 -1
- package/dist/utils/safe-json.js +24 -18
- package/dist/utils/safe-json.js.map +1 -1
- package/dist/utils/type-coercion.d.ts +2 -3
- package/dist/utils/type-coercion.d.ts.map +1 -1
- package/dist/utils/type-coercion.js +42 -14
- package/dist/utils/type-coercion.js.map +1 -1
- package/dist/utils/type-guards.d.ts +2 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +4 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/utils/unreal-command-queue.d.ts +2 -0
- package/dist/utils/unreal-command-queue.d.ts.map +1 -1
- package/dist/utils/unreal-command-queue.js +80 -54
- package/dist/utils/unreal-command-queue.js.map +1 -1
- package/dist/utils/validation.d.ts +2 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +44 -34
- package/dist/utils/validation.js.map +1 -1
- package/package.json +4 -6
- package/server.json +3 -3
- package/dist/graphql/loaders.d.ts +0 -64
- package/dist/graphql/loaders.d.ts.map +0 -1
- package/dist/graphql/loaders.js +0 -117
- package/dist/graphql/loaders.js.map +0 -1
- package/dist/graphql/resolvers.d.ts +0 -373
- package/dist/graphql/resolvers.d.ts.map +0 -1
- package/dist/graphql/resolvers.js +0 -776
- package/dist/graphql/resolvers.js.map +0 -1
- package/dist/graphql/schema.d.ts +0 -5
- package/dist/graphql/schema.d.ts.map +0 -1
- package/dist/graphql/schema.js +0 -437
- package/dist/graphql/schema.js.map +0 -1
- package/dist/graphql/server.d.ts +0 -25
- package/dist/graphql/server.d.ts.map +0 -1
- package/dist/graphql/server.js +0 -119
- package/dist/graphql/server.js.map +0 -1
- package/dist/graphql/types.d.ts +0 -9
- package/dist/graphql/types.d.ts.map +0 -1
- package/dist/graphql/types.js +0 -2
- package/dist/graphql/types.js.map +0 -1
- package/dist/tools/actors.d.ts +0 -212
- package/dist/tools/actors.d.ts.map +0 -1
- package/dist/tools/actors.js +0 -456
- package/dist/tools/actors.js.map +0 -1
- package/dist/tools/animation.d.ts +0 -274
- package/dist/tools/animation.d.ts.map +0 -1
- package/dist/tools/animation.js +0 -773
- package/dist/tools/animation.js.map +0 -1
- package/dist/tools/assets.d.ts +0 -82
- package/dist/tools/assets.d.ts.map +0 -1
- package/dist/tools/assets.js +0 -383
- package/dist/tools/assets.js.map +0 -1
- package/dist/tools/blueprint.d.ts +0 -271
- package/dist/tools/blueprint.d.ts.map +0 -1
- package/dist/tools/blueprint.js +0 -828
- package/dist/tools/blueprint.js.map +0 -1
- package/dist/tools/environment.d.ts +0 -37
- package/dist/tools/environment.d.ts.map +0 -1
- package/dist/tools/environment.js +0 -338
- package/dist/tools/environment.js.map +0 -1
- package/dist/tools/foliage.d.ts +0 -140
- package/dist/tools/foliage.d.ts.map +0 -1
- package/dist/tools/foliage.js +0 -405
- package/dist/tools/foliage.js.map +0 -1
- package/dist/tools/landscape.d.ts +0 -120
- package/dist/tools/landscape.d.ts.map +0 -1
- package/dist/tools/landscape.js +0 -454
- package/dist/tools/landscape.js.map +0 -1
- package/dist/tools/lighting.d.ts +0 -240
- package/dist/tools/lighting.d.ts.map +0 -1
- package/dist/tools/lighting.js +0 -856
- package/dist/tools/lighting.js.map +0 -1
- package/dist/tools/logs.d.ts +0 -45
- package/dist/tools/logs.d.ts.map +0 -1
- package/dist/tools/logs.js +0 -235
- package/dist/tools/logs.js.map +0 -1
- package/dist/tools/niagara.d.ts +0 -277
- package/dist/tools/niagara.d.ts.map +0 -1
- package/dist/tools/niagara.js +0 -325
- package/dist/tools/niagara.js.map +0 -1
- package/dist/tools/physics.d.ts +0 -191
- package/dist/tools/physics.d.ts.map +0 -1
- package/dist/tools/physics.js +0 -492
- package/dist/tools/physics.js.map +0 -1
- package/dist/tools/sequence.d.ts +0 -139
- package/dist/tools/sequence.d.ts.map +0 -1
- package/dist/tools/sequence.js +0 -261
- package/dist/tools/sequence.js.map +0 -1
package/dist/tools/foliage.js
DELETED
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
import { coerceBoolean, coerceNumber, coerceString } from '../utils/result-helpers.js';
|
|
2
|
-
export class FoliageTools {
|
|
3
|
-
bridge;
|
|
4
|
-
automationBridge;
|
|
5
|
-
constructor(bridge, automationBridge) {
|
|
6
|
-
this.bridge = bridge;
|
|
7
|
-
this.automationBridge = automationBridge;
|
|
8
|
-
}
|
|
9
|
-
setAutomationBridge(automationBridge) { this.automationBridge = automationBridge; }
|
|
10
|
-
async addFoliageType(params) {
|
|
11
|
-
const errors = [];
|
|
12
|
-
const name = String(params?.name ?? '').trim();
|
|
13
|
-
const meshPath = String(params?.meshPath ?? '').trim();
|
|
14
|
-
if (!name || name.toLowerCase() === 'undefined' || name.toLowerCase() === 'any') {
|
|
15
|
-
errors.push(`Invalid foliage type name: '${params?.name}'`);
|
|
16
|
-
}
|
|
17
|
-
if (!meshPath || meshPath.toLowerCase() === 'undefined') {
|
|
18
|
-
errors.push(`Invalid meshPath: '${params?.meshPath}'`);
|
|
19
|
-
}
|
|
20
|
-
if (params?.density !== undefined) {
|
|
21
|
-
if (typeof params.density !== 'number' || !isFinite(params.density) || params.density < 0) {
|
|
22
|
-
errors.push(`Invalid density: '${params.density}' (must be non-negative finite number)`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (params?.minScale !== undefined || params?.maxScale !== undefined) {
|
|
26
|
-
const minS = params?.minScale ?? 1;
|
|
27
|
-
const maxS = params?.maxScale ?? 1;
|
|
28
|
-
if (typeof minS !== 'number' || typeof maxS !== 'number' || minS <= 0 || maxS <= 0 || maxS < minS) {
|
|
29
|
-
errors.push(`Invalid scale range: min=${params?.minScale}, max=${params?.maxScale}`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
if (errors.length > 0) {
|
|
33
|
-
return { success: false, error: errors.join('; ') };
|
|
34
|
-
}
|
|
35
|
-
if (!this.automationBridge) {
|
|
36
|
-
throw new Error('Automation Bridge not available. Foliage operations require plugin support.');
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const base = meshPath.includes('.') ? meshPath : `${meshPath}.${meshPath.split('/').filter(Boolean).pop()}`;
|
|
40
|
-
const response = await this.automationBridge.sendAutomationRequest('add_foliage_type', {
|
|
41
|
-
name,
|
|
42
|
-
meshPath: base,
|
|
43
|
-
density: params.density ?? 100,
|
|
44
|
-
radius: params.radius ?? 0,
|
|
45
|
-
minScale: params.minScale ?? 1.0,
|
|
46
|
-
maxScale: params.maxScale ?? 1.0,
|
|
47
|
-
alignToNormal: params.alignToNormal ?? true,
|
|
48
|
-
randomYaw: params.randomYaw ?? true,
|
|
49
|
-
groundSlope: params.groundSlope ?? 45
|
|
50
|
-
}, {
|
|
51
|
-
timeoutMs: 60000
|
|
52
|
-
});
|
|
53
|
-
if (response.success === false) {
|
|
54
|
-
return {
|
|
55
|
-
success: false,
|
|
56
|
-
error: response.error || response.message || 'Add foliage type failed',
|
|
57
|
-
note: coerceString(response.result?.note)
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
const payload = response.result;
|
|
61
|
-
const created = coerceBoolean(payload.created, false) ?? false;
|
|
62
|
-
const exists = coerceBoolean(payload.exists_after, false) ?? created;
|
|
63
|
-
const method = coerceString(payload.method) ?? 'Unknown';
|
|
64
|
-
const assetPath = coerceString(payload.asset_path);
|
|
65
|
-
const usedMesh = coerceString(payload.used_mesh);
|
|
66
|
-
const note = coerceString(payload.note);
|
|
67
|
-
return {
|
|
68
|
-
success: true,
|
|
69
|
-
created,
|
|
70
|
-
exists,
|
|
71
|
-
method,
|
|
72
|
-
assetPath,
|
|
73
|
-
usedMesh,
|
|
74
|
-
note,
|
|
75
|
-
message: exists
|
|
76
|
-
? `Foliage type '${name}' ready (${method})`
|
|
77
|
-
: `Created foliage '${name}' but verification did not find it yet`
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
return {
|
|
82
|
-
success: false,
|
|
83
|
-
error: `Failed to add foliage type: ${error instanceof Error ? error.message : String(error)}`
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
async paintFoliage(params) {
|
|
88
|
-
const errors = [];
|
|
89
|
-
const foliageType = String(params?.foliageType ?? '').trim();
|
|
90
|
-
const pos = Array.isArray(params?.position) ? params.position : [0, 0, 0];
|
|
91
|
-
if (!foliageType || foliageType.toLowerCase() === 'undefined' || foliageType.toLowerCase() === 'any') {
|
|
92
|
-
errors.push(`Invalid foliageType: '${params?.foliageType}'`);
|
|
93
|
-
}
|
|
94
|
-
if (!Array.isArray(pos) || pos.length !== 3 || pos.some(v => typeof v !== 'number' || !isFinite(v))) {
|
|
95
|
-
errors.push(`Invalid position: '${JSON.stringify(params?.position)}'`);
|
|
96
|
-
}
|
|
97
|
-
if (params?.brushSize !== undefined) {
|
|
98
|
-
if (typeof params.brushSize !== 'number' || !isFinite(params.brushSize) || params.brushSize < 0) {
|
|
99
|
-
errors.push(`Invalid brushSize: '${params.brushSize}' (must be non-negative finite number)`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (params?.paintDensity !== undefined) {
|
|
103
|
-
if (typeof params.paintDensity !== 'number' || !isFinite(params.paintDensity) || params.paintDensity < 0) {
|
|
104
|
-
errors.push(`Invalid paintDensity: '${params.paintDensity}' (must be non-negative finite number)`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (errors.length > 0) {
|
|
108
|
-
return { success: false, error: errors.join('; ') };
|
|
109
|
-
}
|
|
110
|
-
if (!this.automationBridge) {
|
|
111
|
-
throw new Error('Automation Bridge not available. Foliage operations require plugin support.');
|
|
112
|
-
}
|
|
113
|
-
try {
|
|
114
|
-
const typePath = foliageType.includes('/') ? foliageType : `/Game/Foliage/${foliageType}.${foliageType}`;
|
|
115
|
-
const response = await this.automationBridge.sendAutomationRequest('paint_foliage', {
|
|
116
|
-
foliageTypePath: typePath,
|
|
117
|
-
locations: [{ x: pos[0], y: pos[1], z: pos[2] }],
|
|
118
|
-
brushSize: Number.isFinite(params.brushSize) ? params.brushSize : 300,
|
|
119
|
-
paintDensity: params.paintDensity,
|
|
120
|
-
eraseMode: params.eraseMode
|
|
121
|
-
}, {
|
|
122
|
-
timeoutMs: 60000
|
|
123
|
-
});
|
|
124
|
-
if (response.success === false) {
|
|
125
|
-
return {
|
|
126
|
-
success: false,
|
|
127
|
-
error: response.error || response.message || 'Paint foliage failed',
|
|
128
|
-
note: coerceString(response.result?.note)
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
const payload = response.result;
|
|
132
|
-
const added = coerceNumber(payload.instancesPlaced) ?? coerceNumber(payload.count) ?? 0;
|
|
133
|
-
const note = coerceString(payload.note);
|
|
134
|
-
return {
|
|
135
|
-
success: true,
|
|
136
|
-
added,
|
|
137
|
-
note,
|
|
138
|
-
message: `Painted ${added} instances for '${foliageType}' around (${pos[0]}, ${pos[1]}, ${pos[2]})`
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
return {
|
|
143
|
-
success: false,
|
|
144
|
-
error: `Failed to paint foliage: ${error instanceof Error ? error.message : String(error)}`
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async getFoliageInstances(params) {
|
|
149
|
-
if (!this.automationBridge) {
|
|
150
|
-
throw new Error('Automation Bridge not available. Foliage operations require plugin support.');
|
|
151
|
-
}
|
|
152
|
-
try {
|
|
153
|
-
const typePath = params.foliageType ? (params.foliageType.includes('/') ? params.foliageType : `/Game/Foliage/${params.foliageType}.${params.foliageType}`) : undefined;
|
|
154
|
-
const response = await this.automationBridge.sendAutomationRequest('get_foliage_instances', {
|
|
155
|
-
foliageTypePath: typePath
|
|
156
|
-
}, { timeoutMs: 60000 });
|
|
157
|
-
if (response.success === false) {
|
|
158
|
-
return { success: false, error: response.error || response.message || 'Get foliage instances failed' };
|
|
159
|
-
}
|
|
160
|
-
const payload = response.result;
|
|
161
|
-
return {
|
|
162
|
-
success: true,
|
|
163
|
-
count: coerceNumber(payload.count) ?? 0,
|
|
164
|
-
instances: payload.instances ?? [],
|
|
165
|
-
message: 'Foliage instances retrieved'
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
catch (error) {
|
|
169
|
-
return { success: false, error: `Failed to get foliage instances: ${error instanceof Error ? error.message : String(error)}` };
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
async removeFoliage(params) {
|
|
173
|
-
if (!this.automationBridge) {
|
|
174
|
-
throw new Error('Automation Bridge not available. Foliage operations require plugin support.');
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
const typePath = params.foliageType ? (params.foliageType.includes('/') ? params.foliageType : `/Game/Foliage/${params.foliageType}.${params.foliageType}`) : undefined;
|
|
178
|
-
const response = await this.automationBridge.sendAutomationRequest('remove_foliage', {
|
|
179
|
-
foliageTypePath: typePath,
|
|
180
|
-
removeAll: !!params.removeAll
|
|
181
|
-
}, { timeoutMs: 60000 });
|
|
182
|
-
if (response.success === false) {
|
|
183
|
-
return { success: false, error: response.error || response.message || 'Remove foliage failed' };
|
|
184
|
-
}
|
|
185
|
-
const payload = response.result;
|
|
186
|
-
return {
|
|
187
|
-
success: true,
|
|
188
|
-
instancesRemoved: coerceNumber(payload.instancesRemoved) ?? 0,
|
|
189
|
-
message: 'Foliage removed'
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
return { success: false, error: `Failed to remove foliage: ${error instanceof Error ? error.message : String(error)}` };
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
async createInstancedMesh(params) {
|
|
197
|
-
const commands = [];
|
|
198
|
-
commands.push(`CreateInstancedStaticMesh ${params.name} ${params.meshPath}`);
|
|
199
|
-
for (const instance of params.instances) {
|
|
200
|
-
const rot = instance.rotation || [0, 0, 0];
|
|
201
|
-
const scale = instance.scale || [1, 1, 1];
|
|
202
|
-
commands.push(`AddInstance ${params.name} ${instance.position.join(' ')} ${rot.join(' ')} ${scale.join(' ')}`);
|
|
203
|
-
}
|
|
204
|
-
if (params.enableCulling !== undefined) {
|
|
205
|
-
commands.push(`SetInstanceCulling ${params.name} ${params.enableCulling}`);
|
|
206
|
-
}
|
|
207
|
-
if (params.cullDistance !== undefined) {
|
|
208
|
-
commands.push(`SetInstanceCullDistance ${params.name} ${params.cullDistance}`);
|
|
209
|
-
}
|
|
210
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
211
|
-
return { success: true, message: `Instanced mesh ${params.name} created with ${params.instances.length} instances` };
|
|
212
|
-
}
|
|
213
|
-
async setFoliageLOD(params) {
|
|
214
|
-
const commands = [];
|
|
215
|
-
if (params.lodDistances) {
|
|
216
|
-
commands.push(`SetFoliageLODDistances ${params.foliageType} ${params.lodDistances.join(' ')}`);
|
|
217
|
-
}
|
|
218
|
-
if (params.screenSize) {
|
|
219
|
-
commands.push(`SetFoliageLODScreenSize ${params.foliageType} ${params.screenSize.join(' ')}`);
|
|
220
|
-
}
|
|
221
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
222
|
-
return { success: true, message: 'Foliage LOD settings updated' };
|
|
223
|
-
}
|
|
224
|
-
async addFoliage(params) {
|
|
225
|
-
if (params.locations && params.locations.length > 0) {
|
|
226
|
-
if (!this.automationBridge) {
|
|
227
|
-
throw new Error('Automation Bridge not available.');
|
|
228
|
-
}
|
|
229
|
-
const response = await this.automationBridge.sendAutomationRequest('paint_foliage', {
|
|
230
|
-
foliageTypePath: params.foliageType.includes('/') ? params.foliageType : `/Game/Foliage/${params.foliageType}.${params.foliageType}`,
|
|
231
|
-
locations: params.locations,
|
|
232
|
-
brushSize: 0,
|
|
233
|
-
paintDensity: 1,
|
|
234
|
-
eraseMode: false
|
|
235
|
-
});
|
|
236
|
-
if (!response.success) {
|
|
237
|
-
return { success: false, error: response.error || 'Failed to add foliage instances' };
|
|
238
|
-
}
|
|
239
|
-
return { success: true, message: `Added ${params.locations.length} foliage instances` };
|
|
240
|
-
}
|
|
241
|
-
return { success: true, message: 'No locations provided for addFoliage' };
|
|
242
|
-
}
|
|
243
|
-
async createProceduralFoliage(params) {
|
|
244
|
-
if (!this.automationBridge) {
|
|
245
|
-
throw new Error('Automation Bridge not available.');
|
|
246
|
-
}
|
|
247
|
-
const volName = params.volumeName || params.name || 'ProceduralFoliageVolume';
|
|
248
|
-
const loc = params.bounds?.location ? [params.bounds.location.x, params.bounds.location.y, params.bounds.location.z] : (params.position || [0, 0, 0]);
|
|
249
|
-
const size = params.bounds?.size ? [params.bounds.size.x, params.bounds.size.y, params.bounds.size.z] : (params.size || [1000, 1000, 100]);
|
|
250
|
-
const foliageTypes = Array.isArray(params.foliageTypes)
|
|
251
|
-
? params.foliageTypes.map(t => {
|
|
252
|
-
if (typeof t === 'string')
|
|
253
|
-
return { meshPath: t, density: 0.5 };
|
|
254
|
-
return t;
|
|
255
|
-
})
|
|
256
|
-
: [];
|
|
257
|
-
const payload = {
|
|
258
|
-
name: volName,
|
|
259
|
-
bounds: {
|
|
260
|
-
location: { x: loc[0], y: loc[1], z: loc[2] },
|
|
261
|
-
size: { x: size[0], y: size[1], z: size[2] }
|
|
262
|
-
},
|
|
263
|
-
foliageTypes,
|
|
264
|
-
seed: params.seed ?? 42,
|
|
265
|
-
tileSize: params.tileSize ?? 1000
|
|
266
|
-
};
|
|
267
|
-
const response = await this.automationBridge.sendAutomationRequest('create_procedural_foliage', payload);
|
|
268
|
-
if (!response.success) {
|
|
269
|
-
return {
|
|
270
|
-
success: false,
|
|
271
|
-
error: response.error || 'Failed to create procedural foliage'
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
const result = (response.result ?? {});
|
|
275
|
-
return {
|
|
276
|
-
success: true,
|
|
277
|
-
message: `Procedural foliage volume ${volName} created`,
|
|
278
|
-
details: response,
|
|
279
|
-
volumeActor: result.volume_actor,
|
|
280
|
-
spawnerPath: result.spawner_path,
|
|
281
|
-
foliageTypesCount: result.foliage_types_count
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
async addFoliageInstances(params) {
|
|
285
|
-
if (!this.automationBridge) {
|
|
286
|
-
throw new Error('Automation Bridge not available. Foliage instance placement requires plugin support.');
|
|
287
|
-
}
|
|
288
|
-
try {
|
|
289
|
-
const typePath = params.foliageType.includes('/') ? params.foliageType : `/Game/Foliage/${params.foliageType}.${params.foliageType}`;
|
|
290
|
-
const response = await this.automationBridge.sendAutomationRequest('add_foliage_instances', {
|
|
291
|
-
foliageType: typePath,
|
|
292
|
-
transforms: params.transforms
|
|
293
|
-
}, {
|
|
294
|
-
timeoutMs: 120000
|
|
295
|
-
});
|
|
296
|
-
if (response.success === false) {
|
|
297
|
-
return {
|
|
298
|
-
success: false,
|
|
299
|
-
error: response.error || response.message || 'Failed to add foliage instances',
|
|
300
|
-
message: response.message || 'Failed to add foliage instances'
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
const result = (response.result ?? {});
|
|
304
|
-
return {
|
|
305
|
-
success: true,
|
|
306
|
-
message: response.message || `Added ${result.instances_count ?? params.transforms.length} foliage instances`,
|
|
307
|
-
instancesCount: result.instances_count
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
return {
|
|
312
|
-
success: false,
|
|
313
|
-
error: `Failed to add foliage instances: ${error instanceof Error ? error.message : String(error)}`
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
async setFoliageCollision(params) {
|
|
318
|
-
const commands = [];
|
|
319
|
-
if (params.collisionEnabled !== undefined) {
|
|
320
|
-
commands.push(`SetFoliageCollision ${params.foliageType} ${params.collisionEnabled}`);
|
|
321
|
-
}
|
|
322
|
-
if (params.collisionProfile) {
|
|
323
|
-
commands.push(`SetFoliageCollisionProfile ${params.foliageType} ${params.collisionProfile}`);
|
|
324
|
-
}
|
|
325
|
-
if (params.generateOverlapEvents !== undefined) {
|
|
326
|
-
commands.push(`SetFoliageOverlapEvents ${params.foliageType} ${params.generateOverlapEvents}`);
|
|
327
|
-
}
|
|
328
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
329
|
-
return { success: true, message: 'Foliage collision settings updated' };
|
|
330
|
-
}
|
|
331
|
-
async createGrassSystem(params) {
|
|
332
|
-
const commands = [];
|
|
333
|
-
commands.push(`CreateGrassSystem ${params.name}`);
|
|
334
|
-
for (const grassType of params.grassTypes) {
|
|
335
|
-
const minScale = grassType.minScale || 0.8;
|
|
336
|
-
const maxScale = grassType.maxScale || 1.2;
|
|
337
|
-
commands.push(`AddGrassType ${params.name} ${grassType.meshPath} ${grassType.density} ${minScale} ${maxScale}`);
|
|
338
|
-
}
|
|
339
|
-
if (params.windStrength !== undefined) {
|
|
340
|
-
commands.push(`SetGrassWindStrength ${params.name} ${params.windStrength}`);
|
|
341
|
-
}
|
|
342
|
-
if (params.windSpeed !== undefined) {
|
|
343
|
-
commands.push(`SetGrassWindSpeed ${params.name} ${params.windSpeed}`);
|
|
344
|
-
}
|
|
345
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
346
|
-
return { success: true, message: `Grass system ${params.name} created` };
|
|
347
|
-
}
|
|
348
|
-
async removeFoliageInstances(params) {
|
|
349
|
-
const command = `RemoveFoliageInRadius ${params.foliageType} ${params.position.join(' ')} ${params.radius}`;
|
|
350
|
-
return this.bridge.executeConsoleCommand(command);
|
|
351
|
-
}
|
|
352
|
-
async selectFoliageInstances(params) {
|
|
353
|
-
let command;
|
|
354
|
-
if (params.selectAll) {
|
|
355
|
-
command = `SelectAllFoliage ${params.foliageType}`;
|
|
356
|
-
}
|
|
357
|
-
else if (params.position && params.radius) {
|
|
358
|
-
command = `SelectFoliageInRadius ${params.foliageType} ${params.position.join(' ')} ${params.radius}`;
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
command = `SelectFoliageType ${params.foliageType}`;
|
|
362
|
-
}
|
|
363
|
-
return this.bridge.executeConsoleCommand(command);
|
|
364
|
-
}
|
|
365
|
-
async updateFoliageInstances(params) {
|
|
366
|
-
const commands = [];
|
|
367
|
-
if (params.updateTransforms) {
|
|
368
|
-
commands.push(`UpdateFoliageTransforms ${params.foliageType}`);
|
|
369
|
-
}
|
|
370
|
-
if (params.updateMesh && params.newMeshPath) {
|
|
371
|
-
commands.push(`UpdateFoliageMesh ${params.foliageType} ${params.newMeshPath}`);
|
|
372
|
-
}
|
|
373
|
-
commands.push(`RefreshFoliage ${params.foliageType}`);
|
|
374
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
375
|
-
return { success: true, message: 'Foliage instances updated' };
|
|
376
|
-
}
|
|
377
|
-
async createFoliageSpawner(params) {
|
|
378
|
-
const commands = [];
|
|
379
|
-
commands.push(`CreateFoliageSpawner ${params.name} ${params.spawnArea}`);
|
|
380
|
-
if (params.excludeAreas) {
|
|
381
|
-
for (const area of params.excludeAreas) {
|
|
382
|
-
commands.push(`AddFoliageExclusionArea ${params.name} ${area.join(' ')}`);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
386
|
-
return { success: true, message: `Foliage spawner ${params.name} created` };
|
|
387
|
-
}
|
|
388
|
-
async optimizeFoliage(params) {
|
|
389
|
-
const commands = [];
|
|
390
|
-
if (params.mergeInstances) {
|
|
391
|
-
commands.push('MergeFoliageInstances');
|
|
392
|
-
}
|
|
393
|
-
if (params.generateClusters) {
|
|
394
|
-
const size = params.clusterSize || 100;
|
|
395
|
-
commands.push(`GenerateFoliageClusters ${size}`);
|
|
396
|
-
}
|
|
397
|
-
if (params.reduceDrawCalls) {
|
|
398
|
-
commands.push('OptimizeFoliageDrawCalls');
|
|
399
|
-
}
|
|
400
|
-
commands.push('RebuildFoliageTree');
|
|
401
|
-
await this.bridge.executeConsoleCommands(commands);
|
|
402
|
-
return { success: true, message: 'Foliage optimized' };
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
//# sourceMappingURL=foliage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foliage.js","sourceRoot":"","sources":["../../src/tools/foliage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { UnrealBridge } from '../unreal-bridge.js';
|
|
2
|
-
import { AutomationBridge } from '../automation/index.js';
|
|
3
|
-
import { ILandscapeTools, StandardActionResponse } from '../types/tool-interfaces.js';
|
|
4
|
-
export declare class LandscapeTools implements ILandscapeTools {
|
|
5
|
-
private bridge;
|
|
6
|
-
private automationBridge?;
|
|
7
|
-
constructor(bridge: UnrealBridge, automationBridge?: AutomationBridge | undefined);
|
|
8
|
-
setAutomationBridge(automationBridge?: AutomationBridge): void;
|
|
9
|
-
createLandscape(params: {
|
|
10
|
-
name: string;
|
|
11
|
-
location?: [number, number, number];
|
|
12
|
-
sizeX?: number;
|
|
13
|
-
sizeY?: number;
|
|
14
|
-
quadsPerSection?: number;
|
|
15
|
-
sectionsPerComponent?: number;
|
|
16
|
-
componentCount?: number;
|
|
17
|
-
materialPath?: string;
|
|
18
|
-
enableWorldPartition?: boolean;
|
|
19
|
-
runtimeGrid?: string;
|
|
20
|
-
isSpatiallyLoaded?: boolean;
|
|
21
|
-
dataLayers?: string[];
|
|
22
|
-
}): Promise<StandardActionResponse>;
|
|
23
|
-
sculptLandscape(params: {
|
|
24
|
-
landscapeName: string;
|
|
25
|
-
tool: string;
|
|
26
|
-
brushSize?: number;
|
|
27
|
-
brushFalloff?: number;
|
|
28
|
-
strength?: number;
|
|
29
|
-
location?: [number, number, number];
|
|
30
|
-
radius?: number;
|
|
31
|
-
}): Promise<StandardActionResponse>;
|
|
32
|
-
paintLandscape(params: {
|
|
33
|
-
landscapeName: string;
|
|
34
|
-
layerName: string;
|
|
35
|
-
position: [number, number, number];
|
|
36
|
-
brushSize?: number;
|
|
37
|
-
strength?: number;
|
|
38
|
-
targetValue?: number;
|
|
39
|
-
radius?: number;
|
|
40
|
-
density?: number;
|
|
41
|
-
}): Promise<StandardActionResponse>;
|
|
42
|
-
createProceduralTerrain(params: {
|
|
43
|
-
name: string;
|
|
44
|
-
location?: [number, number, number];
|
|
45
|
-
sizeX?: number;
|
|
46
|
-
sizeY?: number;
|
|
47
|
-
subdivisions?: number;
|
|
48
|
-
heightFunction?: string;
|
|
49
|
-
material?: string;
|
|
50
|
-
settings?: Record<string, unknown>;
|
|
51
|
-
}): Promise<StandardActionResponse>;
|
|
52
|
-
createLandscapeGrassType(params: {
|
|
53
|
-
name: string;
|
|
54
|
-
meshPath: string;
|
|
55
|
-
density?: number;
|
|
56
|
-
minScale?: number;
|
|
57
|
-
maxScale?: number;
|
|
58
|
-
path?: string;
|
|
59
|
-
staticMesh?: string;
|
|
60
|
-
}): Promise<StandardActionResponse>;
|
|
61
|
-
setLandscapeMaterial(params: {
|
|
62
|
-
landscapeName: string;
|
|
63
|
-
materialPath: string;
|
|
64
|
-
}): Promise<StandardActionResponse>;
|
|
65
|
-
createLandscapeGrass(params: {
|
|
66
|
-
landscapeName: string;
|
|
67
|
-
grassType: string;
|
|
68
|
-
density?: number;
|
|
69
|
-
minScale?: number;
|
|
70
|
-
maxScale?: number;
|
|
71
|
-
randomRotation?: boolean;
|
|
72
|
-
}): Promise<StandardActionResponse>;
|
|
73
|
-
updateLandscapeCollision(params: {
|
|
74
|
-
landscapeName: string;
|
|
75
|
-
collisionMipLevel?: number;
|
|
76
|
-
simpleCollision?: boolean;
|
|
77
|
-
}): Promise<StandardActionResponse>;
|
|
78
|
-
retopologizeLandscape(params: {
|
|
79
|
-
landscapeName: string;
|
|
80
|
-
targetTriangleCount?: number;
|
|
81
|
-
preserveDetails?: boolean;
|
|
82
|
-
}): Promise<StandardActionResponse>;
|
|
83
|
-
createWaterBody(params: {
|
|
84
|
-
type: 'Ocean' | 'Lake' | 'River' | 'Stream';
|
|
85
|
-
name: string;
|
|
86
|
-
location?: [number, number, number];
|
|
87
|
-
size?: [number, number];
|
|
88
|
-
depth?: number;
|
|
89
|
-
}): Promise<StandardActionResponse>;
|
|
90
|
-
configureWorldPartition(params: {
|
|
91
|
-
landscapeName: string;
|
|
92
|
-
enableSpatialLoading?: boolean;
|
|
93
|
-
runtimeGrid?: string;
|
|
94
|
-
dataLayers?: string[];
|
|
95
|
-
streamingDistance?: number;
|
|
96
|
-
}): Promise<StandardActionResponse>;
|
|
97
|
-
setDataLayers(params: {
|
|
98
|
-
landscapeName: string;
|
|
99
|
-
dataLayerNames: string[];
|
|
100
|
-
operation: 'add' | 'remove' | 'set';
|
|
101
|
-
}): Promise<StandardActionResponse>;
|
|
102
|
-
configureStreamingCells(params: {
|
|
103
|
-
landscapeName: string;
|
|
104
|
-
cellSize?: number;
|
|
105
|
-
loadingRange?: number;
|
|
106
|
-
enableHLOD?: boolean;
|
|
107
|
-
}): Promise<StandardActionResponse>;
|
|
108
|
-
modifyHeightmap(params: {
|
|
109
|
-
landscapeName: string;
|
|
110
|
-
heightData: number[];
|
|
111
|
-
minX: number;
|
|
112
|
-
minY: number;
|
|
113
|
-
maxX: number;
|
|
114
|
-
maxY: number;
|
|
115
|
-
updateNormals?: boolean;
|
|
116
|
-
timeoutMs?: number;
|
|
117
|
-
skipFlush?: boolean;
|
|
118
|
-
}): Promise<StandardActionResponse>;
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=landscape.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"landscape.d.ts","sourceRoot":"","sources":["../../src/tools/landscape.ts"],"names":[],"mappings":"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"}
|