Network updates enabled

This commit is contained in:
Iaphetes 2025-11-09 12:18:42 +01:00
parent eafc7cfced
commit fc96a81424
3 changed files with 57 additions and 26 deletions

View file

@ -1,7 +1,7 @@
pub mod temporal_management;
use bevy::{
prelude::*,
render::{RenderPlugin, settings::WgpuSettings, view::Hdr},
render::{RenderPlugin, settings::WgpuSettings},
time::common_conditions::on_timer,
};
use bevy_matchbox::{matchbox_signaling::SignalingServer, prelude::*};
@ -14,8 +14,8 @@ use rand::{
distr::{Distribution, Uniform},
rng,
};
use rmp_serde::{Deserializer, Serializer};
use serde::{Deserialize, Serialize};
use rmp_serde::Serializer;
use serde::Serialize;
use std::{
collections::HashSet,
net::{Ipv4Addr, SocketAddrV4},
@ -25,6 +25,8 @@ use std::{
const CHANNEL_ID: usize = 0;
#[derive(Component)]
struct Changed;
#[derive(Component)]
struct Star;
fn main() {
App::new()
.add_plugins((DefaultPlugins.set(RenderPlugin {
@ -45,7 +47,10 @@ fn main() {
)
.add_systems(
Update,
(send_message.run_if(on_timer(Duration::from_secs(5))),),
(
move_stars,
send_message.run_if(on_timer(Duration::from_millis(100))),
),
)
.run();
}
@ -95,16 +100,7 @@ fn setup_scene(mut commands: Commands, mut socket: ResMut<MatchboxSocket>) {
transform: Transform::from_xyz(x as f32 / 100.0, z as f32 / 20000.0, z as f32 / 100.0),
};
commands.spawn((NetworkObject::Star(star_info), Changed));
let peers: Vec<_> = socket.connected_peers().collect();
for peer in peers {
let message = "Hello";
info!("Sending message: {message:?} to {peer}");
socket
.channel_mut(CHANNEL_ID)
.send(message.as_bytes().into(), peer);
}
commands.spawn((NetworkObject::Star(star_info), Changed, Star));
}
}
fn start_socket(mut commands: Commands) {
@ -115,7 +111,7 @@ fn start_socket(mut commands: Commands) {
fn send_message(mut socket: ResMut<MatchboxSocket>, network_objects: Query<&NetworkObject>) {
for (peer, state) in socket.update_peers() {
info!("{peer}: {state:?}");
// info!("{peer}: {state:?}");
}
let peers: Vec<_> = socket.connected_peers().collect();
@ -124,10 +120,24 @@ fn send_message(mut socket: ResMut<MatchboxSocket>, network_objects: Query<&Netw
for network_object in network_objects.iter() {
let mut ser_buf: Vec<u8> = Vec::new();
network_object.serialize(&mut Serializer::new(&mut ser_buf));
info!("Sending message: {ser_buf:?} to {peer}");
// info!("Sending message: {ser_buf:?} to {peer}");
socket
.channel_mut(CHANNEL_ID)
.send(ser_buf.as_slice().into(), peer);
}
}
}
fn move_stars(mut network_objects: Query<&mut NetworkObject, With<Star>>, time: Res<Time>) {
for mut no in network_objects.iter_mut() {
if let NetworkObject::Star(star) = no.as_mut() {
star.transform.rotate_around(
Vec3 {
x: 0.0,
y: 0.0,
z: 0.0,
},
Quat::from_rotation_y(time.delta_secs() * 0.05),
)
}
}
}