blob: f4180e4c879f354d36088d28ad54b72fec139574 (
plain)
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
|
#ifndef PKE_SERIALIZATION_HPP
#define PKE_SERIALIZATION_HPP
#include "pk.h"
#include "components.hpp"
#include "scene-types.hpp"
inline const char* const SRLZTN_FILE_BEGIN = ":PKFB:";
inline const char* const SRLZTN_FILE_END = ":PKFE:";
inline const char* const SRLZTN_FILE_VERSION = ":0:";
inline const char* const SRLZTN_OBJ_END = "";
inline const char* const SRLZTN_OBJ_INSTANCE = "Instance:";
inline const char* const SRLZTN_OBJ_CAMERA = "Camera:";
inline const char* const SRLZTN_POSROT_POS = "Position: ";
inline const char* const SRLZTN_POSROT_ROT = "Rotation: ";
inline const char* const SRLZTN_POSROT_SCALE = "Scale: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_HANDLE = "InstanceHandle: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_HANDLE = "EntityHandle: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_TYPE_CODE = "EntityTypeCode: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_UUID = "UUID: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_MASS = "Mass: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_LAYER = "CollisionLayer: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_MASK = "CollisionMask: ";
inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_CB_SIGNATURE = "CollisionCBSignature: ";
inline const char* const SRLZTN_CAMERA_TARGET = "Target: ";
inline const char* const SRLZTN_CAMERA_TYPE = "Type: ";
inline const char* const SRLZTN_CAMERA_UUID = "UUID: ";
inline const char* const SRLZTN_CAMERA_ORIENTATION = "Orientation: ";
inline const char* const SRLZTN_CAMERA_INSTANCE_HANDLE = "InstanceHandle: ";
inline const char* const SRLZTN_CAMERA_TARGET_INSTANCE_UUID = "TargetUUID: ";
inline const char* const SRLZTN_CAMERA_IS_PRIMARY = "IsPrimary: ";
struct srlztn_instance_mapping {
pk_uuid serialized_uuid = pk_uuid_zed;
Entity_Base *created_entity = nullptr;
CompInstance *created_instance = nullptr;
};
struct srlztn_serialize_helper {
pk_membucket *bkt;
std::ostringstream o;
};
struct srlztn_deserialize_helper {
size_t read_line_len = 256;
pke_scene *scene;
pk_membucket *bkt;
char *read_line;
std::istringstream i;
pk_arr_t<srlztn_instance_mapping> mapping;
};
srlztn_serialize_helper *pke_serialize_init(pk_membucket *bkt);
srlztn_deserialize_helper *pke_deserialize_init(pk_membucket *bkt);
void pke_serialize_teardown(srlztn_serialize_helper *helper);
void pke_deserialize_teardown(srlztn_deserialize_helper *helper);
void pke_serialize_file_project(srlztn_serialize_helper *helper);
void pke_deserialize_file_project(srlztn_deserialize_helper *helper);
void pke_serialize_file_scene(srlztn_serialize_helper *helper);
void pke_deserialize_file_scene(srlztn_deserialize_helper *helper);
void pke_serialize_file_level(srlztn_serialize_helper *helper);
void pke_deserialize_file_level(srlztn_deserialize_helper *helper);
#endif /* PKE_SERIALIZATION_HPP */
|