Skip to content

Commit fc4fed7

Browse files
committed
Add missing signals
1 parent 545a3b4 commit fc4fed7

File tree

5 files changed

+45
-18
lines changed

5 files changed

+45
-18
lines changed

addons/gaea/nodes/generator.gd

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ extends Node
88

99
## Emitted when [GaeaGraph] is changed.
1010
signal data_changed
11-
@warning_ignore("unused_signal")
11+
## Emitted when the graph is about to generate.
12+
signal about_to_generate
1213
## Emitted when the graph is done with the generation.
14+
@warning_ignore("unused_signal")
1315
signal generation_finished(grid: GaeaGrid)
1416
## Emitted when this generator wants to trigger a reset. See [method GaeaRenderer._reset].
1517
signal reset_requested
@@ -39,6 +41,7 @@ signal area_erased(area: AABB)
3941
## Start the generaton process. First resets the current generation, then generates the whole
4042
## [member world_size].
4143
func generate() -> void:
44+
about_to_generate.emit()
4245
if random_seed_on_generate:
4346
seed = randi()
4447
request_reset()

addons/gaea/nodes/renderers/gridmap_renderer.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func _render(grid: GaeaGrid) -> void:
3131
grid_maps[layer_idx].set_cell_item(cell, value.item_idx)
3232

3333

34-
func _on_area_erased(area: AABB) -> void:
34+
func _erase_area(area: AABB) -> void:
3535
for x in range(area.position.x, area.end.x):
3636
for y in range(area.position.y, area.end.y):
3737
for z in range(area.position.z, area.end.z):

addons/gaea/nodes/renderers/renderer.gd

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,23 @@ extends Node
88
## This is an abstract class. On its own, it doesn't do anything,
99
## but it can be extended to customize the way your generation will be rendered.
1010

11+
## Emitted when the node is done with rendering an area.
12+
signal render_finished
13+
## Emitted when [method reset] is called.
14+
signal render_reset
15+
## Emitted when an area of the render has been erased.
16+
signal area_erased(area: AABB)
1117

1218
## Will render this [GaeaGenerator]'s generation results.
1319
@export var generator: GaeaGenerator :
1420
set(value):
1521
if is_instance_valid(generator):
16-
if generator.generation_finished.is_connected(_render):
17-
generator.generation_finished.disconnect(_render)
18-
if generator.area_erased.is_connected(_on_area_erased):
19-
generator.area_erased.disconnect(_on_area_erased)
20-
if generator.reset_requested.is_connected(_reset):
21-
generator.reset_requested.disconnect(_reset)
22+
if generator.generation_finished.is_connected(render):
23+
generator.generation_finished.disconnect(render)
24+
if generator.area_erased.is_connected(erase_area):
25+
generator.area_erased.disconnect(erase_area)
26+
if generator.reset_requested.is_connected(reset):
27+
generator.reset_requested.disconnect(reset)
2228
generator = value
2329
_connect_signals()
2430

@@ -32,12 +38,29 @@ func _connect_signals() -> void:
3238
if not is_instance_valid(generator):
3339
return
3440

35-
if not generator.generation_finished.is_connected(_render):
36-
generator.generation_finished.connect(_render)
37-
if not generator.area_erased.is_connected(_on_area_erased):
38-
generator.area_erased.connect(_on_area_erased)
39-
if not generator.reset_requested.is_connected(_reset):
40-
generator.reset_requested.connect(_reset)
41+
if not generator.generation_finished.is_connected(render):
42+
generator.generation_finished.connect(render)
43+
if not generator.area_erased.is_connected(erase_area):
44+
generator.area_erased.connect(erase_area)
45+
if not generator.reset_requested.is_connected(reset):
46+
generator.reset_requested.connect(reset)
47+
48+
49+
## Public version of [method _render].
50+
func render(grid: GaeaGrid) -> void:
51+
_render(grid)
52+
render_finished.emit()
53+
54+
55+
## Public version of [method _reset].
56+
func reset() -> void:
57+
_reset()
58+
render_reset.emit()
59+
60+
61+
func erase_area(area: AABB) -> void:
62+
_erase_area(area)
63+
area_erased.emit(area)
4164

4265

4366
## Should be overridden with custom behavior for rendering the [param grid].
@@ -47,11 +70,11 @@ func _render(_grid: GaeaGrid) -> void
4770

4871
## Should be overridden with custom behavior for erasing the rendered [param area].
4972
@abstract
50-
func _on_area_erased(_area: AABB) -> void
73+
func _erase_area(_area: AABB) -> void
5174

5275

53-
## Should be overridden with custom behavior to clear/_reset the previously-rendered generation.
54-
## Should return the _render to a 'default' state.
76+
## Should be overridden with custom behavior to clear/reset the previously-rendered generation.
77+
## Should return the render to a 'default' state.
5578
@abstract
5679
func _reset() -> void
5780

addons/gaea/nodes/renderers/tilemap_renderer.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func _render(grid: GaeaGrid) -> void:
4343
)
4444

4545

46-
func _on_area_erased(area: AABB) -> void:
46+
func _erase_area(area: AABB) -> void:
4747
for x in range(area.position.x, area.end.x):
4848
for y in range(area.position.y, area.end.y):
4949
for layer in tile_map_layers:

testing/rendering/tilemap_renderer_test.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ func before() -> void:
1919
func test_full_area() -> void:
2020
scene.generator.generate()
2121
await scene.generator.generation_finished
22+
await scene.renderer.render_finished
2223

2324
var grass_hash: int = scene.renderer.tile_map_layers[0].get_used_cells_by_id(0, Vector2i(0, 0)).hash()
2425
assert_int(grass_hash)\

0 commit comments

Comments
 (0)