use bevy::asset::{Asset, Handle};
use bevy::ecs::component::Component;
use bevy::prelude::Visibility;
use bevy::reflect::{Reflect, TypePath};
use bevy::scene::Scene;
use bevy::sprite::TextureAtlasLayout;
use bevy::transform::components::Transform;
use bevy::utils::hashbrown::HashMap;
use tiled_parse::data_types::TiledMap;
#[derive(Component)]
#[require(Transform, Visibility)]
pub struct TiledMapScene(pub Handle<TiledMapAsset>);
#[derive(Component, Reflect)]
pub struct TiledMapContainer;
#[derive(Component, Reflect)]
pub enum TiledId {
Layer(tiled_parse::data_types::ID),
Tile(tiled_parse::data_types::ID),
Object(tiled_parse::data_types::ID),
}
#[derive(TypePath, Asset)]
pub struct TiledMapAsset {
pub map: TiledMap,
pub tilemap_textures: Vec<Handle<bevy::prelude::Image>>,
pub tilemap_atlases: Vec<Handle<TextureAtlasLayout>>,
pub scene: Handle<Scene>,
}
#[derive(Component, Reflect)]
pub struct SerializedComponents(pub HashMap<SceneSerializedComponents, Vec<u8>>);
#[derive(Reflect, PartialEq, Eq, Hash, Clone, Copy)]
pub enum SceneSerializedComponents {
SerCollider,
SerRigidBody,
}