From 86aa2c77be05f282d8e0ea260b999ad089f8107f Mon Sep 17 00:00:00 2001 From: Elias Stepanik Date: Fri, 4 Apr 2025 12:38:29 +0200 Subject: [PATCH] Basic Synced Object Test --- client/Cargo.toml | 3 +- client/src/app.rs | 2 +- .../plugins/camera/systems/camera_system.rs | 22 ++++- .../plugins/environment/environment_plugin.rs | 3 +- .../environment/systems/environment_system.rs | 86 ++++++++++++++++++- client/src/plugins/network/mod.rs | 2 +- client/src/plugins/network/network_plugin.rs | 2 +- .../src/plugins/network/systems/database.rs | 8 +- server/Cargo.toml | 2 +- server/src/lib.rs | 9 ++ server/src/types/entity.rs | 27 ++++++ server/src/types/mod.rs | 3 +- server/src/types/player.rs | 1 + server/src/types/vec3.rs | 12 --- 14 files changed, 154 insertions(+), 28 deletions(-) create mode 100644 server/src/types/entity.rs diff --git a/client/Cargo.toml b/client/Cargo.toml index cece379..ed77906 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -18,4 +18,5 @@ bevy_window = "0.15.0" egui_dock = "0.14.0" spacetimedb-sdk = "1.0" hex = "0.4" -random_word = { version = "0.5.0", features = ["en"] } \ No newline at end of file +random_word = { version = "0.5.0", features = ["en"] } +rand = "0.8.5" \ No newline at end of file diff --git a/client/src/app.rs b/client/src/app.rs index 149e815..5542051 100644 --- a/client/src/app.rs +++ b/client/src/app.rs @@ -28,7 +28,7 @@ impl Plugin for AppPlugin { app.add_plugins(crate::plugins::camera::camera_plugin::CameraPlugin); app.add_plugins(crate::plugins::ui::ui_plugin::UiPlugin); app.add_plugins(crate::plugins::environment::environment_plugin::EnvironmentPlugin); - app.add_systems(Startup, setup_database); + app.add_plugins(crate::plugins::network::network_plugin::NetworkPlugin); app.add_systems(Update, (debug_gizmos, toggle_ui_system)); diff --git a/client/src/plugins/camera/systems/camera_system.rs b/client/src/plugins/camera/systems/camera_system.rs index 04ac0f5..24aa07f 100644 --- a/client/src/plugins/camera/systems/camera_system.rs +++ b/client/src/plugins/camera/systems/camera_system.rs @@ -4,8 +4,9 @@ use bevy::math::Vec3; use bevy::prelude::*; use bevy_render::camera::{Exposure, PhysicalCameraParameters, Projection}; use bevy_window::CursorGrabMode; +use rand::Rng; use random_word::Lang; -use crate::module_bindings::set_name; +use crate::module_bindings::{set_name, spawn_entity, DbVector3}; use crate::plugins::network::systems::database::DbConnectionResource; #[derive(Component)] @@ -47,6 +48,15 @@ pub fn setup(mut commands: Commands) { )); } +fn random_vec3(min: f32, max: f32) -> Vec3 { + let mut rng = rand::thread_rng(); + Vec3::new( + rng.gen_range(min..max), + rng.gen_range(min..max), + rng.gen_range(min..max), + ) +} + /// Example system to control a camera using double-precision for position. pub fn camera_controller_system( time: Res