naia_shared/world/component/
component_update.rs1use naia_serde::{BitReader, OwnedBitReader, SerdeErr};
2
3use crate::{
4 world::component::component_kinds::ComponentKind, ComponentKinds,
5 LocalEntityAndGlobalEntityConverter, RemoteEntity,
6};
7
8pub struct ComponentUpdate {
9 pub kind: ComponentKind,
10 buffer: OwnedBitReader,
11}
12
13impl ComponentUpdate {
14 pub fn new(kind: ComponentKind, buffer: OwnedBitReader) -> Self {
15 Self { kind, buffer }
16 }
17
18 pub fn reader(&self) -> BitReader {
19 self.buffer.borrow()
20 }
21
22 pub(crate) fn split_into_waiting_and_ready(
23 self,
24 converter: &dyn LocalEntityAndGlobalEntityConverter,
25 component_kinds: &ComponentKinds,
26 ) -> Result<
27 (
28 Option<Vec<(RemoteEntity, ComponentFieldUpdate)>>,
29 Option<Self>,
30 ),
31 SerdeErr,
32 > {
33 let kind = self.kind;
34 component_kinds.split_update(converter, &kind, self)
35 }
36}
37
38pub struct ComponentFieldUpdate {
39 id: u8,
40 buffer: OwnedBitReader,
41}
42
43impl ComponentFieldUpdate {
44 pub fn new(id: u8, buffer: OwnedBitReader) -> Self {
45 Self { id, buffer }
46 }
47
48 pub fn field_id(&self) -> u8 {
49 self.id
50 }
51
52 pub fn reader(&self) -> BitReader {
53 self.buffer.borrow()
54 }
55}