From f14cd281b7ecd66acb9022100700c89914fe49c1 Mon Sep 17 00:00:00 2001 From: XTRA Date: Sun, 11 Aug 2024 23:23:54 +0300 Subject: [PATCH] Fix #7 --- src/classes/manager.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/classes/manager.rs b/src/classes/manager.rs index 9b10349..b20ffb4 100644 --- a/src/classes/manager.rs +++ b/src/classes/manager.rs @@ -11,6 +11,7 @@ struct Manager { beat_count: i32, #[var] scenes: Array>, + current_scene: Option, instanced_scenes: Vec>, base: Base } @@ -22,6 +23,7 @@ impl INode for Manager { bgm: GString::from(""), beat_count: 0, scenes: Array::new(), + current_scene: None, instanced_scenes: Vec::new(), base, } @@ -43,7 +45,23 @@ impl INode for Manager { impl Manager { #[func] fn set_scene(&mut self, number: i32) { + let current_scene = self.current_scene; + let scene = self.instanced_scenes[number as usize].clone(); // Memory leak??? Idk + self.current_scene = Some(self.instanced_scenes[number as usize].get_index()); + let node: Option>; + match current_scene { + Some(_) => { + node = self.base_mut().get_child(current_scene.unwrap()); + match node { + Some(value) => { + value.upcast::().queue_free(); + } + None => {} + }; + } + None => {} + } self.base_mut().add_child(scene); }