mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
SyncVarProcessor.syncVarNetIds converted to Dictionary for easier usage and to avoid the netIdFieldCounters
This commit is contained in:
parent
70048fc380
commit
57b848cc34
@ -11,7 +11,7 @@ class NetworkBehaviourProcessor
|
||||
{
|
||||
readonly List<FieldDefinition> m_SyncVars = new List<FieldDefinition>();
|
||||
readonly List<FieldDefinition> m_SyncObjects = new List<FieldDefinition>();
|
||||
readonly List<FieldDefinition> m_SyncVarNetIds = new List<FieldDefinition>();
|
||||
readonly Dictionary<FieldDefinition, FieldDefinition> m_SyncVarNetIds = new Dictionary<FieldDefinition, FieldDefinition>(); // <SyncVarField,NetIdField>
|
||||
readonly List<MethodDefinition> m_Cmds = new List<MethodDefinition>();
|
||||
readonly List<MethodDefinition> m_Rpcs = new List<MethodDefinition>();
|
||||
readonly List<MethodDefinition> m_TargetRpcs = new List<MethodDefinition>();
|
||||
@ -486,7 +486,6 @@ void GenerateDeSerialization()
|
||||
serWorker.Append(serWorker.Create(OpCodes.Ldarg_2));
|
||||
serWorker.Append(serWorker.Create(OpCodes.Brfalse, initialStateLabel));
|
||||
|
||||
int netIdFieldCounter = 0;
|
||||
foreach (FieldDefinition syncVar in m_SyncVars)
|
||||
{
|
||||
// assign value
|
||||
@ -501,8 +500,7 @@ void GenerateDeSerialization()
|
||||
// OnDeserialize reads to __netId manually so we can use
|
||||
// lookups in the getter (so it still works if objects
|
||||
// move in and out of range repeatedly)
|
||||
FieldDefinition netIdField = m_SyncVarNetIds[netIdFieldCounter];
|
||||
netIdFieldCounter += 1;
|
||||
FieldDefinition netIdField = m_SyncVarNetIds[syncVar];
|
||||
|
||||
serWorker.Append(serWorker.Create(OpCodes.Callvirt, Weaver.NetworkReaderReadPacked32));
|
||||
serWorker.Append(serWorker.Create(OpCodes.Stfld, netIdField));
|
||||
@ -540,7 +538,6 @@ void GenerateDeSerialization()
|
||||
serWorker.Append(serWorker.Create(OpCodes.Stloc_0));
|
||||
|
||||
// conditionally read each syncvar
|
||||
netIdFieldCounter = 0; // reset
|
||||
int dirtyBit = Weaver.GetSyncVarStart(m_td.BaseType.FullName); // start at number of syncvars in parent
|
||||
foreach (FieldDefinition syncVar in m_SyncVars)
|
||||
{
|
||||
@ -567,8 +564,7 @@ void GenerateDeSerialization()
|
||||
// OnDeserialize reads to __netId manually so we can use
|
||||
// lookups in the getter (so it still works if objects
|
||||
// move in and out of range repeatedly)
|
||||
FieldDefinition netIdField = m_SyncVarNetIds[netIdFieldCounter];
|
||||
netIdFieldCounter += 1;
|
||||
FieldDefinition netIdField = m_SyncVarNetIds[syncVar];
|
||||
|
||||
if (foundMethod == null)
|
||||
{
|
||||
|
@ -191,7 +191,7 @@ public static MethodDefinition ProcessSyncVarSet(TypeDefinition td, FieldDefinit
|
||||
return set;
|
||||
}
|
||||
|
||||
public static void ProcessSyncVar(TypeDefinition td, FieldDefinition fd, List<FieldDefinition> syncVarNetIds, long dirtyBit)
|
||||
public static void ProcessSyncVar(TypeDefinition td, FieldDefinition fd, Dictionary<FieldDefinition, FieldDefinition> syncVarNetIds, long dirtyBit)
|
||||
{
|
||||
string originalName = fd.Name;
|
||||
Weaver.DLog(td, "Sync Var " + fd.Name + " " + fd.FieldType + " " + Weaver.gameObjectType);
|
||||
@ -205,7 +205,7 @@ public static void ProcessSyncVar(TypeDefinition td, FieldDefinition fd, List<Fi
|
||||
FieldAttributes.Private,
|
||||
Weaver.uint32Type);
|
||||
|
||||
syncVarNetIds.Add(netFieldId);
|
||||
syncVarNetIds[fd] = netFieldId;
|
||||
Weaver.lists.netIdFields.Add(netFieldId);
|
||||
}
|
||||
|
||||
@ -236,7 +236,7 @@ public static void ProcessSyncVar(TypeDefinition td, FieldDefinition fd, List<Fi
|
||||
}
|
||||
}
|
||||
|
||||
public static void ProcessSyncVars(TypeDefinition td, List<FieldDefinition> syncVars, List<FieldDefinition> syncObjects, List<FieldDefinition> syncVarNetIds)
|
||||
public static void ProcessSyncVars(TypeDefinition td, List<FieldDefinition> syncVars, List<FieldDefinition> syncObjects, Dictionary<FieldDefinition, FieldDefinition> syncVarNetIds)
|
||||
{
|
||||
int numSyncVars = 0;
|
||||
|
||||
@ -353,7 +353,8 @@ public static void ProcessSyncVars(TypeDefinition td, List<FieldDefinition> sync
|
||||
}
|
||||
}
|
||||
|
||||
foreach (FieldDefinition fd in syncVarNetIds)
|
||||
// add all the new SyncVar __netId fields
|
||||
foreach (FieldDefinition fd in syncVarNetIds.Values)
|
||||
{
|
||||
td.Fields.Add(fd);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user