@@ 5,10 5,10 @@ edition = "2021"
license = "AGPL-3"
[dependencies]
-bevy = { version = "0.12", default-features = false }
+bevy = { version = "0.13.1", default-features = false }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
-bevy_rapier2d = "0.23.0"
+bevy_rapier2d = "0.25.0"
rand = "0.8.5"
tracing-subscriber = "0.3"
starkingdoms-common = { version = "0.1", path = "../starkingdoms-common" }
@@ 22,4 22,4 @@ tungstenite = "0.21"
[features]
default = []
-profiling = ["bevy/trace_tracy"]>
\ No newline at end of file
+profiling = ["bevy/trace_tracy"]
@@ 121,7 121,7 @@ pub struct PlayerBundle {
pub struct ModuleTimer(pub Timer);
impl ModuleTimer {
pub fn new() -> Self {
- Self(Timer::from_seconds(3.0, TimerMode::Repeating))
+ Self(Timer::from_seconds(0.3, TimerMode::Repeating))
}
}
impl Default for ModuleTimer {
@@ 20,6 20,7 @@
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
use std::net::IpAddr;
+use std::num::NonZeroUsize;
use crate::mathutil::rot2d;
use crate::ws::{StkTungsteniteServerConfig, StkTungsteniteServerPlugin, WsEvent};
@@ 89,6 90,7 @@ impl PluginGroup for StkPluginGroup {
.add(bevy::log::LogPlugin {
level: bevy::log::Level::DEBUG,
filter: "wgpu=error,bevy_render=info,bevy_ecs=trace".to_string(),
+ update_subscriber: None,
})
}
}
@@ 153,7 155,7 @@ fn main() {
)
.add_systems(FixedUpdate, save_eligibility)
.add_systems(FixedUpdate, convert_modules)
- //.insert_resource(Time::<Fixed>::from_seconds(1.0/1.0))
+ .insert_resource(Time::<Fixed>::from_seconds(1.0/1.0))
.run();
info!("Goodbye!");
@@ 163,7 165,7 @@ fn setup_integration_parameters(mut context: ResMut<RapierContext>) {
context.integration_parameters.dt = 1.0 / 60.0;
context.integration_parameters.joint_erp = 0.2;
context.integration_parameters.erp = 0.5;
- context.integration_parameters.max_stabilization_iterations = 16;
+ //context.integration_parameters.num_solver_iterations = NonZeroUsize::new(16).unwrap();
}
fn spawn_planets(mut commands: Commands) {
info!("Spawning planets");
@@ 224,21 226,20 @@ fn module_spawn(
mut packet_send: EventWriter<WsEvent>,
) {
if module_timer.0.tick(time.delta()).just_finished() {
- let angle: f32 = {
- let mut rng = rand::thread_rng();
- rng.gen::<f32>() * std::f32::consts::PI * 2.
- };
- let mut transform = Transform::from_xyz(angle.cos() * 30.0, angle.sin() * 30.0, 0.0);
- transform.rotate_z(angle);
if part_query.iter().count() < FREE_MODULE_CAP {
+ let angle: f32 = {
+ let mut rng = rand::thread_rng();
+ rng.gen::<f32>() * std::f32::consts::PI * 2.
+ };
+ let mut transform = Transform::from_xyz(angle.cos() * 30.0, angle.sin() * 30.0, 0.0);
+ transform.rotate_z(angle);
let flags = PartFlags { attached: false };
let mut entity = commands.spawn(PartBundle {
part_type: PartType::Cargo,
transform: TransformBundle::from(transform),
flags,
});
- entity
- .insert(RigidBody::Dynamic)
+ entity.insert(RigidBody::Dynamic)
.with_children(|children| {
children
.spawn(Collider::cuboid(0.375, 0.46875))
@@ 1301,7 1302,7 @@ fn convert_modules(
) {
for (_planet_entity, planet_type, children) in &planet_query {
for (entity1, entity2, intersecting) in
- rapier_context.intersections_with(*children.first().unwrap())
+ rapier_context.intersection_pairs_with(*children.first().unwrap())
{
if intersecting {
let other = if *children.first().unwrap() == entity1 {
@@ 1573,7 1574,7 @@ fn save_eligibility(
) {
for (_planet_entity, _planet_type, children) in &planet_query {
for (entity1, entity2, intersecting) in
- rapier_context.intersections_with(*children.first().unwrap())
+ rapier_context.intersection_pairs_with(*children.first().unwrap())
{
if intersecting {
let other = if *children.first().unwrap() == entity1 {
@@ 1717,7 1718,12 @@ fn on_position_change(
packet_send.send(WsEvent::Broadcast {
message: packet.into(),
});
+
}
+ /*let packet = Packet::SaveEligibility { eligible: true };
+ for _ in 0..10000 {
+ packet_send.send(WsEvent::Broadcast { message: packet.clone().into() });
+ }*/
let mut planets = Vec::new();
for (entity, planet_type, transform) in planet_query.iter() {
@@ 1981,6 1987,13 @@ fn gravity_update(
let distance = planet_translate.distance(part_translate);
let force = GRAVITY * ((part_mass * planet_mass) / (distance * distance));
let direction = (planet_translate - part_translate).normalize() * force;
+ /*let gravity_force = ExternalForce::at_point(
+ direction.xy(),
+ part_transform.translation.xy(),
+ part_transform.translation.xy(),
+ );
+ forces.force += gravity_force.force;
+ forces.torque += gravity_force.torque;*/
impulses.impulse += direction.xy();
}
}