mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-11-22 14:58:44 -06:00
Compare commits
No commits in common. "4948d85e05b9f151537da2bded5bde6cfc5be643" and "9f5b974f82f080c7c5dce2627a68b948691f5bfd" have entirely different histories.
4948d85e05
...
9f5b974f82
635
Cargo.lock
generated
635
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -33,8 +33,3 @@ opt-level = 3
|
||||||
|
|
||||||
[profile.dev.package.rayon]
|
[profile.dev.package.rayon]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
|
|
||||||
#this is cursed as fuck
|
|
||||||
#enabling debug assertions here causes the game to abort
|
|
||||||
[profile.dev.package.android-activity]
|
|
||||||
debug-assertions = false
|
|
||||||
|
|
|
@ -8,10 +8,10 @@ publish = false
|
||||||
kubi-shared = { path = "../kubi-shared" }
|
kubi-shared = { path = "../kubi-shared" }
|
||||||
kubi-logging = { path = "../kubi-logging" }
|
kubi-logging = { path = "../kubi-logging" }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
shipyard = { git = "https://github.com/leudz/shipyard", rev = "9099b990e", default-features = false, features = ["std", "proc", "thread_local"] }
|
shipyard = { git = "https://github.com/leudz/shipyard", rev = "8ef90ea6c4d1eb6c9cb0988f0d2f873f75044d49", default-features = false, features = ["std", "proc", "thread_local"] }
|
||||||
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
|
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
|
||||||
toml = "0.8"
|
toml = "0.8"
|
||||||
glam = { version = "0.25", features = ["debug-glam-assert", "fast-math"] }
|
glam = { version = "0.24", features = ["debug-glam-assert", "fast-math"] }
|
||||||
hashbrown = "0.14"
|
hashbrown = "0.14"
|
||||||
nohash-hasher = "0.2"
|
nohash-hasher = "0.2"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
|
|
|
@ -5,9 +5,9 @@ edition = "2021"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
glam = { version = "0.25", features = ["debug-glam-assert", "fast-math", "serde"] }
|
glam = { version = "0.24", features = ["debug-glam-assert", "fast-math", "serde"] }
|
||||||
shipyard = { git = "https://github.com/leudz/shipyard", rev = "9099b990e", default-features = false, features = ["std"] }
|
shipyard = { git = "https://github.com/leudz/shipyard", rev = "8ef90ea6c4d1eb6c9cb0988f0d2f873f75044d49", default-features = false, features = ["std"] }
|
||||||
strum = { version = "0.26", features = ["derive"] }
|
strum = { version = "0.25", features = ["derive"] }
|
||||||
num_enum = "0.7"
|
num_enum = "0.7"
|
||||||
postcard = { version = "1.0", features = ["alloc"] }
|
postcard = { version = "1.0", features = ["alloc"] }
|
||||||
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
|
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
|
||||||
|
|
|
@ -10,7 +10,7 @@ publish = false
|
||||||
kubi-ui = { path = "../kubi-ui" }
|
kubi-ui = { path = "../kubi-ui" }
|
||||||
kubi-ui-glium = { path = "../kubi-ui-glium" }
|
kubi-ui-glium = { path = "../kubi-ui-glium" }
|
||||||
kubi-logging = { path = "../kubi-logging" }
|
kubi-logging = { path = "../kubi-logging" }
|
||||||
glium = { git = "https://github.com/glium/glium", rev = "a352c667" }
|
glium = { git = "https://github.com/glium/glium", rev = "968fc92378caf" }
|
||||||
winit = "0.29"
|
winit = "0.29"
|
||||||
glam = "0.25"
|
glam = "0.24"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
|
@ -7,6 +7,6 @@ publish = false
|
||||||
[dependencies]
|
[dependencies]
|
||||||
kubi-ui = { path = "../kubi-ui", default-features = false }
|
kubi-ui = { path = "../kubi-ui", default-features = false }
|
||||||
#kubi-ui = { path = "../kubi-ui" }
|
#kubi-ui = { path = "../kubi-ui" }
|
||||||
glium = { git = "https://github.com/glium/glium", rev = "a352c667" }
|
glium = { git = "https://github.com/glium/glium", rev = "968fc92378caf" }
|
||||||
glam = "0.25"
|
glam = "0.24"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
|
@ -50,8 +50,8 @@ impl BufferPair {
|
||||||
pub fn new<F: Facade>(facade: &F) -> Self {
|
pub fn new<F: Facade>(facade: &F) -> Self {
|
||||||
log::debug!("init ui buffers...");
|
log::debug!("init ui buffers...");
|
||||||
Self {
|
Self {
|
||||||
vertex_buffer: VertexBuffer::empty_dynamic(facade, 1024).unwrap(),
|
vertex_buffer: VertexBuffer::empty_persistent(facade, 1024).unwrap(),
|
||||||
index_buffer: IndexBuffer::empty_dynamic(facade, PrimitiveType::TrianglesList, 1024).unwrap(),
|
index_buffer: IndexBuffer::empty_persistent(facade, PrimitiveType::TrianglesList, 1024).unwrap(),
|
||||||
vertex_count: 0,
|
vertex_count: 0,
|
||||||
index_count: 0,
|
index_count: 0,
|
||||||
}
|
}
|
||||||
|
@ -68,13 +68,13 @@ impl BufferPair {
|
||||||
let new_idx_size = (need_idx + 1).next_power_of_two();
|
let new_idx_size = (need_idx + 1).next_power_of_two();
|
||||||
log::debug!("resizing buffers: vtx {} -> {}, idx {} -> {}", current_vtx_size, new_vtx_size, current_idx_size, new_idx_size);
|
log::debug!("resizing buffers: vtx {} -> {}, idx {} -> {}", current_vtx_size, new_vtx_size, current_idx_size, new_idx_size);
|
||||||
if current_vtx_size != new_vtx_size {
|
if current_vtx_size != new_vtx_size {
|
||||||
self.vertex_buffer = VertexBuffer::empty_dynamic(
|
self.vertex_buffer = VertexBuffer::empty_persistent(
|
||||||
self.vertex_buffer.get_context(),
|
self.vertex_buffer.get_context(),
|
||||||
new_vtx_size
|
new_vtx_size
|
||||||
).unwrap();
|
).unwrap();
|
||||||
}
|
}
|
||||||
if current_idx_size != new_idx_size {
|
if current_idx_size != new_idx_size {
|
||||||
self.index_buffer = IndexBuffer::empty_dynamic(
|
self.index_buffer = IndexBuffer::empty_persistent(
|
||||||
self.index_buffer.get_context(),
|
self.index_buffer.get_context(),
|
||||||
PrimitiveType::TrianglesList,
|
PrimitiveType::TrianglesList,
|
||||||
new_idx_size
|
new_idx_size
|
||||||
|
|
|
@ -7,7 +7,7 @@ publish = false
|
||||||
[dependencies]
|
[dependencies]
|
||||||
hashbrown = "0.14"
|
hashbrown = "0.14"
|
||||||
nohash-hasher = "0.2"
|
nohash-hasher = "0.2"
|
||||||
glam = "0.25"
|
glam = "0.24"
|
||||||
fontdue = "0.8"
|
fontdue = "0.8"
|
||||||
rect_packer = "0.2"
|
rect_packer = "0.2"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
|
@ -14,18 +14,18 @@ kubi-logging = { path = "../kubi-logging" }
|
||||||
kubi-ui = { path = "../kubi-ui" }
|
kubi-ui = { path = "../kubi-ui" }
|
||||||
kubi-ui-glium = { path = "../kubi-ui-glium" }
|
kubi-ui-glium = { path = "../kubi-ui-glium" }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
glium = { git = "https://github.com/glium/glium", rev = "a352c667" }
|
glium = { git = "https://github.com/glium/glium", rev = "968fc92378caf" }
|
||||||
glutin = "0.31"
|
glutin = "0.31"
|
||||||
winit = { version = "0.29", features = ["android-native-activity"] }
|
winit = { version = "0.29", features = ["android-native-activity"] }
|
||||||
glutin-winit = "0.4"
|
glutin-winit = "0.4"
|
||||||
raw-window-handle = "=0.5.*"
|
raw-window-handle = "0.5"
|
||||||
glam = { version = "0.25", features = ["debug-glam-assert", "fast-math"] }
|
glam = { version = "0.24", features = ["debug-glam-assert", "fast-math"] }
|
||||||
image = { version = "0.24", default_features = false, features = ["png"] }
|
image = { version = "0.24", default_features = false, features = ["png"] }
|
||||||
strum = { version = "0.26", features = ["derive"] }
|
strum = { version = "0.25", features = ["derive"] }
|
||||||
hashbrown = "0.14"
|
hashbrown = "0.14"
|
||||||
nohash-hasher = "0.2"
|
nohash-hasher = "0.2"
|
||||||
rayon = "1.7"
|
rayon = "1.7"
|
||||||
shipyard = { git = "https://github.com/leudz/shipyard", rev = "9099b990e", default-features = false, features = ["std", "proc", "thread_local"] }
|
shipyard = { git = "https://github.com/leudz/shipyard", rev = "8ef90ea6c4d1eb6c9cb0988f0d2f873f75044d49", default-features = false, features = ["std", "proc", "thread_local"] }
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
flume = "0.11"
|
flume = "0.11"
|
||||||
gilrs = { version = "0.10", default_features = false, features = ["xinput"] }
|
gilrs = { version = "0.10", default_features = false, features = ["xinput"] }
|
||||||
|
@ -37,7 +37,7 @@ tinyset = "0.4"
|
||||||
serde_json = { version = "1.0", optional = true } #only used for `generate_visualizer_data`
|
serde_json = { version = "1.0", optional = true } #only used for `generate_visualizer_data`
|
||||||
|
|
||||||
[target.'cfg(target_os = "android")'.dependencies]
|
[target.'cfg(target_os = "android")'.dependencies]
|
||||||
android-activity = "^0.5.2"
|
android-activity = "0.5"
|
||||||
ndk = "0.8"
|
ndk = "0.8"
|
||||||
|
|
||||||
[target.'cfg(target_os = "windows")'.dependencies]
|
[target.'cfg(target_os = "windows")'.dependencies]
|
||||||
|
@ -59,14 +59,15 @@ assets = "../assets"
|
||||||
apk_name = "kubi"
|
apk_name = "kubi"
|
||||||
theme = "@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen"
|
theme = "@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen"
|
||||||
label = "Kubi"
|
label = "Kubi"
|
||||||
|
orientation = "sensorLandscape"
|
||||||
|
|
||||||
[package.metadata.android.sdk]
|
[package.metadata.android.sdk]
|
||||||
min_sdk_version = 16
|
min_sdk_version = 16
|
||||||
target_sdk_version = 30
|
target_sdk_version = 30
|
||||||
|
|
||||||
[[package.metadata.android.uses_feature]]
|
[[package.metadata.android.uses_feature]]
|
||||||
glEsVersion = 0x00030000
|
|
||||||
required = true
|
required = true
|
||||||
|
glEsVersion = 0x00030000
|
||||||
|
|
||||||
[[package.metadata.android.uses_feature]]
|
[[package.metadata.android.uses_feature]]
|
||||||
name = "android.hardware.touchscreen.multitouch"
|
name = "android.hardware.touchscreen.multitouch"
|
||||||
|
@ -77,13 +78,6 @@ name = "android.hardware.touchscreen.multitouch.distinct"
|
||||||
required = true
|
required = true
|
||||||
|
|
||||||
[package.metadata.android.application.activity]
|
[package.metadata.android.application.activity]
|
||||||
label = "Kubi"
|
|
||||||
launch_mode = "singleTop"
|
|
||||||
orientation = "sensorLandscape"
|
|
||||||
config_changes = "orientation|keyboardHidden|screenLayout|screenSize"
|
config_changes = "orientation|keyboardHidden|screenLayout|screenSize"
|
||||||
exported = true
|
exported = true
|
||||||
resizeable_activity = true
|
resizeable_activity = true
|
||||||
|
|
||||||
# [package.metadata.android.signing.release]
|
|
||||||
# path = "$HOME/.android/debug.keystore"
|
|
||||||
# keystore_password = "android"
|
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
//TODO client-side physics
|
|
||||||
//TODO move this to shared
|
|
||||||
use glam::{Mat4, Vec3};
|
|
||||||
use kubi_shared::transform::Transform;
|
|
||||||
use shipyard::{track, AllStoragesView, Component, IntoIter, Unique, UniqueView, View, ViewMut};
|
|
||||||
use crate::delta_time::DeltaTime;
|
|
||||||
|
|
||||||
#[derive(Unique)]
|
|
||||||
pub struct GlobalClPhysicsConfig {
|
|
||||||
pub gravity: Vec3,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Component)]
|
|
||||||
pub struct ClPhysicsActor {
|
|
||||||
pub forces: Vec3,
|
|
||||||
pub velocity: Vec3,
|
|
||||||
pub terminal_velocity: f32,
|
|
||||||
//TODO: this should be configurable per block
|
|
||||||
pub friction_agains_ground: f32,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for ClPhysicsActor {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self {
|
|
||||||
forces: Vec3::ZERO,
|
|
||||||
velocity: Vec3::ZERO,
|
|
||||||
terminal_velocity: 40.,
|
|
||||||
friction_agains_ground: 0.5,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn init_client_physics(
|
|
||||||
storages: AllStoragesView,
|
|
||||||
) {
|
|
||||||
storages.add_unique(GlobalClPhysicsConfig {
|
|
||||||
gravity: Vec3::new(0., -9.8, 0.),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn update_client_physics_late(
|
|
||||||
controllers: View<ClPhysicsActor>,
|
|
||||||
mut transforms: ViewMut<Transform, track::All>,
|
|
||||||
dt: UniqueView<DeltaTime>,
|
|
||||||
phy_conf: UniqueView<GlobalClPhysicsConfig>,
|
|
||||||
) {
|
|
||||||
// for (_, mut transform) in (&controllers, &mut transforms).iter() {
|
|
||||||
// let (scale, rotation, mut translation) = transform.0.to_scale_rotation_translation();
|
|
||||||
// translation.y -= dt.0.as_secs_f32() * 100.;
|
|
||||||
// transform.0 = Mat4::from_scale_rotation_translation(scale, rotation, translation);
|
|
||||||
// }
|
|
||||||
}
|
|
|
@ -1,6 +1,6 @@
|
||||||
use glam::UVec2;
|
use glam::UVec2;
|
||||||
use shipyard::{World, Component, AllStoragesViewMut, SparseSet, NonSendSync, UniqueView};
|
use shipyard::{World, Component, AllStoragesViewMut, SparseSet, NonSendSync, UniqueView};
|
||||||
use winit::event::{Event, DeviceEvent, DeviceId, WindowEvent, Touch};
|
use winit::event::{Event, DeviceEvent, DeviceId, WindowEvent, Touch, RawKeyEvent, TouchPhase};
|
||||||
use crate::rendering::Renderer;
|
use crate::rendering::Renderer;
|
||||||
|
|
||||||
pub mod player_actions;
|
pub mod player_actions;
|
||||||
|
@ -24,7 +24,7 @@ pub struct TouchEvent(pub Touch);
|
||||||
#[derive(Component, Clone, Copy, Debug, Default)]
|
#[derive(Component, Clone, Copy, Debug, Default)]
|
||||||
pub struct WindowResizedEvent(pub UVec2);
|
pub struct WindowResizedEvent(pub UVec2);
|
||||||
|
|
||||||
pub fn process_winit_events(world: &mut World, event: &Event<()>) {
|
pub fn process_glutin_events(world: &mut World, event: &Event<()>) {
|
||||||
#[allow(clippy::collapsible_match, clippy::single_match)]
|
#[allow(clippy::collapsible_match, clippy::single_match)]
|
||||||
match event {
|
match event {
|
||||||
Event::WindowEvent { window_id: _, event } => match event {
|
Event::WindowEvent { window_id: _, event } => match event {
|
||||||
|
|
|
@ -45,9 +45,8 @@ fn update_movement(
|
||||||
let movement = inputs.movement * 30. * dt.0.as_secs_f32();
|
let movement = inputs.movement * 30. * dt.0.as_secs_f32();
|
||||||
for (_, mut transform) in (&controllers, &mut transforms).iter() {
|
for (_, mut transform) in (&controllers, &mut transforms).iter() {
|
||||||
let (scale, rotation, mut translation) = transform.0.to_scale_rotation_translation();
|
let (scale, rotation, mut translation) = transform.0.to_scale_rotation_translation();
|
||||||
let rotation_norm = rotation.normalize();
|
translation += (rotation * Vec3::NEG_Z).normalize() * movement.y;
|
||||||
translation += (rotation_norm * Vec3::NEG_Z).normalize() * movement.y;
|
translation += (rotation * Vec3::X).normalize() * movement.x;
|
||||||
translation += (rotation_norm * Vec3::X).normalize() * movement.x;
|
transform.0 = Mat4::from_scale_rotation_translation(scale, rotation, translation);
|
||||||
transform.0 = Mat4::from_scale_rotation_translation(scale, rotation_norm, translation);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ pub(crate) mod loading_screen;
|
||||||
pub(crate) mod connecting_screen;
|
pub(crate) mod connecting_screen;
|
||||||
pub(crate) mod fixed_timestamp;
|
pub(crate) mod fixed_timestamp;
|
||||||
pub(crate) mod filesystem;
|
pub(crate) mod filesystem;
|
||||||
pub(crate) mod client_physics;
|
|
||||||
|
|
||||||
use world::{
|
use world::{
|
||||||
init_game_world,
|
init_game_world,
|
||||||
|
@ -52,7 +51,7 @@ use settings::{load_settings, GameSettings};
|
||||||
use camera::compute_cameras;
|
use camera::compute_cameras;
|
||||||
use events::{
|
use events::{
|
||||||
clear_events,
|
clear_events,
|
||||||
process_winit_events,
|
process_glutin_events,
|
||||||
initial_resize_event,
|
initial_resize_event,
|
||||||
player_actions::generate_move_events,
|
player_actions::generate_move_events,
|
||||||
};
|
};
|
||||||
|
@ -82,7 +81,6 @@ use loading_screen::update_loading_screen;
|
||||||
use connecting_screen::switch_to_loading_if_connected;
|
use connecting_screen::switch_to_loading_if_connected;
|
||||||
use fixed_timestamp::init_fixed_timestamp_storage;
|
use fixed_timestamp::init_fixed_timestamp_storage;
|
||||||
use filesystem::AssetManager;
|
use filesystem::AssetManager;
|
||||||
use client_physics::{init_client_physics, update_client_physics_late};
|
|
||||||
|
|
||||||
/// stuff required to init the renderer and other basic systems
|
/// stuff required to init the renderer and other basic systems
|
||||||
fn pre_startup() -> Workload {
|
fn pre_startup() -> Workload {
|
||||||
|
@ -106,7 +104,6 @@ fn startup() -> Workload {
|
||||||
init_input,
|
init_input,
|
||||||
insert_control_flow_unique,
|
insert_control_flow_unique,
|
||||||
init_delta_time,
|
init_delta_time,
|
||||||
init_client_physics,
|
|
||||||
).into_sequential_workload()
|
).into_sequential_workload()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +131,6 @@ fn update() -> Workload {
|
||||||
).into_sequential_workload().run_if(is_ingame_or_loading),
|
).into_sequential_workload().run_if(is_ingame_or_loading),
|
||||||
(
|
(
|
||||||
update_controllers,
|
update_controllers,
|
||||||
update_client_physics_late,
|
|
||||||
generate_move_events,
|
generate_move_events,
|
||||||
update_raycasts,
|
update_raycasts,
|
||||||
update_block_placement,
|
update_block_placement,
|
||||||
|
@ -183,13 +179,9 @@ pub fn android_main(app: android_activity::AndroidApp) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub fn kubi_main(
|
pub fn kubi_main(#[cfg(target_os = "android")] app: android_activity::AndroidApp) {
|
||||||
#[cfg(target_os = "android")]
|
|
||||||
app: android_activity::AndroidApp
|
|
||||||
) {
|
|
||||||
//Attach console on release builds on windows
|
//Attach console on release builds on windows
|
||||||
#[cfg(all(windows, not(debug_assertions)))]
|
#[cfg(all(windows, not(debug_assertions)))] attach_console();
|
||||||
attach_console();
|
|
||||||
|
|
||||||
//Print version
|
//Print version
|
||||||
println!("{:─^54}", format!("[ ▄▀ Kubi client v. {} ]", env!("CARGO_PKG_VERSION")));
|
println!("{:─^54}", format!("[ ▄▀ Kubi client v. {} ]", env!("CARGO_PKG_VERSION")));
|
||||||
|
@ -261,7 +253,7 @@ pub fn kubi_main(
|
||||||
|
|
||||||
window_target.set_control_flow(ControlFlow::Poll);
|
window_target.set_control_flow(ControlFlow::Poll);
|
||||||
|
|
||||||
process_winit_events(&mut world, &event);
|
process_glutin_events(&mut world, &event);
|
||||||
|
|
||||||
#[allow(clippy::collapsible_match, clippy::single_match)]
|
#[allow(clippy::collapsible_match, clippy::single_match)]
|
||||||
match event {
|
match event {
|
||||||
|
|
|
@ -10,11 +10,10 @@ use kubi_shared::{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
camera::Camera,
|
|
||||||
client_physics::ClPhysicsActor,
|
|
||||||
fly_controller::FlyController,
|
|
||||||
transform::Transform,
|
transform::Transform,
|
||||||
world::raycast::LookingAtBlock
|
camera::Camera,
|
||||||
|
fly_controller::FlyController,
|
||||||
|
world::raycast::LookingAtBlock,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
|
@ -24,7 +23,7 @@ pub fn spawn_player (
|
||||||
mut storages: AllStoragesViewMut,
|
mut storages: AllStoragesViewMut,
|
||||||
) {
|
) {
|
||||||
log::info!("spawning player");
|
log::info!("spawning player");
|
||||||
storages.add_entity(((
|
storages.add_entity((
|
||||||
Player,
|
Player,
|
||||||
MainPlayer,
|
MainPlayer,
|
||||||
Entity,
|
Entity,
|
||||||
|
@ -34,10 +33,8 @@ pub fn spawn_player (
|
||||||
FlyController,
|
FlyController,
|
||||||
LookingAtBlock::default(),
|
LookingAtBlock::default(),
|
||||||
PlayerHolding(Some(Block::Cobblestone)),
|
PlayerHolding(Some(Block::Cobblestone)),
|
||||||
Username("LocalPlayer".into()),
|
Username("LocalPlayer".into())
|
||||||
),(
|
));
|
||||||
ClPhysicsActor::default(),
|
|
||||||
)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn spawn_local_player_multiplayer (
|
pub fn spawn_local_player_multiplayer (
|
||||||
|
@ -45,21 +42,22 @@ pub fn spawn_local_player_multiplayer (
|
||||||
init: ClientInitData
|
init: ClientInitData
|
||||||
) {
|
) {
|
||||||
log::info!("spawning local multiplayer player");
|
log::info!("spawning local multiplayer player");
|
||||||
let entity_id = storages.add_entity(((
|
let entity_id = storages.add_entity((
|
||||||
Player,
|
(
|
||||||
Client(init.client_id),
|
Player,
|
||||||
MainPlayer,
|
Client(init.client_id),
|
||||||
Entity,
|
MainPlayer,
|
||||||
init.health,
|
Entity,
|
||||||
Transform(Mat4::from_rotation_translation(init.direction, init.position)),
|
init.health,
|
||||||
Camera::default(),
|
Transform(Mat4::from_rotation_translation(init.direction, init.position)),
|
||||||
FlyController,
|
Camera::default(),
|
||||||
LookingAtBlock::default(),
|
FlyController,
|
||||||
PlayerHolding::default(),
|
LookingAtBlock::default(),
|
||||||
),(
|
PlayerHolding::default(),
|
||||||
Username(init.username),
|
),(
|
||||||
ClPhysicsActor::default(),
|
Username(init.username)
|
||||||
)));
|
)
|
||||||
|
));
|
||||||
|
|
||||||
//Add ourself to the client id map
|
//Add ourself to the client id map
|
||||||
let mut client_id_map = storages.borrow::<UniqueViewMut<ClientIdMap>>().unwrap();
|
let mut client_id_map = storages.borrow::<UniqueViewMut<ClientIdMap>>().unwrap();
|
||||||
|
|
Loading…
Reference in a new issue