Fixed landing collisions
parent
0995e2311b
commit
6406fd8786
1
TODO.md
1
TODO.md
|
@ -1,7 +1,6 @@
|
|||
## Specific Jobs
|
||||
- Fix angles (point, land)
|
||||
- Land from farther away
|
||||
- Land collider
|
||||
- Take off
|
||||
- UI: text arranger
|
||||
- Start documenting
|
||||
|
|
|
@ -66,7 +66,7 @@ impl<'a> Game {
|
|||
ShipHandle { index: 0 },
|
||||
FactionHandle { index: 1 },
|
||||
ShipPersonality::Point,
|
||||
Point2::new(100.0, 0.0),
|
||||
Point2::new(400.0, 0.0),
|
||||
);
|
||||
|
||||
let s = systemsim.get_ship_mut(&a).unwrap();
|
||||
|
@ -79,7 +79,7 @@ impl<'a> Game {
|
|||
ShipHandle { index: 0 },
|
||||
FactionHandle { index: 0 },
|
||||
ShipPersonality::Dummy,
|
||||
Point2::new(0.0, 120.0),
|
||||
Point2::new(0.0, 4000.0),
|
||||
);
|
||||
|
||||
let s = systemsim.get_ship_mut(&a).unwrap();
|
||||
|
|
|
@ -4,7 +4,7 @@ use nalgebra::{Point2, Vector2};
|
|||
|
||||
use rapier2d::{
|
||||
dynamics::{RigidBody, RigidBodyBuilder, RigidBodyHandle, RigidBodySet},
|
||||
geometry::{ColliderHandle, ColliderSet},
|
||||
geometry::{ColliderHandle, ColliderSet, Group, InteractionGroups},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
@ -62,7 +62,7 @@ impl PhysSim {
|
|||
position: Point2<f32>,
|
||||
) -> PhysSimShipHandle {
|
||||
let ship_content = ct.get_ship(handle);
|
||||
let cl = ship_content.collider.0.clone();
|
||||
let mut cl = ship_content.collider.0.clone();
|
||||
// TODO: additonal ship mass from outfits and cargo
|
||||
|
||||
let rb = RigidBodyBuilder::dynamic()
|
||||
|
@ -71,6 +71,11 @@ impl PhysSim {
|
|||
.translation(Vector2::new(position.x, position.y))
|
||||
.can_sleep(false);
|
||||
|
||||
cl.set_collision_groups(InteractionGroups::new(
|
||||
Group::GROUP_1,
|
||||
Group::GROUP_1 | Group::GROUP_2,
|
||||
));
|
||||
|
||||
let ridid_body = self.rigid_body_set.insert(rb.build());
|
||||
let collider =
|
||||
self.collider_set
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
use galactica_content::{GunPoint, OutfitHandle, ProjectileCollider};
|
||||
use nalgebra::{Rotation2, Vector2};
|
||||
use rand::Rng;
|
||||
use rapier2d::{dynamics::RigidBodyBuilder, geometry::ColliderBuilder, pipeline::ActiveEvents};
|
||||
use rapier2d::{
|
||||
dynamics::RigidBodyBuilder,
|
||||
geometry::{ColliderBuilder, Group, InteractionGroups},
|
||||
pipeline::ActiveEvents,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
data::{ShipAutoPilot, ShipState},
|
||||
|
@ -176,13 +180,15 @@ impl PhysSim {
|
|||
.linvel(vel)
|
||||
.build();
|
||||
|
||||
let collider = match &outfit.projectile.collider {
|
||||
let mut collider = match &outfit.projectile.collider {
|
||||
ProjectileCollider::Ball(b) => ColliderBuilder::ball(b.radius)
|
||||
.sensor(true)
|
||||
.active_events(ActiveEvents::COLLISION_EVENTS)
|
||||
.build(),
|
||||
};
|
||||
|
||||
collider.set_collision_groups(InteractionGroups::new(Group::GROUP_2, Group::GROUP_1));
|
||||
|
||||
let rigid_body = self.rigid_body_set.insert(rigid_body);
|
||||
let collider = self.collider_set.insert_with_parent(
|
||||
collider,
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
use galactica_content::{Content, Relationship, SystemObjectHandle};
|
||||
use nalgebra::{Isometry2, Point2, Vector2};
|
||||
use rapier2d::{dynamics::RigidBody, geometry::ColliderHandle};
|
||||
use rapier2d::{
|
||||
dynamics::RigidBody,
|
||||
geometry::{ColliderHandle, Group, InteractionGroups},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
data::ShipState,
|
||||
|
@ -66,6 +69,9 @@ impl PhysSim {
|
|||
return false;
|
||||
}
|
||||
|
||||
let collider = self.collider_set.get_mut(collider).unwrap();
|
||||
println!("{:?}", collider.collision_groups());
|
||||
collider.set_collision_groups(InteractionGroups::new(Group::GROUP_1, Group::empty()));
|
||||
ship.data.start_land_on(target_handle);
|
||||
return true;
|
||||
}
|
||||
|
@ -102,7 +108,10 @@ impl PhysSim {
|
|||
self.collider_set
|
||||
.get_mut(ship.collider)
|
||||
.unwrap()
|
||||
.set_enabled(true);
|
||||
.set_collision_groups(InteractionGroups::new(
|
||||
Group::GROUP_1,
|
||||
Group::GROUP_1 | Group::GROUP_2,
|
||||
));
|
||||
}
|
||||
|
||||
pub(super) fn remove_ship(
|
||||
|
|
Loading…
Reference in New Issue