@@ -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
5679func _reset () -> void
5780
0 commit comments