Send syncs every physics_tick
This commit is contained in:
parent
9769e7f91a
commit
fcda202c49
@ -225,51 +225,47 @@ impl INode for Game {
|
||||
}
|
||||
|
||||
fn physics_process(&mut self, delta: f64) {
|
||||
self.since_last_sync += delta;
|
||||
if self.since_last_sync > (1. / 60.) {
|
||||
self.since_last_sync = 0.;
|
||||
if let Some(_) = self.current_map {
|
||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
|
||||
match peer {
|
||||
PeerKind::Client(peer, socket_addr) => {
|
||||
if let Some(player) = self
|
||||
.players
|
||||
.iter()
|
||||
.find(|p| p.id() == self.self_id.unwrap_or(0))
|
||||
{
|
||||
if let Some(data) = &player.get_self_sync() {
|
||||
peer.send_unreliable(socket_addr, SelfSync(data.clone()));
|
||||
}
|
||||
if let Some(_) = self.current_map {
|
||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
|
||||
match peer {
|
||||
PeerKind::Client(peer, socket_addr) => {
|
||||
if let Some(player) = self
|
||||
.players
|
||||
.iter()
|
||||
.find(|p| p.id() == self.self_id.unwrap_or(0))
|
||||
{
|
||||
if let Some(data) = &player.get_self_sync() {
|
||||
peer.send_unreliable(socket_addr, SelfSync(data.clone()));
|
||||
}
|
||||
}
|
||||
PeerKind::Server(peer, _) => {
|
||||
let mut sync_data = HashMap::new();
|
||||
for player in &self.players {
|
||||
if let Some(character) = &player.character {
|
||||
if character.dyn_bind().is_dead() {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if let (Some(dir), Some(look_up), Some(transform)) = (
|
||||
player.get_move_dir(),
|
||||
player.get_look_up(),
|
||||
player.get_transform(),
|
||||
) {
|
||||
sync_data.insert(
|
||||
player.id(),
|
||||
SyncPackage {
|
||||
movement_direction: dir,
|
||||
look_up,
|
||||
transform,
|
||||
},
|
||||
);
|
||||
}
|
||||
PeerKind::Server(peer, _) => {
|
||||
let mut sync_data = HashMap::new();
|
||||
for player in &self.players {
|
||||
if let Some(character) = &player.character {
|
||||
if character.dyn_bind().is_dead() {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
peer.broadcast_unreliable(Package::Sync(
|
||||
sync_data,
|
||||
self.world_ball.as_ref().map(|b| b.bind().get_sync()),
|
||||
));
|
||||
if let (Some(dir), Some(look_up), Some(transform)) = (
|
||||
player.get_move_dir(),
|
||||
player.get_look_up(),
|
||||
player.get_transform(),
|
||||
) {
|
||||
sync_data.insert(
|
||||
player.id(),
|
||||
SyncPackage {
|
||||
movement_direction: dir,
|
||||
look_up,
|
||||
transform,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
peer.broadcast_unreliable(Package::Sync(
|
||||
sync_data,
|
||||
self.world_ball.as_ref().map(|b| b.bind().get_sync()),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user