diff options
author | 2024-11-21 12:17:44 -0500 | |
---|---|---|
committer | 2024-11-21 12:17:44 -0500 | |
commit | 26e2eddd1efeb0a5fff8ffabebefdae48c4a65dc (patch) | |
tree | 7f0903a6c90fb4e09d2894f55cffd0acbcb51350 /src/payload | |
parent | 99c398cc127dbc83480f98fea8c76f7c19d4dce8 (diff) |
Thu Nov 21 12:17:44 PM EST 2024
Diffstat (limited to 'src/payload')
-rw-r--r-- | src/payload/components/mod.rs | 56 | ||||
-rw-r--r-- | src/payload/mod.rs | 27 |
2 files changed, 83 insertions, 0 deletions
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<String, YarnValue>, + pub yarn_source: Vec<u8>, +} + +#[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<u8>, +} + +#[derive(Serialize, Deserialize, Clone, Default, Deref, DerefMut, Debug)] +pub struct Relationships(pub HashMap<String, [u8; 16]>); 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<components::Name>, + pub actor: Option<components::Actor>, + pub voice: Option<components::Voice>, + pub rigidbody: Option<components::Rigidbody>, + pub mesh_collider: Option<components::MeshCollider>, + pub scripts: Option<Vec<components::Script>>, + pub relationships: Option<components::Relationships>, +} + +impl DirworldEntityPayload { + pub fn new() -> Self { + Self { + id: Uuid::new_v4(), + ..Default::default() + } + } +} + |