Skip to content

Commit 51d7e0d

Browse files
committed
feat: add half precision
1 parent 494991f commit 51d7e0d

File tree

6 files changed

+120
-0
lines changed

6 files changed

+120
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using UnityEngine;
2+
using LiteNetLib.Utils;
3+
4+
public struct HalfPrecision : INetSerializable
5+
{
6+
public static implicit operator HalfPrecision(float value) { return new HalfPrecision(value); }
7+
public static implicit operator float(HalfPrecision value) { return Mathf.HalfToFloat(value.halfValue); }
8+
9+
public ushort halfValue;
10+
11+
public HalfPrecision(float value)
12+
{
13+
halfValue = Mathf.FloatToHalf(value);
14+
}
15+
16+
public void Serialize(NetDataWriter writer)
17+
{
18+
writer.PutPackedUShort(halfValue);
19+
}
20+
21+
public void Deserialize(NetDataReader reader)
22+
{
23+
halfValue = reader.GetPackedUShort();
24+
}
25+
}

Scripts/PackedVariables/HalfPrecision.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using UnityEngine;
2+
using LiteNetLib.Utils;
3+
4+
public struct HalfVector2 : INetSerializable
5+
{
6+
public static implicit operator HalfVector2(Vector2 value) { return new HalfVector2(value); }
7+
public static implicit operator Vector2(HalfVector2 value) { return new Vector2(Mathf.HalfToFloat(value.x), Mathf.HalfToFloat(value.y)); }
8+
9+
public ushort x;
10+
public ushort y;
11+
12+
public HalfVector2(Vector2 vector2)
13+
{
14+
x = Mathf.FloatToHalf(vector2.x);
15+
y = Mathf.FloatToHalf(vector2.y);
16+
}
17+
18+
public void Serialize(NetDataWriter writer)
19+
{
20+
writer.PutPackedUShort(x);
21+
writer.PutPackedUShort(y);
22+
}
23+
24+
public void Deserialize(NetDataReader reader)
25+
{
26+
x = reader.GetPackedUShort();
27+
y = reader.GetPackedUShort();
28+
}
29+
}

Scripts/PackedVariables/HalfVector2.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using UnityEngine;
2+
using LiteNetLib.Utils;
3+
4+
public struct HalfVector3 : INetSerializable
5+
{
6+
public static implicit operator HalfVector3(Vector3 value) { return new HalfVector3(value); }
7+
public static implicit operator Vector3(HalfVector3 value) { return new Vector3(Mathf.HalfToFloat(value.x), Mathf.HalfToFloat(value.y), Mathf.HalfToFloat(value.z)); }
8+
9+
public ushort x;
10+
public ushort y;
11+
public ushort z;
12+
13+
public HalfVector3(Vector3 vector3)
14+
{
15+
x = Mathf.FloatToHalf(vector3.x);
16+
y = Mathf.FloatToHalf(vector3.y);
17+
z = Mathf.FloatToHalf(vector3.z);
18+
}
19+
20+
public void Serialize(NetDataWriter writer)
21+
{
22+
writer.PutPackedUShort(x);
23+
writer.PutPackedUShort(y);
24+
writer.PutPackedUShort(z);
25+
}
26+
27+
public void Deserialize(NetDataReader reader)
28+
{
29+
x = reader.GetPackedUShort();
30+
y = reader.GetPackedUShort();
31+
z = reader.GetPackedUShort();
32+
}
33+
}

Scripts/PackedVariables/HalfVector3.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)