1extern crate flatbuffers;
2extern crate flatbuffers_retained;
3
4mod monster_generated;
5
6pub use monster_generated::my_game::sample::{
7 root_as_monster, Color, Equipment, Monster, MonsterArgs, Vec3, Weapon, WeaponArgs,
8};
9
10fn main() -> Result<(), flatbuffers::InvalidFlatbuffer> {
11 let mut builder = flatbuffers::FlatBufferBuilder::new();
12 let orc = Monster::create(
13 &mut builder,
14 &MonsterArgs {
15 pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
16 mana: 150,
17 hp: 80,
18 color: Color::Red,
19 ..Default::default()
20 },
21 );
22 builder.finish(orc, None);
23 let buf = builder.finished_data().to_vec();
24 let monster = flatbuffers_retained::FlatbufferRetained::<Monster>::new(buf)?;
25
26 assert_eq!(monster.get().hp(), 80);
27 assert_eq!(monster.get().mana(), 150);
28 assert_eq!(monster.get().pos().unwrap().y(), 2.0f32);
29
30 builder.reset();
31 let orc2 = Monster::create(
32 &mut builder,
33 &MonsterArgs {
34 pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
35 mana: 220,
36 hp: 81,
37 color: Color::Blue,
38 ..Default::default()
39 },
40 );
41 builder.finish_size_prefixed(orc2, None);
42 let size_prefixed_buf = builder.finished_data().to_vec();
43 let monster2 =
44 flatbuffers_retained::SizePrefixedFlatbufferRetained::<Monster>::new(size_prefixed_buf)?;
45
46 let monster2_ptr = monster2.get();
47 assert_eq!(monster2_ptr.hp(), 81);
48
49 Ok(())
50}