@satelliteoflove/godot-mcp 2.4.0 → 2.4.2
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/README.md +66 -26
- package/addon/commands/node_commands.gd +11 -8
- package/addon/commands/scene3d_commands.gd +0 -7
- package/addon/core/base_command.gd +29 -0
- package/addon/core/mcp_debugger_plugin.gd +6 -1
- package/addon/core/mcp_utils.gd +4 -0
- package/addon/plugin.cfg +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/tools/editor.d.ts.map +1 -1
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/scene3d.d.ts.map +1 -1
- package/dist/tools/scene3d.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# godot-mcp
|
|
2
2
|
|
|
3
|
-
MCP server
|
|
3
|
+
An MCP server that gives Claude direct visibility into your Godot editor and running game. Instead of copy-pasting debug output or describing what you're seeing, Claude can observe it directly.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Core Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- Resource inspection for SpriteFrames, TileSets, Materials, and Textures
|
|
13
|
-
- Debug output capture from running games
|
|
7
|
+
**Observe** - Claude sees what you see
|
|
8
|
+
- Live editor state, selection, and open scenes
|
|
9
|
+
- Screenshots from editor viewports or running game
|
|
10
|
+
- Debug output and performance metrics from runtime
|
|
11
|
+
- Camera position and viewport in 2D and 3D
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
**Inspect** - Deep access to your project
|
|
14
|
+
- Scene tree traversal with node properties
|
|
15
|
+
- 3D spatial data: transforms, bounding boxes, visibility
|
|
16
|
+
- Resource introspection: SpriteFrames, TileSets, Materials
|
|
17
|
+
- Project settings and input mappings
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
**Modify** - Direct manipulation when needed
|
|
20
|
+
- Create, update, delete, and reparent nodes
|
|
21
|
+
- Attach and detach scripts
|
|
22
|
+
- Edit TileMapLayers and GridMaps cell-by-cell
|
|
23
|
+
- Control animation playback and edit tracks/keyframes
|
|
24
|
+
- Run and stop the game from the editor
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
2. Install the addon: `npx @satelliteoflove/godot-mcp --install-addon /path/to/project`
|
|
25
|
-
3. Enable it in Godot: Project Settings > Plugins > Godot MCP
|
|
26
|
+
## Quick Start
|
|
26
27
|
|
|
27
|
-
###
|
|
28
|
+
### 1. Configure Your AI Assistant
|
|
28
29
|
|
|
29
|
-
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
30
|
+
**Claude Desktop** - Add to config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
30
31
|
|
|
31
32
|
```json
|
|
32
33
|
{
|
|
@@ -39,9 +40,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
39
40
|
}
|
|
40
41
|
```
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Add to `.mcp.json`:
|
|
43
|
+
**Claude Code** - Add to `.mcp.json`:
|
|
45
44
|
|
|
46
45
|
```json
|
|
47
46
|
{
|
|
@@ -54,9 +53,50 @@ Add to `.mcp.json`:
|
|
|
54
53
|
}
|
|
55
54
|
```
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
### 2. Install the Godot Addon
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx @satelliteoflove/godot-mcp --install-addon /path/to/your/godot/project
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Then enable the addon in Godot: Project Settings > Plugins > Godot MCP.
|
|
63
|
+
|
|
64
|
+
### 3. Start Using
|
|
65
|
+
|
|
66
|
+
Open your Godot project (with addon enabled), restart your AI assistant, and start building.
|
|
67
|
+
|
|
68
|
+
**Version Sync:** The MCP server auto-updates via npx. Version mismatches are detected automatically on connection. If prompted, re-run the install command to update the addon.
|
|
58
69
|
|
|
59
|
-
|
|
70
|
+
## Tools
|
|
71
|
+
|
|
72
|
+
| Tool | Description |
|
|
73
|
+
|------|-------------|
|
|
74
|
+
| `scene` | Manage scenes: open, save, or create scenes |
|
|
75
|
+
| `node` | Manage scene nodes: get properties, find, create, update, delete, reparent, attach/detach scripts |
|
|
76
|
+
| `editor` | Control the Godot editor: get state (includes viewport/camera info), manage selection, run/stop project, get debug output, get performance metrics, capture screenshots, set 2D viewport position/zoom |
|
|
77
|
+
| `project` | Get project information and settings |
|
|
78
|
+
| `animation` | Query, control, and edit animations |
|
|
79
|
+
| `tilemap` | Query and edit TileMapLayer data: list layers, get info, get/set cells, convert coordinates |
|
|
80
|
+
| `gridmap` | Query and edit GridMap data: list gridmaps, get info, get/set cells |
|
|
81
|
+
| `resource` | Manage Godot resources: inspect Resource files by path |
|
|
82
|
+
| `scene3d` | Get spatial information for 3D nodes: global transforms, bounding boxes, visibility |
|
|
83
|
+
|
|
84
|
+
See [docs/](docs/) for detailed API reference, including the [Claude Code Setup Guide](docs/claude-code-setup.md).
|
|
85
|
+
|
|
86
|
+
## Architecture
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
[AI Assistant] <--stdio--> [MCP Server] <--WebSocket--> [Godot Addon]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Development
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
cd server
|
|
96
|
+
npm install && npm run build
|
|
97
|
+
npm test
|
|
98
|
+
npm run generate-docs
|
|
99
|
+
```
|
|
60
100
|
|
|
61
101
|
## Requirements
|
|
62
102
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
extends MCPBaseCommand
|
|
3
3
|
class_name MCPNodeCommands
|
|
4
4
|
|
|
5
|
+
const FIND_NODES_TIMEOUT := 5.0
|
|
6
|
+
|
|
5
7
|
var _find_nodes_pending := false
|
|
6
8
|
var _find_nodes_result: Dictionary = {}
|
|
7
9
|
|
|
@@ -17,13 +19,6 @@ func get_commands() -> Dictionary:
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
|
|
20
|
-
func _require_scene_open() -> Dictionary:
|
|
21
|
-
var root := EditorInterface.get_edited_scene_root()
|
|
22
|
-
if not root:
|
|
23
|
-
return _error("NO_SCENE", "No scene is currently open")
|
|
24
|
-
return {}
|
|
25
|
-
|
|
26
|
-
|
|
27
22
|
func get_node_properties(params: Dictionary) -> Dictionary:
|
|
28
23
|
var node_path: String = params.get("node_path", "")
|
|
29
24
|
if node_path.is_empty():
|
|
@@ -55,7 +50,7 @@ func find_nodes(params: Dictionary) -> Dictionary:
|
|
|
55
50
|
return _error("INVALID_PARAMS", "At least one of name_pattern or type is required")
|
|
56
51
|
|
|
57
52
|
var debugger := _plugin.get_debugger_plugin() as MCPDebuggerPlugin
|
|
58
|
-
if debugger and debugger.has_active_session():
|
|
53
|
+
if debugger and EditorInterface.is_playing_scene() and debugger.has_active_session():
|
|
59
54
|
return await _find_nodes_via_game(debugger, name_pattern, type_filter, root_path)
|
|
60
55
|
|
|
61
56
|
var scene_check := _require_scene_open()
|
|
@@ -80,11 +75,19 @@ func _find_nodes_via_game(debugger: MCPDebuggerPlugin, name_pattern: String, typ
|
|
|
80
75
|
_find_nodes_pending = true
|
|
81
76
|
_find_nodes_result = {}
|
|
82
77
|
|
|
78
|
+
if debugger.find_nodes_received.is_connected(_on_find_nodes_received):
|
|
79
|
+
debugger.find_nodes_received.disconnect(_on_find_nodes_received)
|
|
83
80
|
debugger.find_nodes_received.connect(_on_find_nodes_received, CONNECT_ONE_SHOT)
|
|
84
81
|
debugger.request_find_nodes(name_pattern, type_filter, root_path)
|
|
85
82
|
|
|
83
|
+
var start_time := Time.get_ticks_msec()
|
|
86
84
|
while _find_nodes_pending:
|
|
87
85
|
await Engine.get_main_loop().process_frame
|
|
86
|
+
if (Time.get_ticks_msec() - start_time) / 1000.0 > FIND_NODES_TIMEOUT:
|
|
87
|
+
_find_nodes_pending = false
|
|
88
|
+
if debugger.find_nodes_received.is_connected(_on_find_nodes_received):
|
|
89
|
+
debugger.find_nodes_received.disconnect(_on_find_nodes_received)
|
|
90
|
+
return _error("TIMEOUT", "Game did not respond within %d seconds" % int(FIND_NODES_TIMEOUT))
|
|
88
91
|
|
|
89
92
|
return _find_nodes_result
|
|
90
93
|
|
|
@@ -10,13 +10,6 @@ func get_commands() -> Dictionary:
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
func _require_scene_open() -> Dictionary:
|
|
14
|
-
var root := EditorInterface.get_edited_scene_root()
|
|
15
|
-
if not root:
|
|
16
|
-
return _error("NO_SCENE", "No scene is currently open")
|
|
17
|
-
return {}
|
|
18
|
-
|
|
19
|
-
|
|
20
13
|
func get_spatial_info(params: Dictionary) -> Dictionary:
|
|
21
14
|
var scene_check := _require_scene_open()
|
|
22
15
|
if not scene_check.is_empty():
|
|
@@ -27,3 +27,32 @@ func _get_node(path: String) -> Node:
|
|
|
27
27
|
|
|
28
28
|
func _serialize_value(value: Variant) -> Variant:
|
|
29
29
|
return MCPUtils.serialize_value(value)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
func _require_scene_open() -> Dictionary:
|
|
33
|
+
var root := EditorInterface.get_edited_scene_root()
|
|
34
|
+
if not root:
|
|
35
|
+
return _error("NO_SCENE", "No scene is currently open")
|
|
36
|
+
return {}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
func _require_typed_node(path: String, type: String, type_error_code: String = "WRONG_TYPE") -> Variant:
|
|
40
|
+
var node := _get_node(path)
|
|
41
|
+
if not node:
|
|
42
|
+
return _error("NODE_NOT_FOUND", "Node not found: %s" % path)
|
|
43
|
+
if not node.is_class(type):
|
|
44
|
+
return _error(type_error_code, "Expected %s, got %s" % [type, node.get_class()])
|
|
45
|
+
return node
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
func _find_nodes_of_type(root: Node, type: String) -> Array[Dictionary]:
|
|
49
|
+
var result: Array[Dictionary] = []
|
|
50
|
+
_find_nodes_recursive(root, type, result)
|
|
51
|
+
return result
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
func _find_nodes_recursive(node: Node, type: String, result: Array[Dictionary]) -> void:
|
|
55
|
+
if node.is_class(type):
|
|
56
|
+
result.append({"path": str(node.get_path()), "name": node.name})
|
|
57
|
+
for child in node.get_children():
|
|
58
|
+
_find_nodes_recursive(child, type, result)
|
|
@@ -56,7 +56,12 @@ func _session_stopped() -> void:
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
func has_active_session() -> bool:
|
|
59
|
-
|
|
59
|
+
if _active_session_id < 0:
|
|
60
|
+
return false
|
|
61
|
+
if not EditorInterface.is_playing_scene():
|
|
62
|
+
_active_session_id = -1
|
|
63
|
+
return false
|
|
64
|
+
return true
|
|
60
65
|
|
|
61
66
|
|
|
62
67
|
func request_screenshot(max_width: int = 1920) -> void:
|
package/addon/core/mcp_utils.gd
CHANGED
|
@@ -47,8 +47,12 @@ static func serialize_value(value: Variant) -> Variant:
|
|
|
47
47
|
match typeof(value):
|
|
48
48
|
TYPE_VECTOR2:
|
|
49
49
|
return {"x": value.x, "y": value.y}
|
|
50
|
+
TYPE_VECTOR2I:
|
|
51
|
+
return {"x": value.x, "y": value.y}
|
|
50
52
|
TYPE_VECTOR3:
|
|
51
53
|
return {"x": value.x, "y": value.y, "z": value.z}
|
|
54
|
+
TYPE_VECTOR3I:
|
|
55
|
+
return {"x": value.x, "y": value.y, "z": value.z}
|
|
52
56
|
TYPE_COLOR:
|
|
53
57
|
return {"r": value.r, "g": value.g, "b": value.b, "a": value.a}
|
|
54
58
|
TYPE_OBJECT:
|
package/addon/plugin.cfg
CHANGED
package/dist/core/types.d.ts
CHANGED
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,kBAAkB,CAAC;AAwFjF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GjB,CAAC;AAEH,eAAO,MAAM,WAAW,EAAe,iBAAiB,EAAE,CAAC"}
|
package/dist/tools/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA0BpD,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;SAC/J,QAAQ,CAAC,6IAA6I,CAAC;IAC1J,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4BAA4B,CAAC;IACzC,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mCAAmC,CAAC;IAChD,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,gFAAgF,CAAC;CAC9F,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;QAC/F;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,EACD,EAAE,OAAO,EAAE,iGAAiG,EAAE,CAC/G,CAAC;AAIJ,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,wMAAwM;IAC1M,MAAM,EAAE,YAAY;IACpB,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,EAAE,KAAK,EAAE;QACvC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAQnC,kBAAkB,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CACpC,oBAAoB,CACrB,CAAC;gBACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,OAAO,mBAAmB,CAAC;gBAC7B,CAAC;gBACD,OAAO,oBAAoB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtE,OAAO,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACnF,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACxC,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CACpC,kBAAkB,EAClB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAC/B,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClD,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBACD,OAAO,0BAA0B,MAAM,CAAC,MAAM,UAAU,CAAC;YAC3D,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAiBnC,yBAAyB,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CACpC,yBAAyB,EACzB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAC9B,CAAC;gBACF,OAAO,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CACpC,2BAA2B,EAC3B,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CACvD,CAAC;gBACF,OAAO,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAGnC,iBAAiB,EAAE;oBACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;iBACvB,CAAC,CAAC;gBACH,OAAO,8BAA8B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvI,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,CAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene3d.d.ts","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"scene3d.d.ts","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,kBAAkB,CAAC;AA2FnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyElB,CAAC;AAEH,eAAO,MAAM,YAAY,EAAgB,iBAAiB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene3d.js","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"scene3d.js","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"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"}
|