aboutsummaryrefslogtreecommitdiff
path: root/crates/fparkan-runtime
diff options
context:
space:
mode:
Diffstat (limited to 'crates/fparkan-runtime')
-rw-r--r--crates/fparkan-runtime/src/lib.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/crates/fparkan-runtime/src/lib.rs b/crates/fparkan-runtime/src/lib.rs
index a80d58e..ab17d48 100644
--- a/crates/fparkan-runtime/src/lib.rs
+++ b/crates/fparkan-runtime/src/lib.rs
@@ -35,8 +35,8 @@ use fparkan_prototype::{
use fparkan_resource::{resource_name, CachedResourceRepository, ResourceRepository};
use fparkan_vfs::{Vfs, VfsError};
use fparkan_world::{
- construct_object, new as new_world, register_object, step, InputSnapshot, ObjectDraft,
- OriginalObjectId, World, WorldConfig, WorldSnapshot,
+ construct_object, new as new_world, register_object, set_transform, step, InputSnapshot,
+ ObjectDraft, OriginalObjectId, TransformState, World, WorldConfig, WorldSnapshot,
};
use std::num::NonZeroUsize;
use std::sync::Arc;
@@ -852,9 +852,18 @@ fn load_mission_with_options_and_progress(
let mut new_runtime_world = new_world(WorldConfig);
let mut handles = Vec::with_capacity(mission.objects.len());
record_load_phase(&mut trace, &mut on_phase, MissionLoadPhase::Construct);
- for (index, _object) in mission.objects.iter().enumerate() {
+ for (index, object) in mission.objects.iter().enumerate() {
let original_id = u32::try_from(index).ok().map(OriginalObjectId);
let handle = construct_object(&mut new_runtime_world, ObjectDraft { original_id })?;
+ set_transform(
+ &mut new_runtime_world,
+ handle,
+ TransformState {
+ position: object.position.map(f32::to_bits),
+ orientation: object.orientation.map(f32::to_bits),
+ scale: object.scale.map(f32::to_bits),
+ },
+ )?;
handles.push(handle);
}
trace.drafts_before_registration = handles.len();