-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSerialiseHelper.cs
136 lines (110 loc) · 3.41 KB
/
SerialiseHelper.cs
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using StereoKit;
using System;
using System.Collections.Generic;
using System.Linq;
static public class SH
{
static public string topLevelSeperator = "|#|";
static public string arraySeperator = "{#}";
static public string arrayElementSeperator = "{,}";
static public string actionOutcomeFieldSeperator = "[/]";
static public string actionOutcomeArraySeperator = "[,]";
static private string vs = "|+|";
static private string ps = "|++|";
static public string Serialise(string value)
{
return value;
}
static public void UnSerialise(string value, ref String output)
{
output = value;
}
static public string Serialise(List<int> value)
{
List<string> str = new List<string>();
foreach (int i in value)
str.Add("" + i);
return string.Join(':',str);
}
static public void UnSerialise(string value, ref List<int> output)
{
output = new List<int>();
if (value != "")
{
string[] bits = value.Split(':');
foreach (string s in bits)
output.Add(int.Parse(s));
}
}
static public string Serialise(string[] strings)
{
return string.Join(vs, strings);
}
static public void UnSerialise(string value, ref String[] output)
{
output = value.Split(vs);
}
static public string Serialise(int value)
{
return "" + value;
}
static public void UnSerialise(string value, ref int output)
{
output = int.Parse(value);
}
static public string Serialise(float value)
{
return "" + value;
}
static public void UnSerialise(string value, ref float output)
{
output = float.Parse(value);
}
static public string Serialise(bool value) {
return "" + value;
}
static public void UnSerialise(string value, ref bool output)
{
output = value.ToLower() == "true";
}
static public string Serialise(Pose value)
{
return Serialise(value.position) + ps + Serialise(value.orientation);
}
static public void UnSerialise(string value, ref Pose output)
{
string[] bits = value.Split(ps);
Vec3 v = new Vec3();
UnSerialise(bits[0], ref v);
Quat q = new Quat();
UnSerialise(bits[1], ref q);
output = new Pose(v, q);
}
static public string Serialise(Vec3 value)
{
return value.x + vs + value.y + vs + value.z;
}
static public void UnSerialise(string value, ref Vec3 output)
{
string[] bits = value.Split(vs);
output = new Vec3(float.Parse(bits[0]), float.Parse(bits[1]), float.Parse(bits[2]));
}
static public string Serialise(Quat value)
{
return value.x + vs + value.y + vs + value.z + vs + value.w;
}
static public void UnSerialise(string value, ref Quat output)
{
string[] bits = value.Split(vs);
output = new Quat(float.Parse(bits[0]), float.Parse(bits[1]), float.Parse(bits[2]), float.Parse(bits[3]));
}
static public string Serialise(Color value)
{
return value.r + vs + value.g + vs + value.b + vs + value.a;
}
static public void UnSerialise(string value, ref Color output)
{
string[] bits = value.Split(vs);
output = new Color(float.Parse(bits[0]), float.Parse(bits[1]), float.Parse(bits[2]), float.Parse(bits[3]));
}
}