diff --git a/Engine.Integration/Engine.Integration.LiteNetLib/LiteNetLibCommunicatorBase.cs b/Engine.Integration/Engine.Integration.LiteNetLib/LiteNetLibCommunicatorBase.cs index daa7a0d..78eb3b3 100644 --- a/Engine.Integration/Engine.Integration.LiteNetLib/LiteNetLibCommunicatorBase.cs +++ b/Engine.Integration/Engine.Integration.LiteNetLib/LiteNetLibCommunicatorBase.cs @@ -178,6 +178,7 @@ public abstract class LiteNetLibCommunicatorBase : Behaviour, IEnterUniverse, IE netPacketProcessor.RegisterNestedType(Vector3DNetPacker.Write, Vector3DNetPacker.Read); netPacketProcessor.RegisterNestedType(Vector3DIntNetPacker.Write, Vector3DIntNetPacker.Read); netPacketProcessor.RegisterNestedType(Vector4DNetPacker.Write, Vector4DNetPacker.Read); + netPacketProcessor.RegisterNestedType(Matrix4x4NetPacker.Write, Matrix4x4NetPacker.Read); } public INetworkCommunicator SubscribeToPackets(Event.EventHandler callback) diff --git a/Engine.Integration/Engine.Integration.LiteNetLib/Packers/Matrix4x4NetPacker.cs b/Engine.Integration/Engine.Integration.LiteNetLib/Packers/Matrix4x4NetPacker.cs new file mode 100644 index 0000000..a72536b --- /dev/null +++ b/Engine.Integration/Engine.Integration.LiteNetLib/Packers/Matrix4x4NetPacker.cs @@ -0,0 +1,61 @@ +using LiteNetLib.Utils; + +using Engine.Core; + +namespace Engine.Systems.Network.Packers; + +internal static class Matrix4x4NetPacker +{ + internal static void Write(NetDataWriter writer, Matrix4x4 data) + { + writer.Put(data.M11); + writer.Put(data.M12); + writer.Put(data.M13); + writer.Put(data.M14); + + writer.Put(data.M21); + writer.Put(data.M22); + writer.Put(data.M23); + writer.Put(data.M24); + + writer.Put(data.M31); + writer.Put(data.M32); + writer.Put(data.M33); + writer.Put(data.M34); + + writer.Put(data.M41); + writer.Put(data.M42); + writer.Put(data.M43); + writer.Put(data.M44); + } + + internal static Matrix4x4 Read(NetDataReader reader) + { + float m11 = reader.GetFloat(); + float m12 = reader.GetFloat(); + float m13 = reader.GetFloat(); + float m14 = reader.GetFloat(); + + float m21 = reader.GetFloat(); + float m22 = reader.GetFloat(); + float m23 = reader.GetFloat(); + float m24 = reader.GetFloat(); + + float m31 = reader.GetFloat(); + float m32 = reader.GetFloat(); + float m33 = reader.GetFloat(); + float m34 = reader.GetFloat(); + + float m41 = reader.GetFloat(); + float m42 = reader.GetFloat(); + float m43 = reader.GetFloat(); + float m44 = reader.GetFloat(); + + return new Matrix4x4( + m11, m12, m13, m14, + m21, m22, m23, m24, + m31, m32, m33, m34, + m41, m42, m43, m44 + ); + } +}