aboutsummaryrefslogtreecommitdiff
path: root/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs39
1 files changed, 3 insertions, 36 deletions
diff --git a/src/utils.rs b/src/utils.rs
index e4692bb..74451ae 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -3,9 +3,10 @@ use std::{fs, path::PathBuf};
use bevy::prelude::*;
use crate::{
- components::DirworldEntity, events::DirworldSpawn, payload::DirworldEntityPayload, resources::{DirworldCache, DirworldCodecs, DirworldObservers, EntryType}, Extensions
+ components::DirworldEntity, payload::DirworldEntityPayload, resources::DirworldCodecs, Extensions
};
+/// Extracts the binary payload from a file
pub fn extract_entity_payload(
path: &PathBuf,
codecs: &DirworldCodecs,
@@ -62,41 +63,7 @@ pub fn extract_entity_payload(
(payload, data)
}
-pub fn spawn_entity(
- entry: &PathBuf,
- cache: &mut DirworldCache,
- codecs: &DirworldCodecs,
- observers: &DirworldObservers,
- commands: &mut Commands,
-) {
- let (mut payload, data) = extract_entity_payload(&entry, &codecs);
- if let Some(cached_payload) = cache.remove(entry) {
- payload = Some(cached_payload);
- }
-
- let transform = payload.as_ref().map(|payload| payload.transform.clone()).unwrap_or_default();
- let entry_type = if entry.is_dir() {
- EntryType::Folder
- } else {
- EntryType::File(entry.extensions())
- };
- let entity = commands
- .spawn((
- SpatialBundle {
- transform: *transform,
- ..Default::default()
- },
- DirworldEntity {
- path: entry.clone(),
- payload,
- },
- ))
- .id();
- if let Some(observer) = observers.get(&entry_type) {
- commands.trigger_targets(DirworldSpawn { entity, data }, observer.clone());
- }
-}
-
+/// Despawns an entity corresponding to a path on the filesystem
pub fn despawn_entity_by_path(
commands: &mut Commands,
dirworld_entities: &Query<(Entity, &DirworldEntity)>,