use std::collections::HashMap; use std::f64::consts::PI; use avian2d::math::TAU; use avian2d::prelude::{LinearVelocity, Mass}; use bevy::prelude::{Plugin, Transform}; use bevy::time::Time; use crate::shared::config::planet::{Planet, PlanetSpring}; use crate::prelude::{App, Query, Res, Update, Without}; use crate::shared::world_config::WorldConfigResource; const KEPLER_MAX_ITERATIONS: u32 = 100; const KEPLER_CONVERGENCE_THRESHOLD: f64 = 1e-10; pub struct OrbitPlugin; impl Plugin for OrbitPlugin { fn build(&self, app: &mut App) { app.add_systems(Update, update_orbits); } } fn update_orbits( mut planets: Query<(&Planet, &Transform, &mut LinearVelocity), Without>, planets_2: Query<(&Planet, &Transform, &Mass), Without>, mut planet_springs: Query<(&PlanetSpring, &mut Transform, &mut LinearVelocity), Without>, world_config: Res, time: Res