From 044f8dae4c485fec8acc3e1f2c668baa4d328a0a Mon Sep 17 00:00:00 2001 From: Raffaele Ragni Date: Sat, 13 Jul 2024 19:39:54 +0200 Subject: [PATCH] restate proper type --- src/server/initial_sync.rs | 11 ++++++++--- tests/component_sync.rs | 3 --- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/server/initial_sync.rs b/src/server/initial_sync.rs index 1c2dec8..9a7241f 100644 --- a/src/server/initial_sync.rs +++ b/src/server/initial_sync.rs @@ -1,10 +1,10 @@ use std::{any::TypeId, error::Error}; use crate::{ - binreflect::reflect_to_bin, lib_priv::SyncTrackerRes, networking::assets::SyncAssetTransfer, + binreflect::reflect_to_bin, lib_priv::{SkinnedMeshSyncMapper, SyncTrackerRes}, networking::assets::SyncAssetTransfer, proto::Message, SyncEntity, }; -use bevy::{prelude::*, render::mesh::skinning::SkinnedMesh, utils::HashSet}; +use bevy::{prelude::*, reflect::DynamicTypePath, render::mesh::skinning::SkinnedMesh, utils::HashSet}; use bevy_renet::renet::{ClientId, DefaultChannel, RenetServer}; use uuid::Uuid; @@ -92,6 +92,11 @@ fn check_entity_components(world: &World, result: &mut Vec) -> Result<( let entity = world.entity(arch_entity.id()); let e_id = entity.id(); let component = reflect_component.reflect(entity).ok_or("not registered")?; + let type_name = if component.type_id() == TypeId::of::() { + SkinnedMeshSyncMapper::default().reflect_type_path().to_string() + } else { + type_name.to_string() + }; let component = if component.type_id() == TypeId::of::() { debug!("Initial sync: Converting SkinnedMesh to SkinnedMeshSyncMapper"); let compo = track @@ -107,7 +112,7 @@ fn check_entity_components(world: &World, result: &mut Vec) -> Result<( if let Some(sid) = track.entity_to_uuid.get(&e_id) { result.push(Message::ComponentUpdated { id: *sid, - name: type_name.into(), + name: type_name, data: compo_bin, }); } diff --git a/tests/component_sync.rs b/tests/component_sync.rs index 66747f1..fad361f 100644 --- a/tests/component_sync.rs +++ b/tests/component_sync.rs @@ -322,11 +322,8 @@ fn test_skinned_mesh_component_from_initial() { for i in 0..4 { joints.push(world.spawn((SyncMark {}, Name::new(format!("{i}")))).id()); } - env.update(10); - let ib_handle = Uuid::new_v4(); let e_id = env.server.world_mut().spawn(SyncMark {}).id(); - env.update(4); let mut e = env.server.world_mut().entity_mut(e_id); e.insert(SkinnedMesh { inverse_bindposes: Handle::Weak(AssetId::Uuid { uuid: ib_handle }),