Skip to content

Commit

Permalink
1.11.8 (#63)
Browse files Browse the repository at this point in the history
- Harmony 2.3.3
- Disabled `FixGridGroups` due to inability to patch generics (methods
of `MyGroups`)
- Disabled patching generics in `DEBUG` only code (no effect on
functionality)
- Accepted code change in `MyCharacter.RigidBody_ContactPointCallback`
  • Loading branch information
viktor-ferenczi authored May 23, 2024
1 parent 102e9af commit 9380d71
Show file tree
Hide file tree
Showing 26 changed files with 336 additions and 112 deletions.
4 changes: 2 additions & 2 deletions ClientPlugin/ClientPlugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony, Version=2.2.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Lib.Harmony.2.2.2\lib\net48\0Harmony.dll</HintPath>
<Reference Include="0Harmony, Version=2.3.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Lib.Harmony.2.3.3\lib\net48\0Harmony.dll</HintPath>
</Reference>
<Reference Include="DirectShowLib, Version=2.1.0.1599, Culture=neutral, PublicKeyToken=null">
<HintPath>..\Bin64\DirectShowLib.dll</HintPath>
Expand Down
8 changes: 6 additions & 2 deletions ClientPlugin/GUI/PluginConfigDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,10 @@ public class PluginConfigDialog : MyGuiScreenBase
private MyGuiControlLabel fixGarbageCollectionLabel;
private MyGuiControlCheckbox fixGarbageCollectionCheckbox;

/* Disabled due to inability to patch generics (methods of MyGroups)
private MyGuiControlLabel fixGridGroupsLabel;
private MyGuiControlCheckbox fixGridGroupsCheckbox;
*/

private MyGuiControlLabel cacheModsLabel;
private MyGuiControlCheckbox cacheModsCheckbox;
Expand Down Expand Up @@ -131,7 +133,7 @@ private void CreateControls()
CreateCheckbox(out fixGridPasteLabel, out fixGridPasteCheckbox, config.FixGridPaste, value => config.FixGridPaste = value, "Fix grid paste", "Disable updates during grid paste (MyCubeGrid.PasteBlocksServer)");
CreateCheckbox(out fixP2PUpdateStatsLabel, out fixP2PUpdateStatsCheckbox, config.FixP2PUpdateStats, value => config.FixP2PUpdateStats = value, "Fix P2P update stats", "Eliminate 98% of EOS P2P network statistics updates (VRage.EOS.MyP2PQoSAdapter.UpdateStats)");
CreateCheckbox(out fixGarbageCollectionLabel, out fixGarbageCollectionCheckbox, config.FixGarbageCollection, value => config.FixGarbageCollection = value, "Fix garbage collection", "Eliminate long pauses on starting and stopping large worlds by disabling selected GC.Collect calls");
CreateCheckbox(out fixGridGroupsLabel, out fixGridGroupsCheckbox, config.FixGridGroups, value => config.FixGridGroups = value, "Fix grid groups", "Disable resource updates while grids are being moved between groups");
// CreateCheckbox(out fixGridGroupsLabel, out fixGridGroupsCheckbox, config.FixGridGroups, value => config.FixGridGroups = value, "Fix grid groups", "Disable resource updates while grids are being moved between groups");
CreateCheckbox(out cacheModsLabel, out cacheModsCheckbox, config.CacheMods, value => config.CacheMods = value, "Cache compiled mods", "Caches compiled mods for faster world load");
CreateCheckbox(out cacheScriptsLabel, out cacheScriptsCheckbox, config.CacheScripts, value => config.CacheScripts = value, "Cache compiled scripts", "Caches compiled in-game scripts (PB programs) to reduce lag");
CreateCheckbox(out disableModApiStatisticsLabel, out disableModApiStatisticsCheckbox, config.DisableModApiStatistics, value => config.DisableModApiStatistics = value, "Disable Mod API statistics", "Disable the collection of Mod API call statistics to eliminate the overhead (affects only world loading)");
Expand Down Expand Up @@ -203,7 +205,7 @@ private void EnableDisableFixes(MyGuiControlCheckbox _ = null)
fixGridPasteCheckbox.Enabled = enabled;
fixP2PUpdateStatsCheckbox.Enabled = enabled;
fixGarbageCollectionCheckbox.Enabled = enabled;
fixGridGroupsCheckbox.Enabled = enabled;
// fixGridGroupsCheckbox.Enabled = enabled;
cacheModsCheckbox.Enabled = enabled;
cacheScriptsCheckbox.Enabled = enabled;
disableModApiStatisticsCheckbox.Enabled = enabled;
Expand Down Expand Up @@ -252,9 +254,11 @@ private void LayoutControls()
layoutTable.Add(fixGarbageCollectionLabel, MyAlignH.Left, MyAlignV.Center, row, 1);
row++;

/* Disabled due to inability to patch generics (methods of MyGroups)
layoutTable.Add(fixGridGroupsCheckbox, MyAlignH.Left, MyAlignV.Center, row, 0);
layoutTable.Add(fixGridGroupsLabel, MyAlignH.Left, MyAlignV.Center, row, 1);
row++;
*/

layoutTable.Add(cacheModsCheckbox, MyAlignH.Left, MyAlignV.Center, row, 0);
layoutTable.Add(cacheModsLabel, MyAlignH.Left, MyAlignV.Center, row, 1);
Expand Down
4 changes: 2 additions & 2 deletions ClientPlugin/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.11.7.0")]
[assembly: AssemblyFileVersion("1.11.7.0")]
[assembly: AssemblyVersion("1.11.8.0")]
[assembly: AssemblyFileVersion("1.11.8.0")]
2 changes: 1 addition & 1 deletion ClientPlugin/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Lib.Harmony" version="2.2.2" targetFramework="net48" />
<package id="Lib.Harmony" version="2.3.3" targetFramework="net481" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net481" />
</packages>
4 changes: 2 additions & 2 deletions DedicatedPlugin/DedicatedPlugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony, Version=2.2.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Lib.Harmony.2.2.2\lib\net48\0Harmony.dll</HintPath>
<Reference Include="0Harmony, Version=2.3.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Lib.Harmony.2.3.3\lib\net48\0Harmony.dll</HintPath>
</Reference>
<Reference Include="DirectShowLib, Version=2.1.0.1599, Culture=neutral, PublicKeyToken=null">
<HintPath>..\Torch\DedicatedServer64\DirectShowLib.dll</HintPath>
Expand Down
4 changes: 2 additions & 2 deletions DedicatedPlugin/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.11.7.0")]
[assembly: AssemblyFileVersion("1.11.7.0")]
[assembly: AssemblyVersion("1.11.8.0")]
[assembly: AssemblyFileVersion("1.11.8.0")]
2 changes: 1 addition & 1 deletion DedicatedPlugin/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Lib.Harmony" version="2.2.2" targetFramework="net48" />
<package id="Lib.Harmony" version="2.3.3" targetFramework="net481" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net481" />
</packages>
2 changes: 1 addition & 1 deletion Shared/Patches/Character/MyCharacterPatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void Configure()
// ReSharper disable once UnusedMember.Local
[HarmonyTranspiler]
[HarmonyPatch("RigidBody_ContactPointCallback")]
[EnsureCode("230531d5|c1e4183d")]
[EnsureCode("c1e4183d")]
private static IEnumerable<CodeInstruction> RigidBody_ContactPointCallbackTranspiler(IEnumerable<CodeInstruction> instructions)
{
if (!enabled)
Expand Down
97 changes: 64 additions & 33 deletions Shared/Patches/Character/RigidBody_ContactPointCallback.original.il
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// 230531d5
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::.ctor()
// c1e4183d
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::.ctor()
stloc.0
ldloc.0
ldarg.0
stfld Sandbox.Game.Entities.Character.MyCharacter Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::<>4__this
stfld Sandbox.Game.Entities.Character.MyCharacter Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::<>4__this
ldarg.0
call System.Boolean Sandbox.Game.Entities.Character.MyCharacter::get_IsDead()
brfalse.s L0
Expand Down Expand Up @@ -63,27 +63,27 @@ ldarg.0
call static VRage.ModAPI.IMyEntity Sandbox.Engine.Physics.MyPhysicsExtensions::GetOtherEntity(Havok.HkContactPointEvent eventInfo, VRage.ModAPI.IMyEntity sourceEntity)
callvirt abstract virtual VRage.Game.Components.MyPhysicsComponentBase VRage.ModAPI.IMyEntity::get_Physics()
isinst Sandbox.Engine.Voxels.MyVoxelPhysicsBody
stfld Sandbox.Engine.Voxels.MyVoxelPhysicsBody Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::otherPhysicsBody
stfld Sandbox.Engine.Voxels.MyVoxelPhysicsBody Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::otherPhysicsBody
ldloc.0
ldarg.1
ldfld Havok.HkContactPoint Havok.HkContactPointEvent::ContactPoint
stloc.s 24 (Havok.HkContactPoint)
ldloca.s 24 (Havok.HkContactPoint)
call VRageMath.Vector3 Havok.HkContactPoint::get_Position()
stfld VRageMath.Vector3 Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::contactPointPosition
stfld VRageMath.Vector3 Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::contactPointPosition
ldloc.0
ldarg.1
ldfld Havok.HkContactPoint Havok.HkContactPointEvent::ContactPoint
stloc.s 24 (Havok.HkContactPoint)
ldloca.s 24 (Havok.HkContactPoint)
call VRageMath.Vector3 Havok.HkContactPoint::get_Normal()
stfld VRageMath.Vector3 Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::contactPointNormal
stfld VRageMath.Vector3 Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::contactPointNormal
ldloc.0
ldfld Sandbox.Engine.Voxels.MyVoxelPhysicsBody Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::otherPhysicsBody
ldfld Sandbox.Engine.Voxels.MyVoxelPhysicsBody Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::otherPhysicsBody
brfalse L8
ldsfld Sandbox.MySandboxGame Sandbox.MySandboxGame::Static
ldloc.0
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::<RigidBody_ContactPointCallback>b__0()
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::<RigidBody_ContactPointCallback>b__0()
newobj System.Void System.Action::.ctor(System.Object object, System.IntPtr method)
ldstr "MyCharacter.RigidBody_ContactPointCallback.TrySpawnWalkingParticles"
ldc.i4.m1
Expand Down Expand Up @@ -153,7 +153,7 @@ ldloc.0
ldloc.3
callvirt VRage.ModAPI.IMyEntity VRage.Game.Components.MyPhysicsComponentBase::get_Entity()
isinst VRage.Game.Entity.MyEntity
stfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::other
stfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::other
ldloc.1
stloc.s 6 (Havok.HkRigidBody)
ldarg.1
Expand All @@ -163,7 +163,7 @@ ldloca.s 24 (Havok.HkContactPoint)
call VRageMath.Vector3 Havok.HkContactPoint::get_Normal()
stloc.s 7 (VRageMath.Vector3)
ldloc.0
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::other
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::other
ldarg.0
bne.un.s L11
ldc.i4.1
Expand All @@ -172,15 +172,15 @@ ldloc.0
ldloc.s 4 (Sandbox.Engine.Physics.MyPhysicsBody)
callvirt VRage.ModAPI.IMyEntity VRage.Game.Components.MyPhysicsComponentBase::get_Entity()
isinst VRage.Game.Entity.MyEntity
stfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::other
stfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::other
ldloc.2
stloc.s 6 (Havok.HkRigidBody)
ldloc.s 7 (VRageMath.Vector3)
call static VRageMath.Vector3 VRageMath.Vector3::op_UnaryNegation(VRageMath.Vector3 value)
stloc.s 7 (VRageMath.Vector3)
L11:
ldloc.0
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::other
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::other
isinst Sandbox.Game.Entities.Character.MyCharacter
stloc.s 8 (Sandbox.Game.Entities.Character.MyCharacter)
ldloc.s 8 (Sandbox.Game.Entities.Character.MyCharacter)
Expand Down Expand Up @@ -213,7 +213,7 @@ L14:
L16:
L17:
ldloc.0
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::other
ldfld VRage.Game.Entity.MyEntity Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::other
isinst Sandbox.Game.Entities.MyCubeGrid
stloc.s 9 (Sandbox.Game.Entities.MyCubeGrid)
ldloc.s 9 (Sandbox.Game.Entities.MyCubeGrid)
Expand Down Expand Up @@ -383,15 +383,15 @@ ldarg.0
ldfld System.Single Sandbox.Game.Entities.Character.MyCharacter::m_canPlayImpact
ldc.r4 0
bgt.un L38
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass463_1::.ctor()
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_1::.ctor()
ldarg.0
ldc.r4 0.3
stfld System.Single Sandbox.Game.Entities.Character.MyCharacter::m_canPlayImpact
dup
ldarg.1
ldobj Havok.HkContactPointEvent
stfld Havok.HkContactPointEvent Sandbox.Game.Entities.Character.<>c__DisplayClass463_1::hkContactPointEvent
ldftn System.Boolean Sandbox.Game.Entities.Character.<>c__DisplayClass463_1::<RigidBody_ContactPointCallback>b__1()
stfld Havok.HkContactPointEvent Sandbox.Game.Entities.Character.<>c__DisplayClass469_1::hkContactPointEvent
ldftn System.Boolean Sandbox.Game.Entities.Character.<>c__DisplayClass469_1::<RigidBody_ContactPointCallback>b__1()
newobj System.Void System.Func`1<System.Boolean>::.ctor(System.Object object, System.IntPtr method)
stloc.s 35 (System.Func`1[System.Boolean])
ldarg.0
Expand Down Expand Up @@ -517,42 +517,42 @@ ldloc.s 19 (System.Single)
mul
ldc.r4 2
div
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldloc.s 14 (System.Single)
ldc.r4 2
ble.un.s L48
ldloc.0
ldloc.0
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldc.r4 400
sub
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
br.s L49
L48:
ldloc.s 14 (System.Single)
ldc.r4 0
bne.un.s L50
ldloc.0
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldc.r4 100
ble.un.s L51
ldloc.0
ldloc.0
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldc.r4 80
div
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
L49:
L50:
L51:
ldloc.0
ldloc.0
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldc.r4 10
div
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
stfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldloc.0
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::impact
ldfld System.Single Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::impact
ldc.r4 1
blt.un L52
call static System.Boolean Sandbox.Game.Multiplayer.Sync::get_IsServer()
Expand All @@ -573,35 +573,66 @@ call static Sandbox.Engine.Physics.MyPhysicsBody Sandbox.Engine.Physics.MyPhysic
callvirt VRage.ModAPI.IMyEntity VRage.Game.Components.MyPhysicsComponentBase::get_Entity()
stloc.s 39 (VRage.ModAPI.IMyEntity)
L54:
call static Sandbox.Game.World.MySession Sandbox.Game.World.MySession::get_Static()
ldfld VRage.Game.MyObjectBuilder_SessionSettings Sandbox.Game.World.MySession::Settings
ldfld System.Boolean VRage.Game.MyObjectBuilder_SessionSettings::EnableFriendlyFire
brtrue.s L55
ldloc.s 39 (VRage.ModAPI.IMyEntity)
isinst Sandbox.Game.Weapons.MyMissile
dup
stloc.s 40 (Sandbox.Game.Weapons.MyMissile)
brfalse L55
call static Sandbox.Game.World.MySession Sandbox.Game.World.MySession::get_Static()
ldfld VRage.Game.MyObjectBuilder_SessionSettings Sandbox.Game.World.MySession::Settings
ldfld System.Boolean VRage.Game.MyObjectBuilder_SessionSettings::EnableFriendlyFire
brfalse.s L56
ldloc.s 40 (Sandbox.Game.Weapons.MyMissile)
ldarg.0
call Sandbox.Game.World.MyIdentity Sandbox.Game.Entities.Character.MyCharacter::GetIdentity()
callvirt System.Int64 Sandbox.Game.World.MyIdentity::get_IdentityId()
callvirt virtual System.Boolean Sandbox.Game.Weapons.MyMissile::IsCharacterIdFriendly(System.Int64 charId)
brtrue.s L57
brtrue L57
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_2::.ctor()
stloc.s 41 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_2)
ldloc.s 41 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_2)
ldloc.0
stfld Sandbox.Game.Entities.Character.<>c__DisplayClass469_0 Sandbox.Game.Entities.Character.<>c__DisplayClass469_2::CS$<>8__locals1
ldloc.s 41 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_2)
ldloc.s 40 (Sandbox.Game.Weapons.MyMissile)
callvirt virtual VRage.Game.MyDefinitionBase Sandbox.Game.Weapons.MyMissile::get_AmmoDefinition()
ldflda VRage.Game.MyDefinitionId VRage.Game.MyDefinitionBase::Id
ldfld VRage.Utils.MyStringHash VRage.Game.MyDefinitionId::SubtypeId
stfld VRage.Utils.MyStringHash Sandbox.Game.Entities.Character.<>c__DisplayClass469_2::sn
ldsfld Sandbox.MySandboxGame Sandbox.MySandboxGame::Static
ldloc.s 41 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_2)
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_2::<RigidBody_ContactPointCallback>b__3()
newobj System.Void System.Action::.ctor(System.Object object, System.IntPtr method)
ldstr "MyCharacter.DoDamage"
ldc.i4.m1
ldc.i4.0
callvirt System.Void Sandbox.MySandboxGame::Invoke(System.Action action, System.String invokerName, System.Int32 startAtFrame, System.Int32 repeatTimes)
ret
L56:
newobj System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_3::.ctor()
stloc.s 42 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_3)
ldloc.s 42 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_3)
ldloc.0
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::<RigidBody_ContactPointCallback>b__2()
stfld Sandbox.Game.Entities.Character.<>c__DisplayClass469_0 Sandbox.Game.Entities.Character.<>c__DisplayClass469_3::CS$<>8__locals2
ldloc.s 42 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_3)
ldloc.s 40 (Sandbox.Game.Weapons.MyMissile)
callvirt virtual VRage.Game.MyDefinitionBase Sandbox.Game.Weapons.MyMissile::get_AmmoDefinition()
ldflda VRage.Game.MyDefinitionId VRage.Game.MyDefinitionBase::Id
ldfld VRage.Utils.MyStringHash VRage.Game.MyDefinitionId::SubtypeId
stfld VRage.Utils.MyStringHash Sandbox.Game.Entities.Character.<>c__DisplayClass469_3::sn
ldsfld Sandbox.MySandboxGame Sandbox.MySandboxGame::Static
ldloc.s 42 (Sandbox.Game.Entities.Character.MyCharacter+<>c__DisplayClass469_3)
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_3::<RigidBody_ContactPointCallback>b__4()
newobj System.Void System.Action::.ctor(System.Object object, System.IntPtr method)
ldstr "MyCharacter.DoDamage"
ldc.i4.m1
ldc.i4.0
callvirt System.Void Sandbox.MySandboxGame::Invoke(System.Action action, System.String invokerName, System.Int32 startAtFrame, System.Int32 repeatTimes)
ret
L55:
L56:
ldsfld Sandbox.MySandboxGame Sandbox.MySandboxGame::Static
ldloc.0
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass463_0::<RigidBody_ContactPointCallback>b__3()
ldftn System.Void Sandbox.Game.Entities.Character.<>c__DisplayClass469_0::<RigidBody_ContactPointCallback>b__2()
newobj System.Void System.Action::.ctor(System.Object object, System.IntPtr method)
ldstr "MyCharacter.DoDamage"
ldc.i4.m1
Expand Down
Loading

0 comments on commit 9380d71

Please sign in to comment.