This commit is contained in:
JohnCorby 2022-01-13 23:51:06 -08:00
parent e338b84aaf
commit 4f8ad18f22
3 changed files with 6 additions and 4 deletions

View File

@ -360,7 +360,7 @@ namespace Mirror.Weaver
continue; continue;
// todo does this even work? // todo does this even work?
Log.Error($"read using {method}", klass); Log.Error($"! read using {method}", klass);
// mismatched ldloca/ldloc for struct/class combinations is invalid IL, which causes crash at runtime // mismatched ldloca/ldloc for struct/class combinations is invalid IL, which causes crash at runtime
var opcode = klass.IsValueType ? OpCodes.Ldloca : OpCodes.Ldloc; var opcode = klass.IsValueType ? OpCodes.Ldloca : OpCodes.Ldloc;
worker.Emit(opcode, 0); // the klass worker.Emit(opcode, 0); // the klass
@ -388,6 +388,7 @@ namespace Mirror.Weaver
if (readFunc != null) if (readFunc != null)
{ {
worker.Emit(OpCodes.Ldarg_0); worker.Emit(OpCodes.Ldarg_0);
Log.Error($"! read field {field}", variable);
worker.Emit(OpCodes.Call, readFunc); worker.Emit(OpCodes.Call, readFunc);
} }
else else

View File

@ -276,7 +276,7 @@ namespace Mirror.Weaver
continue; continue;
// todo does this even work? // todo does this even work?
Log.Error($"write using {method}", klass); Log.Error($"! write using {method}", klass);
worker.Emit(OpCodes.Ldarg_1); // the klass worker.Emit(OpCodes.Ldarg_1); // the klass
worker.Emit(OpCodes.Ldarg_0); // the writer worker.Emit(OpCodes.Ldarg_0); // the writer
worker.Emit(OpCodes.Callvirt, method); worker.Emit(OpCodes.Callvirt, method);
@ -307,6 +307,7 @@ namespace Mirror.Weaver
worker.Emit(OpCodes.Ldarg_0); worker.Emit(OpCodes.Ldarg_0);
worker.Emit(OpCodes.Ldarg_1); worker.Emit(OpCodes.Ldarg_1);
worker.Emit(OpCodes.Ldfld, fieldRef); worker.Emit(OpCodes.Ldfld, fieldRef);
Log.Error($"! write field {field}", variable);
worker.Emit(OpCodes.Call, writeFunc); worker.Emit(OpCodes.Call, writeFunc);
} }

View File

@ -22,13 +22,13 @@ namespace QSB.AuthoritySync
public override void Serialize(NetworkWriter writer) public override void Serialize(NetworkWriter writer)
{ {
base.Serialize(writer); base.Serialize(writer);
writer.Write(NetId); writer.WriteUInt(NetId.Value);
} }
public override void Deserialize(NetworkReader reader) public override void Deserialize(NetworkReader reader)
{ {
base.Deserialize(reader); base.Deserialize(reader);
NetId = reader.Read<QNetworkInstanceId>(); NetId = new QNetworkInstanceId(reader.ReadUInt());
} }
public override bool ShouldReceive => WorldObjectManager.AllObjectsReady; public override bool ShouldReceive => WorldObjectManager.AllObjectsReady;