Fix RPC codegen
This commit is contained in:
@@ -1360,7 +1360,9 @@ namespace Flax.Build.Plugins
|
||||
var jumpIfBodyStart = il.Create(OpCodes.Nop); // if block body
|
||||
var jumpIf2Start = il.Create(OpCodes.Nop); // 2nd part of the if
|
||||
var jumpBodyStart = il.Create(OpCodes.Nop); // original method body start
|
||||
var jumpBodyEnd = il.Body.Instructions.First(x => x.OpCode == OpCodes.Ret);
|
||||
var jumpBodyEnd = il.Body.Instructions.Last(x => x.OpCode == OpCodes.Ret && x.Previous != null);
|
||||
if (jumpBodyEnd == null)
|
||||
throw new Exception("Missing IL Return op code in method " + method.Name);
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 0));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Brfalse_S, jumpIf2Start));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
|
||||
@@ -1410,7 +1412,13 @@ namespace Flax.Build.Plugins
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Nop));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldc_I4_2));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, jumpBodyEnd));
|
||||
var tmp = il.Create(OpCodes.Nop);
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, tmp));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyStart));
|
||||
il.InsertBefore(ilStart, tmp);
|
||||
//il.InsertBefore(ilStart, il.Create(OpCodes.Ret));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyEnd));
|
||||
|
||||
}
|
||||
|
||||
// if (client && networkMode == NetworkManagerMode.Server) return;
|
||||
@@ -1419,7 +1427,12 @@ namespace Flax.Build.Plugins
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Nop));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Ldc_I4_1));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, jumpBodyEnd));
|
||||
var tmp = il.Create(OpCodes.Nop);
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, tmp));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyStart));
|
||||
il.InsertBefore(ilStart, tmp);
|
||||
//il.InsertBefore(ilStart, il.Create(OpCodes.Ret));
|
||||
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyEnd));
|
||||
}
|
||||
|
||||
// Continue to original method body
|
||||
|
||||
Reference in New Issue
Block a user