From 26e2eddd1efeb0a5fff8ffabebefdae48c4a65dc Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Thu, 21 Nov 2024 12:17:44 -0500 Subject: Thu Nov 21 12:17:44 PM EST 2024 --- src/payload/components/mod.rs | 56 +++++++++++++++++++++++++++++++++++++++++++ src/payload/mod.rs | 27 +++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/payload/components/mod.rs create mode 100644 src/payload/mod.rs (limited to 'src/payload') diff --git a/src/payload/components/mod.rs b/src/payload/components/mod.rs new file mode 100644 index 0000000..e8919fd --- /dev/null +++ b/src/payload/components/mod.rs @@ -0,0 +1,56 @@ +use std::collections::HashMap; + +use avian3d::prelude::RigidBody; +use bevy::prelude::*; +use serde::{Deserialize, Serialize}; +use yarnspinner::core::YarnValue; + +#[derive(Serialize, Deserialize, Clone, Default, Deref, DerefMut, Debug)] +pub struct Transform(pub bevy::prelude::Transform); + +#[derive(Serialize, Deserialize, Clone, Default, Deref, DerefMut, Debug)] +pub struct Name(pub String); + +#[derive(Serialize, Deserialize, Clone, Default, Debug)] +pub struct Actor { + pub local_variables: HashMap, + pub yarn_source: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct Voice { + pub pitch: i32, + pub preset: i32, + pub bank: i32, + pub variance: u32, + pub speed: f32, +} + +impl Default for Voice { + fn default() -> Self { + Self { + pitch: 60, + preset: 0, + bank: 0, + variance: 3, + speed: 1.0, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Default, Deref, DerefMut, Debug)] +pub struct Rigidbody(pub RigidBody); + +#[derive(Serialize, Deserialize, Clone, Default, Debug)] +pub struct MeshCollider { + pub convex: bool, + pub sensor: bool, +} + +#[derive(Serialize, Deserialize, Clone, Default, Debug)] +pub struct Script { + pub lua_source: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Default, Deref, DerefMut, Debug)] +pub struct Relationships(pub HashMap); diff --git a/src/payload/mod.rs b/src/payload/mod.rs new file mode 100644 index 0000000..483fee5 --- /dev/null +++ b/src/payload/mod.rs @@ -0,0 +1,27 @@ +use serde::{Deserialize, Serialize}; +use uuid::Uuid; + +pub mod components; + +#[derive(Serialize, Deserialize, Default, Clone, Debug)] +pub struct DirworldEntityPayload { + pub id: Uuid, + pub transform: components::Transform, + pub name: Option, + pub actor: Option, + pub voice: Option, + pub rigidbody: Option, + pub mesh_collider: Option, + pub scripts: Option>, + pub relationships: Option, +} + +impl DirworldEntityPayload { + pub fn new() -> Self { + Self { + id: Uuid::new_v4(), + ..Default::default() + } + } +} + -- cgit v1.2.3