From 27eff9622370d5bca78ae70cb775dfc74944a8c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Albin=20Cor=C3=A9n?= <2108U9@gmail.com>
Date: Sun, 1 Apr 2018 10:03:14 +0200
Subject: [PATCH] Added BinaryIgnore attribute to ignore fields on
BinarySerialization
---
MLAPI/Attributes/BinaryIgnore.cs | 13 +++++++++++++
MLAPI/MLAPI.csproj | 1 +
.../NetworkingManagerComponents/BinarySerializer.cs | 7 +++----
3 files changed, 17 insertions(+), 4 deletions(-)
create mode 100644 MLAPI/Attributes/BinaryIgnore.cs
diff --git a/MLAPI/Attributes/BinaryIgnore.cs b/MLAPI/Attributes/BinaryIgnore.cs
new file mode 100644
index 0000000..01eca65
--- /dev/null
+++ b/MLAPI/Attributes/BinaryIgnore.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace MLAPI.Attributes
+{
+ ///
+ /// The attribute to use for variables that should be automatically. replicated from Server to Client.
+ ///
+ [AttributeUsage(AttributeTargets.Field)]
+ public class BinaryIgnore : Attribute
+ {
+
+ }
+}
diff --git a/MLAPI/MLAPI.csproj b/MLAPI/MLAPI.csproj
index 4c4de99..422af89 100644
--- a/MLAPI/MLAPI.csproj
+++ b/MLAPI/MLAPI.csproj
@@ -66,6 +66,7 @@
+
diff --git a/MLAPI/NetworkingManagerComponents/BinarySerializer.cs b/MLAPI/NetworkingManagerComponents/BinarySerializer.cs
index afd0135..d32ed6d 100644
--- a/MLAPI/NetworkingManagerComponents/BinarySerializer.cs
+++ b/MLAPI/NetworkingManagerComponents/BinarySerializer.cs
@@ -1,10 +1,9 @@
-using System;
+using MLAPI.Attributes;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
-using UnityEngine;
namespace MLAPI.NetworkingManagerComponents
{
@@ -37,7 +36,7 @@ namespace MLAPI.NetworkingManagerComponents
sortedFields = cachedFields[instance.GetType().FullName];
else
{
- sortedFields = instance.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(x => x.Name).ToArray();
+ sortedFields = instance.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(x => x.Name).Where(x => !x.IsDefined(typeof(BinaryIgnore), true)).ToArray();
cachedFields.Add(instance.GetType().FullName, sortedFields);
}
@@ -142,7 +141,7 @@ namespace MLAPI.NetworkingManagerComponents
sortedFields = cachedFields[instance.GetType().FullName];
else
{
- sortedFields = instance.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(x => x.Name).ToArray();
+ sortedFields = instance.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(x => x.Name).Where(x => !x.IsDefined(typeof(BinaryIgnore), true)).ToArray();
cachedFields.Add(instance.GetType().FullName, sortedFields);
}