summaryrefslogtreecommitdiff
path: root/src/scene.rs
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2026-10-26 10:51:49 -0400
committerMica White <botahamec@outlook.com>2026-10-26 10:51:49 -0400
commit0c128e472b1b49e32c313874eaeccc8c5f1b1202 (patch)
tree2ce06455440e85ec3387f7348b7bd69bf2119634 /src/scene.rs
parentc687e2aba30ca231b03288108b632f1bad464028 (diff)
Finish engineHEADmain
Diffstat (limited to 'src/scene.rs')
-rw-r--r--src/scene.rs58
1 files changed, 2 insertions, 56 deletions
diff --git a/src/scene.rs b/src/scene.rs
index 807628d..aa4a443 100644
--- a/src/scene.rs
+++ b/src/scene.rs
@@ -1,5 +1,3 @@
-use std::path::Path;
-
use rustc_hash::FxHashSet;
use serde::{Deserialize, Serialize};
@@ -11,14 +9,7 @@ use crate::{
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Scene {
pub name: Box<str>,
- pub preload_scenes: Box<[usize]>,
- pub scripts: ResourceRequirements,
-}
-
-#[derive(Debug, Clone, Default, Serialize, Deserialize)]
-pub struct ResourceRequirements {
- pub required: Box<[usize]>,
- pub preload: Box<[usize]>,
+ pub scripts: Vec<usize>,
}
pub fn scene_id_by_name(scenes: &[Scene], name: &str) -> Option<usize> {
@@ -31,34 +22,6 @@ pub fn scene_id_by_name(scenes: &[Scene], name: &str) -> Option<usize> {
None
}
-pub fn preload_scene(
- scenes: &[Scene],
- scripts: &mut ScriptManager,
- files: &mut FileManager,
- wasm_runner: &WasmRunner,
- id: usize,
-) {
- let scene = &scenes[id];
- for script in &scene.scripts.required {
- scripts.preload_script(*script, files, wasm_runner);
- }
-}
-
-pub fn is_scene_loaded(
- scenes: &[Scene],
- scripts: &ScriptManager,
- loaded_files: &[Box<Path>],
- id: usize,
-) -> bool {
- let scene = &scenes[id];
- scene
- .scripts
- .required
- .iter()
- .cloned()
- .all(|script_id| scripts.is_script_loaded(script_id, loaded_files))
-}
-
pub fn switch_scenes(
scripts: &mut ScriptManager,
context: &mut ScriptContext<'_>,
@@ -77,25 +40,8 @@ pub fn switch_scenes(
let mut needed_scripts = FxHashSet::default();
let scene = &context.manifest.scenes[new];
- for script_id in &scene.scripts.required {
+ for script_id in &scene.scripts {
needed_scripts.insert(*script_id);
scripts.activate_script(*script_id, context, wasm_runner, files);
}
- for script_id in &scene.scripts.preload {
- needed_scripts.insert(*script_id);
- scripts.preload_script(*script_id, files, wasm_runner);
- }
- for scene_to_preload in &scene.preload_scenes {
- let scene_to_preload = &context.manifest.scenes[*scene_to_preload];
- for script_id in &scene_to_preload.scripts.required {
- needed_scripts.insert(*script_id);
- scripts.preload_script(*script_id, files, wasm_runner);
- }
- }
-
- let active_scripts: FxHashSet<usize> = active_scripts.iter().cloned().collect();
- let unneeded_scripts = active_scripts.difference(&needed_scripts);
- for script_id in unneeded_scripts {
- scripts.unload_script(*script_id, files);
- }
}