Skip to content

Commit 4b23700

Browse files
committed
fix plugin reset + readme update
1 parent a275e27 commit 4b23700

File tree

5 files changed

+41
-17
lines changed

5 files changed

+41
-17
lines changed

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22

33
A FallGuys-like 3D platformer based on Fyrox Game Engine.
44

5+
![Fish Folly](pics/screenshot.png)
6+
57
## How to build
68

9+
Clone the repository at some folder, then you need **the latest** version of the engine
10+
[from GitHub](https://github.com/FyroxEngine/Fyrox), clone it near the game repository (or update to latest) and run
11+
one of the following commands.
12+
713
- `cargo run --package editor --release` - to run inside the editor (developer mode).
8-
- `cargo run --package executor -- release` - to run as standalone application.
14+
- `cargo run --package executor --release` - to run as standalone application.

data/scene.rgs

65.6 KB
Binary file not shown.

game/src/lib.rs

+33-16
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,39 @@ impl Game {
6363
}
6464
}
6565

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+
6691
fn set_scene(&mut self, scene: Handle<Scene>, context: PluginContext) {
6792
self.scene = scene;
6893

6994
if let Some(scene) = context.scenes.try_get_mut(self.scene) {
7095
scene.ambient_lighting_color = Color::opaque(200, 200, 200);
71-
}
7296

73-
Log::info("Scene was set successfully!".to_owned());
97+
Log::info("Scene was set successfully!".to_owned());
98+
}
7499
}
75100
}
76101

@@ -104,25 +129,17 @@ impl Plugin for Game {
104129
}
105130

106131
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();
108137
}
109138

110139
fn on_unload(&mut self, _context: &mut PluginContext) {}
111140

112141
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();
126143
}
127144

128145
fn id(&self) -> Uuid {

game/src/message.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use fyrox::{core::pool::Handle, scene::node::Node};
22

3+
#[derive(Debug)]
34
pub enum Message {
45
UnregisterTarget(Handle<Node>),
56
UnregisterActor(Handle<Node>),

pics/screenshot.png

119 KB
Loading

0 commit comments

Comments
 (0)