space-game-tm/client/src/main.rs

122 lines
3.5 KiB
Rust

#![feature(default_free_fn)]
pub mod computer;
pub mod discord;
pub mod species;
pub mod ui;
use crate::ui::{diagnosis::diag_ui, UIPlugin};
use bevy::diagnostic::FrameTimeDiagnosticsPlugin;
use bevy::prelude::*;
use bevy::winit::WinitSettings;
use bevy_egui::EguiPlugin;
use bevy_framepace::FramepacePlugin;
use bevy_rapier3d::{
na::vector,
plugin::{NoUserData, RapierPhysicsPlugin},
prelude::{Collider, GenericJointBuilder, RapierDebugRenderPlugin, Restitution, RigidBody, *},
rapier::{
math::Point,
prelude::{
ColliderBuilder, ColliderSet, ImpulseJointSet, JointAxesMask, JointAxis,
MultibodyJointSet, RigidBodyBuilder, RigidBodySet,
},
},
};
use libspace::user::generate_user_id;
use ui::UIInfo;
use crate::ui::{
client_settings::{client_settings, Settings},
stats::stats_ui,
wiki::wiki_ui,
};
fn main() {
println!("{}", generate_user_id());
App::new()
.add_plugins(DefaultPlugins)
.insert_resource(WinitSettings::game())
.add_plugin(FramepacePlugin::default().without_warnings())
.add_plugin(UIPlugin)
// .add_plugin(ComputerPlugin) // Pending: Jordans acceptance
// .add_plugin(DiscordPlugin) // FIXME: Preformance increase, halts game while updating
// .add_startup_system(setup)
.add_plugin(FrameTimeDiagnosticsPlugin::default())
.add_plugin(RapierPhysicsPlugin::<NoUserData>::default())
.add_plugin(RapierDebugRenderPlugin::default())
.add_startup_system(setup_graphics)
.add_startup_system(setup_physics)
.add_system(print_ball_altitude)
.add_system(cursor_grab_system)
.run();
}
fn cursor_grab_system(
mut windows: ResMut<Windows>,
btn: Res<Input<MouseButton>>,
key: Res<Input<KeyCode>>,
mut ui_info: ResMut<UIInfo>,
) {
let window = windows.get_primary_mut().unwrap();
let cursor_state = window.cursor_locked();
let visibility_state = window.cursor_visible();
if key.just_pressed(KeyCode::Escape) {
window.set_cursor_lock_mode(!cursor_state);
window.set_cursor_visibility(!visibility_state);
ui_info.mouse_grabbed = !ui_info.mouse_grabbed;
}
}
fn setup_graphics(mut commands: Commands) {
// Add a camera so we can see the debug-render.
commands.spawn_bundle(PerspectiveCameraBundle {
transform: Transform::from_xyz(-3.0, 3.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y),
..Default::default()
});
}
fn setup_physics(mut commands: Commands) {
/* Create the ground. */
commands
.spawn()
.insert(Collider::cuboid(100.0, 0.1, 100.0))
.insert(Transform::from_xyz(0.0, -2.0, 0.0));
/* Create the bouncing ball. */
commands
.spawn()
.insert(RigidBody::Dynamic)
.insert(Collider::ball(0.5))
.insert(Restitution::coefficient(0.7))
.insert(Transform::from_xyz(0.0, 4.0, 0.0));
commands
.spawn()
.insert(RigidBody::Dynamic)
.insert(Collider::cuboid(1.0, 2.0, 1.0))
.insert(Restitution::coefficient(0.7))
.insert(Transform::from_xyz(0.0, 4.0, 0.0));
let joint = FixedJointBuilder::new().local_anchor1(Vec3::new(0.0, 0.0, -2.0));
/*
commands
.spawn()
.insert(RigidBody::Dynamic)
.insert(ImpulseJoint::new(abc, joint));
*/
}
fn print_ball_altitude(positions: Query<&Transform, With<RigidBody>>) {
for transform in positions.iter() {
// println!("Ball altitude: {}", transform.translation.y);
}
}
fn create_player() {}