initial commit for session and lock features
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
//! Debug UI overlay using egui
|
||||
|
||||
use bevy::prelude::*;
|
||||
use bevy_egui::{egui, EguiContexts, EguiPrimaryContextPass};
|
||||
use lib::networking::{GossipBridge, NodeVectorClock};
|
||||
use bevy_egui::{
|
||||
egui,
|
||||
EguiContexts,
|
||||
EguiPrimaryContextPass,
|
||||
};
|
||||
use lib::networking::{
|
||||
GossipBridge,
|
||||
NodeVectorClock,
|
||||
};
|
||||
|
||||
pub struct DebugUiPlugin;
|
||||
|
||||
@@ -17,7 +24,10 @@ fn render_debug_ui(
|
||||
mut contexts: EguiContexts,
|
||||
node_clock: Option<Res<NodeVectorClock>>,
|
||||
gossip_bridge: Option<Res<GossipBridge>>,
|
||||
cube_query: Query<(&Transform, &lib::networking::NetworkedEntity), With<crate::cube::CubeMarker>>,
|
||||
cube_query: Query<
|
||||
(&Transform, &lib::networking::NetworkedEntity),
|
||||
With<crate::cube::CubeMarker>,
|
||||
>,
|
||||
) {
|
||||
let Ok(ctx) = contexts.ctx_mut() else {
|
||||
return;
|
||||
@@ -35,7 +45,8 @@ fn render_debug_ui(
|
||||
if let Some(clock) = &node_clock {
|
||||
ui.label(format!("Node ID: {}", &clock.node_id.to_string()[..8]));
|
||||
// Show the current node's clock value (timestamp)
|
||||
let current_timestamp = clock.clock.clocks.get(&clock.node_id).copied().unwrap_or(0);
|
||||
let current_timestamp =
|
||||
clock.clock.clocks.get(&clock.node_id).copied().unwrap_or(0);
|
||||
ui.label(format!("Clock: {}", current_timestamp));
|
||||
ui.label(format!("Known nodes: {}", clock.clock.clocks.len()));
|
||||
} else {
|
||||
@@ -46,7 +57,10 @@ fn render_debug_ui(
|
||||
|
||||
// Gossip bridge status
|
||||
if let Some(bridge) = &gossip_bridge {
|
||||
ui.label(format!("Bridge Node: {}", &bridge.node_id().to_string()[..8]));
|
||||
ui.label(format!(
|
||||
"Bridge Node: {}",
|
||||
&bridge.node_id().to_string()[..8]
|
||||
));
|
||||
ui.label("Status: Connected");
|
||||
} else {
|
||||
ui.label("Gossip: Not ready");
|
||||
@@ -58,25 +72,38 @@ fn render_debug_ui(
|
||||
|
||||
// Cube information
|
||||
match cube_query.iter().next() {
|
||||
Some((transform, networked)) => {
|
||||
| Some((transform, networked)) => {
|
||||
let pos = transform.translation;
|
||||
ui.label(format!("Position: ({:.2}, {:.2}, {:.2})", pos.x, pos.y, pos.z));
|
||||
ui.label(format!(
|
||||
"Position: ({:.2}, {:.2}, {:.2})",
|
||||
pos.x, pos.y, pos.z
|
||||
));
|
||||
|
||||
let (axis, angle) = transform.rotation.to_axis_angle();
|
||||
let angle_deg: f32 = angle.to_degrees();
|
||||
ui.label(format!("Rotation: {:.2}° around ({:.2}, {:.2}, {:.2})",
|
||||
angle_deg, axis.x, axis.y, axis.z));
|
||||
ui.label(format!(
|
||||
"Rotation: {:.2}° around ({:.2}, {:.2}, {:.2})",
|
||||
angle_deg, axis.x, axis.y, axis.z
|
||||
));
|
||||
|
||||
ui.label(format!("Scale: ({:.2}, {:.2}, {:.2})",
|
||||
transform.scale.x, transform.scale.y, transform.scale.z));
|
||||
ui.label(format!(
|
||||
"Scale: ({:.2}, {:.2}, {:.2})",
|
||||
transform.scale.x, transform.scale.y, transform.scale.z
|
||||
));
|
||||
|
||||
ui.add_space(5.0);
|
||||
ui.label(format!("Network ID: {}", &networked.network_id.to_string()[..8]));
|
||||
ui.label(format!("Owner: {}", &networked.owner_node_id.to_string()[..8]));
|
||||
}
|
||||
None => {
|
||||
ui.label(format!(
|
||||
"Network ID: {}",
|
||||
&networked.network_id.to_string()[..8]
|
||||
));
|
||||
ui.label(format!(
|
||||
"Owner: {}",
|
||||
&networked.owner_node_id.to_string()[..8]
|
||||
));
|
||||
},
|
||||
| None => {
|
||||
ui.label("Cube: Not spawned yet");
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
ui.add_space(10.0);
|
||||
|
||||
Reference in New Issue
Block a user