Fail at adding joints, rename geometry module.

Time to move the dynamic geo into its own sitch.
This commit is contained in:
Joe Ardent 2022-03-12 14:56:32 -08:00
parent b6fa54a99c
commit 10b9414989
8 changed files with 86 additions and 15 deletions

8
Cargo.lock generated
View file

@ -740,9 +740,9 @@ checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
[[package]] [[package]]
name = "bytemuck" name = "bytemuck"
version = "1.7.3" version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439989e6b8c38d1b6570a384ef1e49c8848128f5a97f3914baef02920842712f" checksum = "0e851ca7c24871e7336801608a4797d7376545b6928a10d32d75685687141ead"
dependencies = [ dependencies = [
"bytemuck_derive", "bytemuck_derive",
] ]
@ -2635,9 +2635,9 @@ dependencies = [
[[package]] [[package]]
name = "termcolor" name = "termcolor"
version = "1.1.2" version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
dependencies = [ dependencies = [
"winapi-util", "winapi-util",
] ]

View file

@ -3,7 +3,7 @@ use bevy::{
render::camera::{ActiveCameras, Camera, CameraPlugin}, render::camera::{ActiveCameras, Camera, CameraPlugin},
}; };
use crate::{geometry::CyberBikeModel, input::InputState}; use crate::{input::InputState, static_geometry::CyberBikeModel};
// 85 degrees in radians // 85 degrees in radians
const MAX_PITCH: f32 = 1.48353; const MAX_PITCH: f32 = 1.48353;

View file

@ -4,7 +4,7 @@ use bevy::{
}; };
use bevy_rapier3d::prelude::*; use bevy_rapier3d::prelude::*;
use crate::geometry::{CyberBikeModel, CyberPlanet, PLANET_RADIUS, SPAWN_ALTITUDE}; use crate::static_geometry::{CyberBikeModel, CyberPlanet, PLANET_RADIUS, SPAWN_ALTITUDE};
#[derive(Component)] #[derive(Component)]
pub struct CyberBikeBody; pub struct CyberBikeBody;
@ -67,7 +67,7 @@ fn setup_colliders(
.insert_bundle(pbody) .insert_bundle(pbody)
.insert_bundle(pcollide); .insert_bundle(pcollide);
// bike is the easy part // bike
let (bike, xform) = bike_query.single(); let (bike, xform) = bike_query.single();
setup_bike_collider(bike, xform, &mut commands); setup_bike_collider(bike, xform, &mut commands);
} }
@ -89,10 +89,11 @@ fn setup_bike_collider(bike: Entity, xform: &Transform, commands: &mut Commands)
let isometry = Isometry::from_parts(xform.translation.into(), xform.rotation.into()); let isometry = Isometry::from_parts(xform.translation.into(), xform.rotation.into());
bbody.position = isometry.into(); bbody.position = isometry.into();
// collider // collider
let shape = ColliderShape::capsule( let shape = ColliderShape::capsule(
Vec3::new(0.0, 0.0, -2.7).into(), Vec3::new(0.0, 0.0, -2.7).into(),
Vec3::new(0.0, 0.0, 2.0).into(), Vec3::new(0.0, 0.0, 2.5).into(),
1.0, 1.0,
); );
let bcollide = ColliderBundle { let bcollide = ColliderBundle {
@ -110,15 +111,85 @@ fn setup_bike_collider(bike: Entity, xform: &Transform, commands: &mut Commands)
.entity(bike) .entity(bike)
.insert_bundle(bbody) .insert_bundle(bbody)
.insert(CyberBikeBody) .insert(CyberBikeBody)
.insert(RigidBodyPositionSync::Discrete) .insert(RigidBodyPositionSync::Interpolated { prev_pos: None })
.with_children(|e| { .with_children(|child_builder| {
e.spawn_bundle(bcollide) child_builder
.spawn_bundle(bcollide)
.insert(ColliderDebugRender { .insert(ColliderDebugRender {
color: Color::GREEN, color: Color::GREEN,
}) })
.insert(CyberBikeCollider) .insert(CyberBikeCollider)
.insert(ColliderPositionSync::Discrete); .insert(ColliderPositionSync::Discrete);
}); });
/* {
let wheel_collider = ColliderBundle {
material: ColliderMaterial::new(0.0, 0.0).into(),
shape: ColliderShape::ball(0.25).into(),
mass_properties: ColliderMassProps::Density(0.1).into(),
..Default::default()
};
let shock = PrismaticJoint::new(Vector::y_axis())
.local_anchor1(Vec3::new(-3.0, -3.0, -3.0).into())
.motor_position(-1.0, 0.02, 0.5);
let ccd = RigidBodyCcd {
ccd_enabled: true,
ccd_thickness: 0.1,
ccd_max_dist: 0.25,
..Default::default()
};
let mut fw_pos = Isometry::default();
fw_pos.translation =
(xform.translation + (xform.down() * 4.5 + (xform.forward() * 2.5))).into();
let front_wheel_body = RigidBodyBundle {
//activation: RigidBodyActivation::cannot_sleep().into(),
//ccd: ccd.into(),
position: fw_pos.into(),
..Default::default()
};
let front_wheel = commands
.spawn_bundle(front_wheel_body)
.insert_bundle(wheel_collider)
.insert(ColliderPositionSync::Discrete)
.insert(ColliderDebugRender::from(Color::YELLOW))
.id();
//commands.spawn_bundle((JointBuilderComponent::new(shock, bike, front_wheel),));
// let bw_pos = Isometry::new(
// (xform.translation + xform.down() + xform.back() * 2.0).into(),
// Vec3::ZERO.into(),
// );
// let back_wheel_body = RigidBodyBundle {
// activation: RigidBodyActivation::cannot_sleep().into(),
// ccd: ccd.into(),
// position: bw_pos.into(),
// ..Default::default()
// };
// let wheel_collider = ColliderBundle {
// material: ColliderMaterial::new(0.0, 0.0).into(),
// // default shape is a 1-meter ball
// ..Default::default()
// };
// let back_wheel = commands
// .spawn_bundle(back_wheel_body)
// .insert_bundle(wheel_collider)
// .insert(ColliderPositionSync::Discrete)
// .insert(ColliderDebugRender::from(Color::RED))
// .id();
//commands.spawn_bundle((JointBuilderComponent::new(shock, bike,
// back_wheel),));
}; */
} }
pub struct CyberCollidersPlugin; pub struct CyberCollidersPlugin;

