@@ -63,14 +63,39 @@ impl Game {
63
63
}
64
64
}
65
65
66
+ fn reset ( & mut self ) {
67
+ self . actors . clear ( ) ;
68
+ self . start_points . clear ( ) ;
69
+ self . targets . clear ( ) ;
70
+
71
+ // Clear pending messages.
72
+ while self . message_receiver . try_recv ( ) . is_ok ( ) { }
73
+ }
74
+
75
+ fn poll_messages ( & mut self ) {
76
+ while let Ok ( message) = self . message_receiver . try_recv ( ) {
77
+ match dbg ! ( message) {
78
+ Message :: UnregisterTarget ( target) => {
79
+ assert ! ( self . targets. remove( & target) ) ;
80
+ }
81
+ Message :: UnregisterActor ( actor) => {
82
+ assert ! ( self . actors. remove( & actor) ) ;
83
+ }
84
+ Message :: UnregisterStartPoint ( start_point) => {
85
+ assert ! ( self . start_points. remove( & start_point) ) ;
86
+ }
87
+ }
88
+ }
89
+ }
90
+
66
91
fn set_scene ( & mut self , scene : Handle < Scene > , context : PluginContext ) {
67
92
self . scene = scene;
68
93
69
94
if let Some ( scene) = context. scenes . try_get_mut ( self . scene ) {
70
95
scene. ambient_lighting_color = Color :: opaque ( 200 , 200 , 200 ) ;
71
- }
72
96
73
- Log :: info ( "Scene was set successfully!" . to_owned ( ) ) ;
97
+ Log :: info ( "Scene was set successfully!" . to_owned ( ) ) ;
98
+ }
74
99
}
75
100
}
76
101
@@ -104,25 +129,17 @@ impl Plugin for Game {
104
129
}
105
130
106
131
fn on_leave_play_mode ( & mut self , context : PluginContext ) {
107
- self . set_scene ( Handle :: NONE , context)
132
+ self . set_scene ( Handle :: NONE , context) ;
133
+ }
134
+
135
+ fn on_left_play_mode ( & mut self , context : PluginContext ) {
136
+ self . reset ( ) ;
108
137
}
109
138
110
139
fn on_unload ( & mut self , _context : & mut PluginContext ) { }
111
140
112
141
fn update ( & mut self , _context : & mut PluginContext ) {
113
- while let Ok ( message) = self . message_receiver . try_recv ( ) {
114
- match message {
115
- Message :: UnregisterTarget ( target) => {
116
- assert ! ( self . targets. remove( & target) ) ;
117
- }
118
- Message :: UnregisterActor ( actor) => {
119
- assert ! ( self . actors. remove( & actor) ) ;
120
- }
121
- Message :: UnregisterStartPoint ( start_point) => {
122
- assert ! ( self . start_points. remove( & start_point) ) ;
123
- }
124
- }
125
- }
142
+ self . poll_messages ( ) ;
126
143
}
127
144
128
145
fn id ( & self ) -> Uuid {
0 commit comments