41 lines
1001 B
Rust
41 lines
1001 B
Rust
use godot::{
|
|
classes::{ILabel, Label},
|
|
prelude::*,
|
|
};
|
|
|
|
use crate::net::net_stats::Stats;
|
|
|
|
#[derive(GodotClass)]
|
|
#[class(base=Label)]
|
|
pub struct NetStatsLabel {
|
|
since_update: f64,
|
|
base: Base<Label>,
|
|
}
|
|
|
|
#[godot_api]
|
|
impl ILabel for NetStatsLabel {
|
|
fn init(base: Base<Self::Base>) -> Self {
|
|
NetStatsLabel {
|
|
since_update: 0.,
|
|
base,
|
|
}
|
|
}
|
|
|
|
fn process(&mut self, delta: f64) {
|
|
self.since_update += delta;
|
|
if self.since_update > 0.1 {
|
|
self.since_update = 0.;
|
|
let stats = Stats::singleton();
|
|
let statistics = &stats.bind().statistics;
|
|
self.base_mut().set_text(&format!(
|
|
"TX: {} ({} bps)\nRX: {} ({} bps)\nPacket Loss: {:.2}%",
|
|
statistics.total_bytes_tx,
|
|
statistics.tx_bps,
|
|
statistics.total_bytes_rx,
|
|
statistics.rx_bps,
|
|
statistics.packet_loss * 100.
|
|
));
|
|
}
|
|
}
|
|
}
|