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