122 lines
3.5 KiB
Rust
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() {}
|