silo 0.1.0

多引擎融合框架 - 整合 Bevy、Godot 和 Unity 的跨引擎通信调度平台
Documentation
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>();
}