use bevy::asset::Asset; use bevy::color::Color; use crate::prelude::*; use serde::{Deserialize, Serialize}; #[derive(Deserialize, Asset, TypePath, Component, Serialize, Clone, Debug)] #[require( RigidBody::Static, Replicated, )] pub struct Planet { pub name: String, pub sprite: String, pub indicator_sprite: Option, pub radius: f32, pub mass: f32, pub default_transform: [f32; 3], pub special_sprite_properties: Option, } #[derive(Deserialize, TypePath, Serialize, Clone, Debug)] pub enum SpecialSpriteProperties { ForceColor(Color), } #[derive(Bundle)] pub struct PlanetBundle { pub planet: Planet, pub transform: Transform, pub collider: Collider, pub mass: Mass //pub additional_mass_properties: AdditionalMassProperties, } #[derive(Deserialize, Asset, TypePath)] pub struct PlanetConfigCollection { pub planets: Vec, }