1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
use std::io::Result as Res;
use endio::{Deserialize, Serialize};
use endio_bit::BEBitWriter;
use lu_packets_derive::{BitVariantTests, ReplicaSerde};
use crate::common::ObjId;
use crate::world::{Vector3, Quaternion};
use super::{ComponentConstruction, ComponentProtocol, ComponentSerialization};
#[derive(Debug, Deserialize, PartialEq, Serialize)]
#[repr(i32)]
pub enum PhysicsBehaviorType {
Invalid = -1,
Ground,
Flying,
Standard,
Dynamic,
}
#[derive(Debug, PartialEq, ReplicaSerde)]
pub struct ModelBehaviorInfo {
pub is_pickable: bool,
pub physics_behavior_type: PhysicsBehaviorType,
pub original_position: Vector3,
pub original_rotation: Quaternion,
}
#[derive(Debug, PartialEq, ReplicaSerde)]
pub struct ModelEditingInfo {
pub old_object_id: ObjId,
pub player_editing_model: ObjId,
}
#[derive(Debug, PartialEq, ReplicaSerde)]
pub struct MutableModelBehaviorConstructionInfo {
pub behavior_count: u32,
pub is_paused: bool,
pub model_editing_info: Option<ModelEditingInfo>,
}
#[derive(BitVariantTests, Debug, PartialEq, ReplicaSerde)]
pub struct MutableModelBehaviorConstruction {
pub model_behavior_info: Option<ModelBehaviorInfo>,
pub mutable_model_behavior_construction_info: Option<MutableModelBehaviorConstructionInfo>,
}
impl ComponentConstruction for MutableModelBehaviorConstruction {
fn ser(&self, writer: &mut BEBitWriter<Vec<u8>>) -> Res<()> {
self.serialize(writer)
}
}
#[derive(Debug, PartialEq, ReplicaSerde)]
pub struct MutableModelBehaviorSerializationInfo {
pub behavior_count: u32,
pub is_paused: bool,
}
#[derive(BitVariantTests, Debug, PartialEq, ReplicaSerde)]
pub struct MutableModelBehaviorSerialization {
pub model_behavior_info: Option<ModelBehaviorInfo>,
pub mutable_model_behavior_serialization_info: Option<MutableModelBehaviorSerializationInfo>,
}
impl ComponentSerialization for MutableModelBehaviorSerialization {
fn ser(&self, writer: &mut BEBitWriter<Vec<u8>>) -> Res<()> {
self.serialize(writer)
}
}
pub struct MutableModelBehaviorProtocol;
impl ComponentProtocol for MutableModelBehaviorProtocol {
type Construction = MutableModelBehaviorConstruction;
type Serialization = MutableModelBehaviorSerialization;
}