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); }