Skip to content

Commit 9aaf6ef

Browse files
committed
Fix rendering nested trees
1 parent 081c04a commit 9aaf6ef

File tree

7 files changed

+40
-31
lines changed

7 files changed

+40
-31
lines changed

src/main/kotlin/com/tomwyr/generator/Renderer.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class NodeTreeRenderer {
3939

4040
val renderNodeHeader = { type: String ->
4141
"""
42-
|class ${scene.name}Scene(path: String) : NodeRef<${type}>("$nodePath", "$type")
42+
|class ${scene.name}Scene(private val path: String) : NodeRef<${type}>("$nodePath", "$type")
4343
""".trimMargin()
4444
}
4545

@@ -59,7 +59,7 @@ class NodeTreeRenderer {
5959

6060
is NestedScene -> {
6161
"""
62-
|class ${scene.name}Scene(path: String) : ${root.scene}Scene(path)
62+
|class ${scene.name}Scene(private val path: String) : ${root.scene}Scene(path)
6363
""".trimMargin()
6464
}
6565
}
@@ -79,7 +79,8 @@ class NodeTreeRenderer {
7979
val children = node.children.map { renderNode(it, nodePath) }.joinLines().indentLine()
8080

8181
"""
82-
|val $symbolName = object : NodeRef<${node.type}>("$nodePath", "${node.type}") {
82+
|val $symbolName = ${symbolName}Tree()
83+
|inner class ${symbolName}Tree : NodeRef<${node.type}>("$nodePath", "${node.type}") {
8384
| $children
8485
|}
8586
""".trimMargin()

src/test/resources/dodge-the-creeps/Expected

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,36 @@ object GDTree {
1111
val Player = PlayerScene("/root")
1212
}
1313

14-
class HUDScene(path: String) : NodeRef<CanvasLayer>("$path/HUD", "CanvasLayer") {
14+
class HUDScene(private val path: String) : NodeRef<CanvasLayer>("$path/HUD", "CanvasLayer") {
1515
val ScoreLabel = NodeRef<Label>("$path/HUD/ScoreLabel", "Label")
1616
val MessageLabel = NodeRef<Label>("$path/HUD/MessageLabel", "Label")
1717
val StartButton = NodeRef<Button>("$path/HUD/StartButton", "Button")
1818
val MessageTimer = NodeRef<Timer>("$path/HUD/MessageTimer", "Timer")
1919
}
2020

21-
class MainScene(path: String) : NodeRef<Node>("$path/Main", "Node") {
21+
class MainScene(private val path: String) : NodeRef<Node>("$path/Main", "Node") {
2222
val ColorRect = NodeRef<ColorRect>("$path/Main/ColorRect", "ColorRect")
2323
val Player = PlayerScene("$path/Main/Player")
2424
val MobTimer = NodeRef<Timer>("$path/Main/MobTimer", "Timer")
2525
val ScoreTimer = NodeRef<Timer>("$path/Main/ScoreTimer", "Timer")
2626
val StartTimer = NodeRef<Timer>("$path/Main/StartTimer", "Timer")
2727
val StartPosition = NodeRef<Marker2D>("$path/Main/StartPosition", "Marker2D")
28-
val MobPath = object : NodeRef<Path2D>("$path/Main/MobPath", "Path2D") {
28+
val MobPath = MobPathTree()
29+
inner class MobPathTree : NodeRef<Path2D>("$path/Main/MobPath", "Path2D") {
2930
val MobSpawnLocation = NodeRef<PathFollow2D>("$path/Main/MobPath/MobSpawnLocation", "PathFollow2D")
3031
}
3132
val HUD = HUDScene("$path/Main/HUD")
3233
val Music = NodeRef<AudioStreamPlayer>("$path/Main/Music", "AudioStreamPlayer")
3334
val DeathSound = NodeRef<AudioStreamPlayer>("$path/Main/DeathSound", "AudioStreamPlayer")
34-
val ColorAnimator = NodeRef<Node2D>("$path/Main/ColorAnimator", "Node2D")
3535
}
3636

37-
class MobScene(path: String) : NodeRef<RigidBody2D>("$path/Mob", "RigidBody2D") {
37+
class MobScene(private val path: String) : NodeRef<RigidBody2D>("$path/Mob", "RigidBody2D") {
3838
val AnimatedSprite2D = NodeRef<AnimatedSprite2D>("$path/Mob/AnimatedSprite2D", "AnimatedSprite2D")
3939
val CollisionShape2D = NodeRef<CollisionShape2D>("$path/Mob/CollisionShape2D", "CollisionShape2D")
4040
val VisibleOnScreenNotifier2D = NodeRef<VisibleOnScreenNotifier2D>("$path/Mob/VisibleOnScreenNotifier2D", "VisibleOnScreenNotifier2D")
4141
}
4242

43-
class PlayerScene(path: String) : NodeRef<Area2D>("$path/Player", "Area2D") {
43+
class PlayerScene(private val path: String) : NodeRef<Area2D>("$path/Player", "Area2D") {
4444
val AnimatedSprite2D = NodeRef<AnimatedSprite2D>("$path/Player/AnimatedSprite2D", "AnimatedSprite2D")
4545
val CollisionShape2D = NodeRef<CollisionShape2D>("$path/Player/CollisionShape2D", "CollisionShape2D")
4646
val Trail = NodeRef<GPUParticles2D>("$path/Player/Trail", "GPUParticles2D")

src/test/resources/dodge-the-creeps/scenes/Main.tscn

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
[ext_resource type="PackedScene" uid="uid://ccqoreueuxdb7" path="res://HUD.tscn" id="4"]
77
[ext_resource type="AudioStream" uid="uid://q2pf4fr8d0ks" path="res://art/House In a Forest Loop.ogg" id="5"]
88
[ext_resource type="AudioStream" uid="uid://dw26fpygeag8o" path="res://art/gameover.wav" id="6"]
9-
[ext_resource type="Script" path="res://ColorAnimator.gdj" id="7_ipom3"]
109

1110
[sub_resource type="Curve2D" id="1"]
1211
_data = {
@@ -53,9 +52,6 @@ stream = ExtResource("5")
5352
[node name="DeathSound" type="AudioStreamPlayer" parent="."]
5453
stream = ExtResource("6")
5554

56-
[node name="ColorAnimator" type="Node2D" parent="."]
57-
script = ExtResource("7_ipom3")
58-
5955
[connection signal="hit" from="Player" to="." method="game_over"]
6056
[connection signal="timeout" from="MobTimer" to="." method="_on_MobTimer_timeout"]
6157
[connection signal="timeout" from="ScoreTimer" to="." method="_on_ScoreTimer_timeout"]

src/test/resources/physics-test/Expected

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,22 @@ object GDTree {
88
val Main = MainScene("/root")
99
}
1010

11-
class MainScene(path: String) : NodeRef<Control>("$path/Main", "Control") {
11+
class MainScene(private val path: String) : NodeRef<Control>("$path/Main", "Control") {
1212
val TestsMenu = NodeRef<MenuButton>("$path/Main/TestsMenu", "MenuButton")
1313
val LabelControls = NodeRef<Label>("$path/Main/LabelControls", "Label")
1414
val LabelFPS = NodeRef<Label>("$path/Main/LabelFPS", "Label")
1515
val LabelEngine = NodeRef<Label>("$path/Main/LabelEngine", "Label")
1616
val LabelVersion = NodeRef<Label>("$path/Main/LabelVersion", "Label")
1717
val LabelTest = NodeRef<Label>("$path/Main/LabelTest", "Label")
1818
val LabelPause = NodeRef<Label>("$path/Main/LabelPause", "Label")
19-
val PanelLog = object : NodeRef<Panel>("$path/Main/PanelLog", "Panel") {
19+
val PanelLog = PanelLogTree()
20+
inner class PanelLogTree : NodeRef<Panel>("$path/Main/PanelLog", "Panel") {
2021
val ButtonClear = NodeRef<Button>("$path/Main/PanelLog/ButtonClear", "Button")
2122
val CheckBoxScroll = NodeRef<CheckButton>("$path/Main/PanelLog/CheckBoxScroll", "CheckButton")
22-
val ScrollLog = object : NodeRef<ScrollContainer>("$path/Main/PanelLog/ScrollLog", "ScrollContainer") {
23-
val VBoxLog = object : NodeRef<VBoxContainer>("$path/Main/PanelLog/ScrollLog/VBoxLog", "VBoxContainer") {
23+
val ScrollLog = ScrollLogTree()
24+
inner class ScrollLogTree : NodeRef<ScrollContainer>("$path/Main/PanelLog/ScrollLog", "ScrollContainer") {
25+
val VBoxLog = VBoxLogTree()
26+
inner class VBoxLogTree : NodeRef<VBoxContainer>("$path/Main/PanelLog/ScrollLog/VBoxLog", "VBoxContainer") {
2427
val LabelLog = NodeRef<Label>("$path/Main/PanelLog/ScrollLog/VBoxLog/LabelLog", "Label")
2528
}
2629
}

src/test/resources/scene-changer/Expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ object GDTree {
99
val SceneB = SceneBScene("/root")
1010
}
1111

12-
class SceneAScene(path: String) : NodeRef<Panel>("$path/SceneA", "Panel") {
12+
class SceneAScene(private val path: String) : NodeRef<Panel>("$path/SceneA", "Panel") {
1313
val Label = NodeRef<Label>("$path/SceneA/Label", "Label")
1414
val GoToScene = NodeRef<Button>("$path/SceneA/GoToScene", "Button")
1515
}
1616

17-
class SceneBScene(path: String) : NodeRef<Panel>("$path/SceneB", "Panel") {
17+
class SceneBScene(private val path: String) : NodeRef<Panel>("$path/SceneB", "Panel") {
1818
val Label = NodeRef<Label>("$path/SceneB/Label", "Label")
1919
val GoToScene = NodeRef<Button>("$path/SceneB/GoToScene", "Button")
2020
}

src/test/resources/simple/Expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ object GDTree {
88
val Main = MainScene("/root")
99
}
1010

11-
class MainScene(path: String) : NodeRef<GridContainer>("$path/Root", "GridContainer") {
11+
class MainScene(private val path: String) : NodeRef<GridContainer>("$path/Root", "GridContainer") {
1212
val KotlinGDJ = NodeRef<Label>("$path/Root/Kotlin GDJ", "Label")
1313
val JavaGDJ = NodeRef<Label>("$path/Root/Java GDJ", "Label")
1414
val KotlinSource = NodeRef<Label>("$path/Root/Kotlin source", "Label")

src/test/resources/waypoints/Expected

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,46 @@ object GDTree {
99
val Waypoint = WaypointScene("/root")
1010
}
1111

12-
class MainScene(path: String) : NodeRef<Node3D>("$path/Main", "Node3D") {
13-
val BlueCube = object : NodeRef<MeshInstance3D>("$path/Main/BlueCube", "MeshInstance3D") {
14-
val WaypointAnchor = object : NodeRef<Marker3D>("$path/Main/BlueCube/WaypointAnchor", "Marker3D") {
12+
class MainScene(private val path: String) : NodeRef<Node3D>("$path/Main", "Node3D") {
13+
val BlueCube = BlueCubeTree()
14+
inner class BlueCubeTree : NodeRef<MeshInstance3D>("$path/Main/BlueCube", "MeshInstance3D") {
15+
val WaypointAnchor = WaypointAnchorTree()
16+
inner class WaypointAnchorTree : NodeRef<Marker3D>("$path/Main/BlueCube/WaypointAnchor", "Marker3D") {
1517
val Waypoint = WaypointScene("$path/Main/BlueCube/WaypointAnchor/Waypoint")
1618
}
1719
}
18-
val GreenCube = object : NodeRef<MeshInstance3D>("$path/Main/GreenCube", "MeshInstance3D") {
19-
val WaypointAnchor = object : NodeRef<Marker3D>("$path/Main/GreenCube/WaypointAnchor", "Marker3D") {
20+
val GreenCube = GreenCubeTree()
21+
inner class GreenCubeTree : NodeRef<MeshInstance3D>("$path/Main/GreenCube", "MeshInstance3D") {
22+
val WaypointAnchor = WaypointAnchorTree()
23+
inner class WaypointAnchorTree : NodeRef<Marker3D>("$path/Main/GreenCube/WaypointAnchor", "Marker3D") {
2024
val Waypoint = WaypointScene("$path/Main/GreenCube/WaypointAnchor/Waypoint")
2125
}
2226
}
23-
val YellowCube = object : NodeRef<MeshInstance3D>("$path/Main/YellowCube", "MeshInstance3D") {
24-
val WaypointAnchor = object : NodeRef<Marker3D>("$path/Main/YellowCube/WaypointAnchor", "Marker3D") {
27+
val YellowCube = YellowCubeTree()
28+
inner class YellowCubeTree : NodeRef<MeshInstance3D>("$path/Main/YellowCube", "MeshInstance3D") {
29+
val WaypointAnchor = WaypointAnchorTree()
30+
inner class WaypointAnchorTree : NodeRef<Marker3D>("$path/Main/YellowCube/WaypointAnchor", "Marker3D") {
2531
val Waypoint = WaypointScene("$path/Main/YellowCube/WaypointAnchor/Waypoint")
2632
}
2733
}
28-
val RedCube = object : NodeRef<MeshInstance3D>("$path/Main/RedCube", "MeshInstance3D") {
29-
val WaypointAnchor = object : NodeRef<Marker3D>("$path/Main/RedCube/WaypointAnchor", "Marker3D") {
34+
val RedCube = RedCubeTree()
35+
inner class RedCubeTree : NodeRef<MeshInstance3D>("$path/Main/RedCube", "MeshInstance3D") {
36+
val WaypointAnchor = WaypointAnchorTree()
37+
inner class WaypointAnchorTree : NodeRef<Marker3D>("$path/Main/RedCube/WaypointAnchor", "Marker3D") {
3038
val Waypoint = WaypointScene("$path/Main/RedCube/WaypointAnchor/Waypoint")
3139
}
3240
}
3341
val Camera3D = NodeRef<Camera3D>("$path/Main/Camera3D", "Camera3D")
3442
val Label = NodeRef<Label>("$path/Main/Label", "Label")
3543
val Ground = NodeRef<MeshInstance3D>("$path/Main/Ground", "MeshInstance3D")
3644
val WhiteCube = NodeRef<MeshInstance3D>("$path/Main/WhiteCube", "MeshInstance3D")
37-
val Environment = object : NodeRef<WorldEnvironment>("$path/Main/Environment", "WorldEnvironment") {
45+
val Environment = EnvironmentTree()
46+
inner class EnvironmentTree : NodeRef<WorldEnvironment>("$path/Main/Environment", "WorldEnvironment") {
3847
val Sun = NodeRef<DirectionalLight3D>("$path/Main/Environment/Sun", "DirectionalLight3D")
3948
}
4049
}
4150

42-
class WaypointScene(path: String) : NodeRef<Control>("$path/Waypoint", "Control") {
51+
class WaypointScene(private val path: String) : NodeRef<Control>("$path/Waypoint", "Control") {
4352
val Label = NodeRef<Label>("$path/Waypoint/Label", "Label")
4453
val Marker = NodeRef<TextureRect>("$path/Waypoint/Marker", "TextureRect")
4554
}

0 commit comments

Comments
 (0)