blob: e26667ff498043ab3fd34b2d7d7e121eacfbf639 (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#ifndef PKE_SERIALIZATION_HPP
#define PKE_SERIALIZATION_HPP
#include "kve.hpp"
#include "pk.h"
#include "components.hpp"
#include "scene-types.hpp"
#define iccsc inline const char* const
iccsc SRLZTN_FILE_BEGIN = ":PKFB:";
iccsc SRLZTN_FILE_END = ":PKFE:";
iccsc SRLZTN_FILE_VERSION = ":0:";
iccsc SRLZTN_NUM_SEPARATOR = ";";
iccsc SRLZTN_HANDLE_SEPARATOR = "!";
iccsc SRLZTN_KVE_END = "";
iccsc SRLZTN_MULTILINE_END = ":MULTILINE_END:";
iccsc SRLZTN_CHILD_ID = "ChildId:";
iccsc SRLZTN_OBJ_END = "";
iccsc SRLZTN_OBJ_INSTANCE_POSITION = "InstPos";
iccsc SRLZTN_OBJ_INSTANCE = "Instance";
iccsc SRLZTN_OBJ_CAMERA = "Camera";
iccsc SRLZTN_OBJ_UI_BOX = "UIBox";
iccsc SRLZTN_OBJ_FONT_RENDER = "FontRender";
iccsc SRLZTN_OBJ_FONT_RENDER_SETTINGS = "FontRenderSettings";
iccsc SRLZTN_OBJ_UI_BOX_TYPE_DATA = "UIBoxTypeData";
iccsc SRLZTN_POSROT_POS = "Position:";
iccsc SRLZTN_POSROT_ROT = "Rotation:";
iccsc SRLZTN_POSROT_SCALE = "Scale:";
iccsc SRLZTN_INSTANCE_COMPONENT_HANDLE = "InstanceHandle:";
iccsc SRLZTN_INSTANCE_COMPONENT_ENTITY_HANDLE = "EntityHandle:";
iccsc SRLZTN_INSTANCE_COMPONENT_ENTITY_TYPE_CODE = "EntityTypeCode:";
iccsc SRLZTN_INSTANCE_COMPONENT_UUID = "UUID:";
iccsc SRLZTN_INSTANCE_COMPONENT_MASS = "Mass:";
iccsc SRLZTN_INSTANCE_COMPONENT_COLLISION_LAYER = "CollisionLayer:";
iccsc SRLZTN_INSTANCE_COMPONENT_COLLISION_MASK = "CollisionMask:";
iccsc SRLZTN_INSTANCE_COMPONENT_COLLISION_CB_SIGNATURE = "CollisionCBSignature:";
iccsc SRLZTN_CAMERA_TYPE = "Type:";
iccsc SRLZTN_CAMERA_UUID = "UUID:";
iccsc SRLZTN_CAMERA_ORIENTATION = "Orientation:";
iccsc SRLZTN_CAMERA_TARGET_INSTANCE_UUID = "TargetUUID:";
iccsc SRLZTN_CAMERA_IS_PRIMARY = "IsPrimary:";
iccsc SRLZTN_UI_BOX_UUID = "UUID:";
iccsc SRLZTN_UI_BOX_PARENT_UUID = "ParentUUID:";
iccsc SRLZTN_UI_BOX_FLAGS = "Flags:";
iccsc SRLZTN_UI_BOX_POS_TOP_LEFT = "PosTopLeft:";
iccsc SRLZTN_UI_BOX_MIN_SIZE = "MinSize:";
iccsc SRLZTN_UI_BOX_MAX_SIZE = "MaxSize:";
iccsc SRLZTN_UI_BOX_FLEX_WEIGHT = "FlexWeight:";
iccsc SRLZTN_UI_BOX_FLEX_DIRECTION = "FlexDirection:";
iccsc SRLZTN_UI_BOX_LAYER = "Layer:";
iccsc SRLZTN_UI_BOX_TYPE = "Type:";
iccsc SRLZTN_UI_BOX_DATA_TEXT_FONT_RENDER_UUID = "FontRenderUUID:";
iccsc SRLZTN_UI_FONT_RENDER_UUID = "UUID:";
iccsc SRLZTN_UI_FONT_RENDER_FONT_TYPE_TITLE = "FontTypeTitle:";
iccsc SRLZTN_UI_FONT_RENDER_TEXT_BEGIN = "TextBegin::";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SCALE = "CharScale:";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_LINE_HEIGHT_SCALE = "LineHeightScale:";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SPACING_SCALE = "CharSpacingScale:";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_SIZE = "SurfaceAreaSize:";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_POS = "SurfaceAreaPos:";
iccsc SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_FLAGS = "SurfaceAreaFlags:";
struct srlztn_ecs_mapping {
pk_uuid serialized_uuid = pk_uuid_zed;
Entity_Base *created_entity = nullptr;
CompInstance *created_instance = nullptr;
};
struct srlztn_serialize_helper {
pk_membucket *bkt;
pk_arr_t<pke_kve_container> kvp_containers;
pk_handle handle_head;
};
struct srlztn_deserialize_helper {
pk_membucket *bkt;
pke_scene *scene;
pk_arr_t<srlztn_ecs_mapping> mapping;
pk_arr_t<pke_kve_container> kvp_containers;
};
bool srlztn_mapping_find_first_handle_by_uuid(void *handle, void *mapping);
bool srlztn_kvec_find_first_by_handle(void *handle, void *container);
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_project(srlztn_serialize_helper *helper);
void pke_deserialize_project(srlztn_deserialize_helper *helper);
void pke_serialize_project_to_stream(std::ostream &o, srlztn_serialize_helper *helper);
void pke_deserialize_project_from_stream(std::istream &i, srlztn_deserialize_helper *helper);
void pke_serialize_scene(srlztn_serialize_helper *helper);
void pke_deserialize_scene(srlztn_deserialize_helper *helper);
void pke_serialize_scene_to_stream(std::ostream &o, srlztn_serialize_helper *helper);
void pke_deserialize_scene_from_stream(std::istream &i, srlztn_deserialize_helper *helper);
void pke_serialize_level(srlztn_serialize_helper *helper);
void pke_deserialize_level(srlztn_deserialize_helper *helper);
void pke_serialize_level_to_stream(std::ostream &o, srlztn_serialize_helper *helper);
void pke_deserialize_level_from_stream(std::istream &i, srlztn_deserialize_helper *helper);
#endif /* PKE_SERIALIZATION_HPP */
|