dreamwell_engine/physics/
semantic_binding.rs1use super::properties::PropertyAssignment;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6pub struct SemanticBinding {
7 pub trait_tags: Vec<String>,
8 pub signal_tags: Vec<String>,
9 pub receiver_tags: Vec<String>,
10 pub property_defaults: Vec<PropertyAssignment>,
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16
17 #[test]
18 fn semantic_binding_default() {
19 let sb = SemanticBinding::default();
20 assert!(sb.trait_tags.is_empty());
21 }
22
23 #[test]
24 fn semantic_binding_serde() {
25 let sb = SemanticBinding {
26 trait_tags: vec!["isDebris".into(), "isStone".into()],
27 signal_tags: vec!["signal.fractured".into()],
28 receiver_tags: vec!["receive.force".into()],
29 property_defaults: vec![],
30 };
31 let json = serde_json::to_string(&sb).unwrap();
32 let restored: SemanticBinding = serde_json::from_str(&json).unwrap();
33 assert_eq!(restored.trait_tags.len(), 2);
34 }
35}