use avian2d::prelude::{AngularInertia, AngularVelocity, CenterOfMass, Collider, LinearVelocity, Mass, Position, RigidBody, Rotation};
use bevy::ecs::entity::MapEntities;
use bevy::prelude::*;
use crate::prelude::{App, Message};
use bevy_replicon::prelude::*;
use serde::{Deserialize, Serialize};
use crate::shared::attachment::{Joint, JointOf, PartInShip, Peer, Ship, SnapOf, SnapOfJoint};
use crate::shared::config::planet::{Planet, PlanetSpring, PlanetSpringJoint};
use crate::shared::ecs::{CanCraft, Drill, Part, Player, PlayerStorage, SingleStorage, Temperature};
use crate::shared::ecs::thruster::{Thruster, ThrusterOfPart};
pub fn register_replication(app: &mut App) {
app
.add_mapped_server_message::<Hi>(Channel::Ordered)
.replicate::<Transform>()
.replicate::<GlobalTransform>()
.replicate::<RigidBody>()
.replicate::<Collider>()
.replicate::<Position>()
.replicate::<Rotation>()
.replicate::<LinearVelocity>()
.replicate::<AngularVelocity>()
.replicate::<Mass>()
.replicate::<AngularInertia>()
.replicate::<CenterOfMass>()
.replicate::<Part>()
.replicate::<Planet>()
.replicate::<Player>()
.replicate::<ChildOf>()
.replicate::<Ship>()
.replicate::<PartInShip>()
.replicate::<Joint>()
.replicate::<Peer>()
.replicate::<JointOf>()
.replicate::<SnapOfJoint>()
.replicate::<SnapOf>()
.replicate::<PlayerStorage>()
.replicate::<Thruster>()
.replicate::<ThrusterOfPart>()
.replicate::<CanCraft>()
.replicate::<Temperature>()
.replicate::<Drill>()
.replicate::<SingleStorage>()
.replicate::<PlanetSpring>()
.replicate::<PlanetSpringJoint>();
}
#[derive(Message, Deserialize, Serialize, MapEntities)]
pub struct Hi {
#[entities]
pub you_are: Entity
}