PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
physics_serialization.h
1#pragma once
2
3#include "pixelbullet/physics/physics_types.h"
4#include "pixelbullet/serialization/node.h"
5
6#include <string>
7
8namespace pixelbullet
9{
10inline Node& operator<<(Node& node, const ColliderShapeType& value)
11{
12 switch (value)
13 {
14 case ColliderShapeType::Box:
15 node << "Box";
16 break;
17 case ColliderShapeType::Sphere:
18 node << "Sphere";
19 break;
20 case ColliderShapeType::Capsule:
21 node << "Capsule";
22 break;
23 }
24 return node;
25}
26
27inline const Node& operator>>(const Node& node, ColliderShapeType& value)
28{
29 std::string serialized;
30 node >> serialized;
31 if (serialized == "Sphere")
32 {
33 value = ColliderShapeType::Sphere;
34 }
35 else if (serialized == "Capsule")
36 {
37 value = ColliderShapeType::Capsule;
38 }
39 else
40 {
41 value = ColliderShapeType::Box;
42 }
43 return node;
44}
45
46inline Node& operator<<(Node& node, const RigidBodyMotionType& value)
47{
48 switch (value)
49 {
50 case RigidBodyMotionType::Static:
51 node << "Static";
52 break;
53 case RigidBodyMotionType::Kinematic:
54 node << "Kinematic";
55 break;
56 case RigidBodyMotionType::Dynamic:
57 node << "Dynamic";
58 break;
59 }
60 return node;
61}
62
63inline const Node& operator>>(const Node& node, RigidBodyMotionType& value)
64{
65 std::string serialized;
66 node >> serialized;
67 if (serialized == "Kinematic")
68 {
69 value = RigidBodyMotionType::Kinematic;
70 }
71 else if (serialized == "Dynamic")
72 {
73 value = RigidBodyMotionType::Dynamic;
74 }
75 else
76 {
77 value = RigidBodyMotionType::Static;
78 }
79 return node;
80}
81} // namespace pixelbullet
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition node.h:49