diff --git a/examples/client.rs b/examples/client.rs index cbb0147..fc6d57e 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -13,12 +13,13 @@ fn main() { let ip = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)); let port = 4000; + let web_port = 4001; let mut client = App::new(); client.add_plugins(DefaultPlugins); client.add_plugins(bevy_editor_pls::EditorPlugin::default()); client.add_plugins(SyncPlugin); - client.add_plugins(ClientPlugin { ip, port }); + client.add_plugins(ClientPlugin { ip, port, web_port }); client.sync_component::(); client.sync_component::(); diff --git a/src/client/track.rs b/src/client/track.rs index 08d422e..bf07566 100644 --- a/src/client/track.rs +++ b/src/client/track.rs @@ -36,7 +36,7 @@ pub(crate) fn entity_parented_on_client( ) { for (p, sup) in query.iter() { let Ok(parent) = query_parent.get_component::(p.get()) else { - return; + continue; }; client.send_message( DefaultChannel::ReliableOrdered, @@ -81,7 +81,7 @@ pub(crate) fn react_on_changed_components( let registry = registry.read(); while let Some(change) = track.changed_components_to_send.pop_front() { let Ok(bin) = compo_to_bin(change.data.as_reflect(), ®istry) else { - break; + continue; }; client.send_message( DefaultChannel::ReliableOrdered, @@ -107,16 +107,16 @@ pub(crate) fn react_on_changed_materials( match event { AssetEvent::Added { id } | AssetEvent::Modified { id } => { let Some(material) = materials.get(*id) else { - break; + continue; }; let AssetId::Uuid { uuid: id } = id else { - break; + continue; }; if track.skip_network_handle_change(*id) { - break; + continue; } let Ok(bin) = compo_to_bin(material.as_reflect(), ®istry) else { - break; + continue; }; client.send_message( DefaultChannel::ReliableOrdered, @@ -143,13 +143,13 @@ pub(crate) fn react_on_changed_meshes( match event { AssetEvent::Added { id } | AssetEvent::Modified { id } => { let Some(mesh) = assets.get(*id) else { - return; + continue; }; let AssetId::Uuid { uuid: id } = id else { - return; + continue; }; if track.skip_network_handle_change(*id) { - return; + continue; } client.send_message( DefaultChannel::ReliableOrdered, diff --git a/src/lib.rs b/src/lib.rs index 331d68b..8183af8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -62,12 +62,13 @@ pub struct SyncPlugin; pub struct ServerPlugin { pub ip: IpAddr, pub port: u16, - pub web_port: u16 + pub web_port: u16, } pub struct ClientPlugin { pub ip: IpAddr, pub port: u16, + pub web_port: u16, } pub trait SyncComponent { diff --git a/src/lib_priv.rs b/src/lib_priv.rs index ea934ab..fd5dd73 100644 --- a/src/lib_priv.rs +++ b/src/lib_priv.rs @@ -231,6 +231,7 @@ impl Plugin for SyncPlugin { impl Plugin for ServerPlugin { fn build(&self, app: &mut App) { crate::networking::setup_server(app, self.ip, self.port); + crate::networking::assets::setup_server(app, self.ip, self.web_port); app.add_plugins(ServerSyncPlugin); } } @@ -238,6 +239,7 @@ impl Plugin for ServerPlugin { impl Plugin for ClientPlugin { fn build(&self, app: &mut App) { crate::networking::setup_client(app, self.ip, self.port); + crate::networking::assets::setup_client(app, self.ip, self.web_port); app.add_plugins(ClientSyncPlugin); } } diff --git a/src/networking/assets.rs b/src/networking/assets.rs new file mode 100644 index 0000000..65ced63 --- /dev/null +++ b/src/networking/assets.rs @@ -0,0 +1,7 @@ +use bevy::prelude::*; + +pub(crate) fn setup_client(app: &mut App, ip: std::net::IpAddr, web_port: u16) { +} + +pub(crate) fn setup_server(app: &mut App, ip: std::net::IpAddr, web_port: u16) { +} diff --git a/src/networking.rs b/src/networking/mod.rs similarity index 99% rename from src/networking.rs rename to src/networking/mod.rs index ef5dcb0..67e759e 100644 --- a/src/networking.rs +++ b/src/networking/mod.rs @@ -1,3 +1,5 @@ +pub mod assets; + use std::{ net::{IpAddr, SocketAddr, UdpSocket}, time::SystemTime, diff --git a/src/server/initial_sync.rs b/src/server/initial_sync.rs index 7253ba6..c1ebc20 100644 --- a/src/server/initial_sync.rs +++ b/src/server/initial_sync.rs @@ -89,7 +89,7 @@ fn check_entity_components(world: &World, result: &mut Vec) -> Result<( let entity = world.entity(arch_entity.entity()); let e_id = entity.id(); let component = reflect_component.reflect(entity).ok_or("not registered")?; - let Ok(compo_bin) = compo_to_bin(component.as_reflect(), ®istry) else {break}; + let Ok(compo_bin) = compo_to_bin(component.as_reflect(), ®istry) else {continue}; result.push(Message::ComponentUpdated { id: e_id, name: type_name.into(), @@ -145,7 +145,7 @@ fn check_materials(world: &World, result: &mut Vec) -> Result<(), Box { let Some(material) = materials.get(*id) else { - return; + continue; }; let AssetId::Uuid { uuid: id } = id else { - return; + continue; }; if track.skip_network_handle_change(*id) { - return; + continue; } let Ok(bin) = compo_to_bin(material.as_reflect(), ®istry) else { - break; + continue; }; let msg = &Message::StandardMaterialUpdated { id: *id, @@ -187,13 +187,13 @@ pub(crate) fn react_on_changed_meshes( match event { AssetEvent::Added { id } | AssetEvent::Modified { id } => { let Some(mesh) = assets.get(*id) else { - return; + continue; }; let AssetId::Uuid { uuid: id } = id else { - return; + continue; }; if track.skip_network_handle_change(*id) { - return; + continue; } for cid in server.clients_id().into_iter() { server.send_message( diff --git a/tests/setup/mod.rs b/tests/setup/mod.rs index 5a8f37e..5323c89 100644 --- a/tests/setup/mod.rs +++ b/tests/setup/mod.rs @@ -173,6 +173,7 @@ fn connect_envs(env: &TestRun, sapp: &mut App, capps: &mut Vec) -> Result<( capp.add_plugins(ClientPlugin { ip: env.ip, port: env.port, + web_port: env.web_port, }); wait_until_connected(sapp, capp, env.startup_max_wait_updates)?;