View file

@ -10,7 +10,7 @@ use bevy::{
use bevy_polyline::{Polyline, PolylineBundle, PolylineMaterial, PolylinePlugin}; use bevy_polyline::{Polyline, PolylineBundle, PolylineMaterial, PolylinePlugin};
use rand::{thread_rng, Rng}; use rand::{thread_rng, Rng};
use crate::{geometry::CyberPlanet, lights::AnimateCyberLightWireframe}; use crate::{lights::AnimateCyberLightWireframe, static_geometry::CyberPlanet};
pub const BISEXY_COLOR: Color = Color::hsla(292.0, 0.9, 0.60, 1.1); pub const BISEXY_COLOR: Color = Color::hsla(292.0, 0.9, 0.60, 1.1);

View file

@ -6,10 +6,10 @@ use bevy::{
pub mod action; pub mod action;
pub mod camera; pub mod camera;
pub mod colliders; pub mod colliders;
pub mod geometry;
pub mod glamor; pub mod glamor;
pub mod input; pub mod input;
pub mod lights; pub mod lights;
pub mod static_geometry;
pub mod ui; pub mod ui;
#[derive(Clone, Debug, Hash, PartialEq, Eq, SystemLabel, StageLabel)] #[derive(Clone, Debug, Hash, PartialEq, Eq, SystemLabel, StageLabel)]

View file

@ -3,7 +3,7 @@ use std::f32::consts::TAU;
use bevy::prelude::*; use bevy::prelude::*;
use rand::prelude::*; use rand::prelude::*;
use crate::geometry::PLANET_RADIUS; use crate::static_geometry::PLANET_RADIUS;
pub const LIGHT_RANGE: f32 = 90.0; pub const LIGHT_RANGE: f32 = 90.0;

View file

@ -4,7 +4,7 @@ use cyber_rider::{
camera::CyberCamPlugin, camera::CyberCamPlugin,
colliders::CyberCollidersPlugin, colliders::CyberCollidersPlugin,
disable_mouse_trap, disable_mouse_trap,
geometry::CyberGeomPlugin, static_geometry::CyberGeomPlugin,
glamor::CyberGlamorPlugin, glamor::CyberGlamorPlugin,
input::CyberInputPlugin, input::CyberInputPlugin,
lights::CyberSpaceLightsPlugin, lights::CyberSpaceLightsPlugin,