From 77d38e4c1214af82b8e46d745ae411ff4592f603 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 18 Jul 2026 19:27:28 +0400 Subject: feat(world): retain mission transform state --- crates/fparkan-runtime/src/lib.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'crates/fparkan-runtime/src') 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(); -- cgit v1.2.3