This commit is contained in:
JOLIMAITRE Matthieu 2024-11-10 02:44:05 +01:00
commit 2f798e5cbc
15 changed files with 23755 additions and 0 deletions

View file

@ -0,0 +1,2 @@
({
})

BIN
assets/levels/Scene.glb Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
(
assets:
[
]
)

Binary file not shown.

Binary file not shown.

17922
assets/registry.json Normal file

File diff suppressed because it is too large Load diff

BIN
blend/main.blend Normal file

Binary file not shown.

BIN
blend/main.blend1 Normal file

Binary file not shown.

12
rust/.cargo/config.toml Normal file
View file

@ -0,0 +1,12 @@
[profile.dev.package."*"]
opt-level = 3
[profile.dev]
opt-level = 0
[profile.release]
lto = true
opt-level = 3
codegen-units = 1
incremental = false
debug = false

1
rust/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

5713
rust/Cargo.lock generated Normal file

File diff suppressed because it is too large Load diff

11
rust/Cargo.toml Normal file
View file

@ -0,0 +1,11 @@
[package]
name = "d6"
version = "0.1.0"
edition = "2021"
[dependencies]
bevy = { version = "0.14.2", features = ["dynamic_linking"] }
blenvy = "0.1.0-alpha.1"
rand = "0.8.5"
avian3d = "0.1.2"
bevy_editor_pls = "0.10.0"

1
rust/assets Symbolic link
View file

@ -0,0 +1 @@
../assets

2
rust/rustfmt.toml Normal file
View file

@ -0,0 +1,2 @@
hard_tabs = true
max_width = 120

86
rust/src/main.rs Normal file
View file

@ -0,0 +1,86 @@
#![allow(clippy::type_complexity)]
use avian3d::prelude::*;
use bevy::{
input::mouse::MouseMotion,
prelude::*,
window::{CursorGrabMode, PrimaryWindow},
};
use bevy_editor_pls::prelude::*;
use blenvy::{BlenvyPlugin, BlueprintInfo, GameWorldTag, SpawnBlueprint};
fn main() {
App::new()
.register_type::<PlayerController>()
.add_plugins((
DefaultPlugins.set(AssetPlugin::default()),
PhysicsPlugins::default(),
BlenvyPlugin::default(),
EditorPlugin::default(),
))
.add_systems(Startup, startup)
.add_systems(Update, (update_player_mouse, update_player_keyboard))
.run();
}
fn startup(mut commands: Commands) {
commands.spawn((
BlueprintInfo::from_path("levels/Scene.glb"),
SpawnBlueprint,
GameWorldTag,
));
}
#[derive(Debug, Component, Reflect, Default)]
#[reflect(Component)]
pub struct PlayerController;
const SENSITIVITY: f32 = 3.;
const SPEED: f32 = 10.;
fn update_player_mouse(
mut evr_motion: EventReader<MouseMotion>,
mut window: Query<&mut Window, With<PrimaryWindow>>,
mut players: Query<&mut Transform, (With<PlayerController>, With<RigidBody>)>,
) {
if let Ok(mut window) = window.get_single_mut() {
window.cursor.grab_mode = CursorGrabMode::Locked;
window.cursor.visible = false;
}
for ev in evr_motion.read() {
let x = ev.delta.x * (0.000_1 * SENSITIVITY);
let y = ev.delta.y * (0.000_1 * SENSITIVITY);
for mut transform in &mut players {
transform.rotate_local_x(-y);
transform.rotate_y(-x);
}
}
}
fn update_player_keyboard(
keyboard: Res<ButtonInput<KeyCode>>,
mut window: Query<&mut Window, With<PrimaryWindow>>,
mut players: Query<(&mut LinearVelocity, &Transform), (With<PlayerController>, With<RigidBody>)>,
) {
if let Ok(mut window) = window.get_single_mut() {
window.cursor.grab_mode = CursorGrabMode::Locked;
window.cursor.visible = false;
}
let mut direction = Vec3::ZERO;
direction += keyboard.pressed(KeyCode::KeyW).then_some(-Vec3::Z).unwrap_or_default();
direction += keyboard.pressed(KeyCode::KeyS).then_some(Vec3::Z).unwrap_or_default();
direction += keyboard.pressed(KeyCode::KeyD).then_some(Vec3::X).unwrap_or_default();
direction += keyboard.pressed(KeyCode::KeyA).then_some(-Vec3::X).unwrap_or_default();
for (mut velocity, transform) in &mut players {
let local_forw = transform.local_z();
let local_side = transform.local_x();
let new_vel = (local_side * direction.x) + (local_forw * direction.z);
let mut new_vel = new_vel * SPEED;
new_vel.y = velocity.y;
velocity.0 = new_vel;
}
}