aboutsummaryrefslogtreecommitdiff
path: root/src/payload
diff options
context:
space:
mode:
Diffstat (limited to 'src/payload')
-rw-r--r--src/payload/components/mod.rs56
-rw-r--r--src/payload/mod.rs27
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()
+ }
+ }
+}
+