use crate::bevy::*;
use bevy_app::App;
use bevy_ecs::component::Component;
use serde::{Deserialize, Serialize};
use serde_bytes::ByteBuf;
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Transform2D {
pub position: Vec2,
pub rotation: f32,
pub scale: Vec2,
pub skew: f32,
}
#[derive(Debug, Serialize, Default, Deserialize, Clone)]
pub struct Vec2 {
pub x: f32,
pub y: f32,
}
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Transform3D {
pub position: Vec3,
pub rotation: Vec3,
pub scale: Vec3,
}
#[derive(Debug, Serialize, Default, Deserialize, Clone)]
pub struct Vec3 {
pub x: f32,
pub y: f32,
pub z: f32,
}
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Text {
pub text: String,
pub skin: Option<String>,
}
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Skin {
pub skin: String,
pub state: Option<String>,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
pub struct TilemapLayer {
pub index: i32,
pub data: ByteBuf,
}
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Tilemap {
pub offset: Vec2i,
pub size: Vec2i,
pub tile_size: Vec2i,
pub layers: Vec<TilemapLayer>,
}
#[derive(Debug, Serialize, Default, Deserialize, Clone)]
pub struct Vec2i {
pub x: i32,
pub y: i32,
}
#[derive(Debug, Serialize, Component, Default, Deserialize, Clone)]
pub struct Color {
pub r: f32,
pub g: f32,
pub b: f32,
pub a: f32,
}
pub fn initialize(app: &mut App) {
app.add_net_variant::<Transform2D>();
app.add_net_variant::<Transform3D>();
app.add_net_variant::<Color>();
app.add_net_variant::<Text>();
app.add_net_variant::<Skin>();
app.add_net_variant::<Tilemap>();
}