Skip to content

Instantly share code, notes, and snippets.

@smoogipoo
Created July 30, 2020 05:15
Show Gist options
  • Select an option

  • Save smoogipoo/0ae07bebe7478c6960da22b16983a67b to your computer and use it in GitHub Desktop.

Select an option

Save smoogipoo/0ae07bebe7478c6960da22b16983a67b to your computer and use it in GitHub Desktop.
.class nested private auto ansi sealed beforefieldinit '<>c__DisplayClass25_0'
extends [netstandard]System.Object
{
.custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Fields
.field public class osu.Framework.Graphics.Cursor.TooltipContainer '<>4__this'
.field public float64 appearDelay
.field public float64 alphaModifiedAppearDelay
.field public valuetype [osuTK]osuTK.Vector2 first
.field public float32 appearRadiusSq
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x6391e
// Code size 7 (0x7)
.maxstack 8
// (no C# code)
IL_0000: ldarg.0
IL_0001: call instance void [netstandard]System.Object::.ctor()
// }
IL_0006: ret
} // end of method '<>c__DisplayClass25_0'::.ctor
.method assembly hidebysig
instance bool '<findTooltipTarget>b__0' (
valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition t
) cil managed
{
// Method begins at RVA 0x63926
// Code size 32 (0x20)
.maxstack 8
// return <>4__this.Time.Current - t.Time > appearDelay;
IL_0000: ldarg.0
IL_0001: ldfld class osu.Framework.Graphics.Cursor.TooltipContainer osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<>4__this'
IL_0006: call instance valuetype osu.Framework.Timing.FrameTimeInfo osu.Framework.Graphics.Transforms.Transformable::get_Time()
IL_000b: ldfld float64 osu.Framework.Timing.FrameTimeInfo::Current
IL_0010: ldarg.1
IL_0011: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Time
IL_0016: sub
IL_0017: ldarg.0
IL_0018: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_001d: cgt
// (no C# code)
IL_001f: ret
} // end of method '<>c__DisplayClass25_0'::'<findTooltipTarget>b__0'
.method assembly hidebysig
instance bool '<findTooltipTarget>b__1' (
valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition t
) cil managed
{
// Method begins at RVA 0x63947
// Code size 35 (0x23)
.maxstack 8
// return <>4__this.Time.Current - t.Time <= alphaModifiedAppearDelay;
IL_0000: ldarg.0
IL_0001: ldfld class osu.Framework.Graphics.Cursor.TooltipContainer osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<>4__this'
IL_0006: call instance valuetype osu.Framework.Timing.FrameTimeInfo osu.Framework.Graphics.Transforms.Transformable::get_Time()
IL_000b: ldfld float64 osu.Framework.Timing.FrameTimeInfo::Current
IL_0010: ldarg.1
IL_0011: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Time
IL_0016: sub
IL_0017: ldarg.0
IL_0018: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::alphaModifiedAppearDelay
IL_001d: cgt.un
// (no C# code)
IL_001f: ldc.i4.0
IL_0020: ceq
IL_0022: ret
} // end of method '<>c__DisplayClass25_0'::'<findTooltipTarget>b__1'
.method assembly hidebysig
instance bool '<findTooltipTarget>b__2' (
valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition t
) cil managed
{
// Method begins at RVA 0x6396b
// Code size 26 (0x1a)
.maxstack 8
// return Vector2Extensions.DistanceSquared(t.Position, first) < appearRadiusSq;
IL_0000: ldarg.1
IL_0001: ldfld valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Position
IL_0006: ldarg.0
IL_0007: ldfld valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::first
IL_000c: call float32 osu.Framework.Graphics.Vector2Extensions::DistanceSquared(valuetype [osuTK]osuTK.Vector2, valuetype [osuTK]osuTK.Vector2)
IL_0011: ldarg.0
IL_0012: ldfld float32 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearRadiusSq
IL_0017: clt
// (no C# code)
IL_0019: ret
} // end of method '<>c__DisplayClass25_0'::'<findTooltipTarget>b__2'
} // end of class <>c__DisplayClass25_0
.method private hidebysig
instance class osu.Framework.Graphics.Cursor.ITooltipContentProvider findTooltipTarget () cil managed
{
// Method begins at RVA 0x3f1ec
// Code size 503 (0x1f7)
.maxstack 4
.locals init (
[0] class osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0' 'CS$<>8__locals0',
[1] class osu.Framework.Graphics.Cursor.IHasTooltip draggedTarget,
[2] class osu.Framework.Graphics.Cursor.IHasCustomTooltip customDraggedTarget,
[3] class osu.Framework.Graphics.Cursor.ITooltipContentProvider targetCandidate,
[4] float64 positionRecordInterval,
[5] class [netstandard]System.Collections.Generic.IEnumerable`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> relevantPositions,
[6] valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition
)
// (no C# code)
IL_0000: newobj instance void osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::.ctor()
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldarg.0
IL_0008: stfld class osu.Framework.Graphics.Cursor.TooltipContainer osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<>4__this'
// IHasTooltip hasTooltip = inputManager.DraggedDrawable as IHasTooltip;
IL_000d: ldarg.0
IL_000e: ldfld class osu.Framework.Input.InputManager osu.Framework.Graphics.Cursor.TooltipContainer::inputManager
IL_0013: callvirt instance class osu.Framework.Graphics.Drawable osu.Framework.Input.InputManager::get_DraggedDrawable()
IL_0018: isinst osu.Framework.Graphics.Cursor.IHasTooltip
IL_001d: stloc.1
// if (hasTooltip != null)
IL_001e: ldloc.1
// (no C# code)
IL_001f: brfalse.s IL_002e
// if (!hasValidTooltip(hasTooltip))
IL_0021: ldarg.0
IL_0022: ldloc.1
IL_0023: call instance bool osu.Framework.Graphics.Cursor.TooltipContainer::hasValidTooltip(class osu.Framework.Graphics.Cursor.ITooltipContentProvider)
// (no C# code)
IL_0028: brtrue.s IL_002c
// return null;
IL_002a: ldnull
// (no C# code)
IL_002b: ret
// return hasTooltip;
IL_002c: ldloc.1
// (no C# code)
IL_002d: ret
// IHasCustomTooltip hasCustomTooltip = inputManager.DraggedDrawable as IHasCustomTooltip;
IL_002e: ldarg.0
IL_002f: ldfld class osu.Framework.Input.InputManager osu.Framework.Graphics.Cursor.TooltipContainer::inputManager
IL_0034: callvirt instance class osu.Framework.Graphics.Drawable osu.Framework.Input.InputManager::get_DraggedDrawable()
IL_0039: isinst osu.Framework.Graphics.Cursor.IHasCustomTooltip
IL_003e: stloc.2
// if (hasCustomTooltip != null)
IL_003f: ldloc.2
// (no C# code)
IL_0040: brfalse.s IL_004f
// if (!hasValidTooltip(hasCustomTooltip))
IL_0042: ldarg.0
IL_0043: ldloc.2
IL_0044: call instance bool osu.Framework.Graphics.Cursor.TooltipContainer::hasValidTooltip(class osu.Framework.Graphics.Cursor.ITooltipContentProvider)
// (no C# code)
IL_0049: brtrue.s IL_004d
// return null;
IL_004b: ldnull
// (no C# code)
IL_004c: ret
// return hasCustomTooltip;
IL_004d: ldloc.2
// (no C# code)
IL_004e: ret
// ITooltipContentProvider tooltipContentProvider = FindTargets().Find(new Predicate<ITooltipContentProvider>(hasValidTooltip));
IL_004f: ldarg.0
IL_0050: call instance class [netstandard]System.Collections.Generic.List`1<!1> class osu.Framework.Graphics.Cursor.CursorEffectContainer`2<class osu.Framework.Graphics.Cursor.TooltipContainer, class osu.Framework.Graphics.Cursor.ITooltipContentProvider>::FindTargets()
IL_0055: ldarg.0
IL_0056: ldftn instance bool osu.Framework.Graphics.Cursor.TooltipContainer::hasValidTooltip(class osu.Framework.Graphics.Cursor.ITooltipContentProvider)
IL_005c: newobj instance void class [netstandard]System.Predicate`1<class osu.Framework.Graphics.Cursor.ITooltipContentProvider>::.ctor(object, native int)
IL_0061: callvirt instance !0 class [netstandard]System.Collections.Generic.List`1<class osu.Framework.Graphics.Cursor.ITooltipContentProvider>::Find(class [netstandard]System.Predicate`1<!0>)
IL_0066: stloc.3
// if (tooltipContentProvider != lastCandidate)
IL_0067: ldloc.3
IL_0068: ldarg.0
IL_0069: ldfld class osu.Framework.Graphics.Cursor.ITooltipContentProvider osu.Framework.Graphics.Cursor.TooltipContainer::lastCandidate
IL_006e: beq.s IL_0082
// recentMousePositions.Clear();
IL_0070: ldarg.0
IL_0071: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
IL_0076: callvirt instance void class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::Clear()
// lastCandidate = tooltipContentProvider;
IL_007b: ldarg.0
IL_007c: ldloc.3
IL_007d: stfld class osu.Framework.Graphics.Cursor.ITooltipContentProvider osu.Framework.Graphics.Cursor.TooltipContainer::lastCandidate
// if (tooltipContentProvider == null)
IL_0082: ldloc.3
// (no C# code)
IL_0083: brtrue.s IL_0087
// return null;
IL_0085: ldnull
// (no C# code)
IL_0086: ret
IL_0087: ldloc.0
// double appearDelay = (tooltipContentProvider as IHasAppearDelay)?.AppearDelay ?? AppearDelay;
IL_0088: ldloc.3
IL_0089: isinst osu.Framework.Graphics.Cursor.IHasAppearDelay
// (no C# code)
IL_008e: dup
IL_008f: brtrue.s IL_009a
IL_0091: pop
IL_0092: ldarg.0
IL_0093: callvirt instance float64 osu.Framework.Graphics.Cursor.TooltipContainer::get_AppearDelay()
IL_0098: br.s IL_009f
IL_009a: callvirt instance float64 osu.Framework.Graphics.Cursor.IHasAppearDelay::get_AppearDelay()
IL_009f: stfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_00a4: ldloc.0
// double num = appearDelay / 10.0;
IL_00a5: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_00aa: ldc.r8 10
IL_00b3: div
IL_00b4: stloc.s 4
// if (base.Time.Current - lastRecordedPositionTime >= num)
IL_00b6: ldarg.0
IL_00b7: call instance valuetype osu.Framework.Timing.FrameTimeInfo osu.Framework.Graphics.Transforms.Transformable::get_Time()
IL_00bc: ldfld float64 osu.Framework.Timing.FrameTimeInfo::Current
IL_00c1: ldarg.0
IL_00c2: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer::lastRecordedPositionTime
IL_00c7: sub
IL_00c8: ldloc.s 4
IL_00ca: blt.un.s IL_0126
// lastRecordedPositionTime = base.Time.Current;
IL_00cc: ldarg.0
IL_00cd: ldarg.0
IL_00ce: call instance valuetype osu.Framework.Timing.FrameTimeInfo osu.Framework.Graphics.Transforms.Transformable::get_Time()
IL_00d3: ldfld float64 osu.Framework.Timing.FrameTimeInfo::Current
IL_00d8: stfld float64 osu.Framework.Graphics.Cursor.TooltipContainer::lastRecordedPositionTime
// recentMousePositions.Add(new TimedPosition
// {
// Time = base.Time.Current,
// Position = ToLocalSpace(inputManager.CurrentState.Mouse.Position)
// });
IL_00dd: ldarg.0
IL_00de: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
// (no C# code)
IL_00e3: ldloca.s 6
IL_00e5: initobj osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition
IL_00eb: ldloca.s 6
IL_00ed: ldarg.0
IL_00ee: call instance valuetype osu.Framework.Timing.FrameTimeInfo osu.Framework.Graphics.Transforms.Transformable::get_Time()
IL_00f3: ldfld float64 osu.Framework.Timing.FrameTimeInfo::Current
IL_00f8: stfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Time
IL_00fd: ldloca.s 6
IL_00ff: ldarg.0
IL_0100: ldarg.0
IL_0101: ldfld class osu.Framework.Input.InputManager osu.Framework.Graphics.Cursor.TooltipContainer::inputManager
IL_0106: ldfld class osu.Framework.Input.States.InputState osu.Framework.Input.InputManager::CurrentState
IL_010b: ldfld class osu.Framework.Input.States.MouseState osu.Framework.Input.States.InputState::Mouse
IL_0110: callvirt instance valuetype [osuTK]osuTK.Vector2 osu.Framework.Input.States.MouseState::get_Position()
IL_0115: call instance valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Drawable::ToLocalSpace(valuetype [osuTK]osuTK.Vector2)
IL_011a: stfld valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Position
IL_011f: ldloc.s 6
IL_0121: callvirt instance void class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::Add(!0)
IL_0126: ldloc.0
// if (appearDelay > 0.0 && (recentMousePositions.Count == 0 || lastRecordedPositionTime - recentMousePositions[0].Time < appearDelay - num))
IL_0127: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_012c: ldc.r8 0.0
IL_0135: ble.un.s IL_0169
IL_0137: ldarg.0
IL_0138: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
IL_013d: callvirt instance int32 class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::get_Count()
// (no C# code)
IL_0142: brfalse.s IL_0167
IL_0144: ldarg.0
IL_0145: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer::lastRecordedPositionTime
IL_014a: ldarg.0
IL_014b: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
IL_0150: ldc.i4.0
IL_0151: callvirt instance !0 class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::get_Item(int32)
IL_0156: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Time
IL_015b: sub
IL_015c: ldloc.0
IL_015d: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_0162: ldloc.s 4
IL_0164: sub
IL_0165: bge.un.s IL_0169
// return null;
IL_0167: ldnull
// (no C# code)
IL_0168: ret
// recentMousePositions.RemoveAll((Predicate<TimedPosition>)((TimedPosition t) => base.Time.Current - t.Time > appearDelay));
IL_0169: ldarg.0
IL_016a: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
IL_016f: ldloc.0
IL_0170: ldftn instance bool osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<findTooltipTarget>b__0'(valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition)
// (no C# code)
IL_0176: newobj instance void class [netstandard]System.Predicate`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::.ctor(object, native int)
IL_017b: callvirt instance int32 class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>::RemoveAll(class [netstandard]System.Predicate`1<!0>)
IL_0180: pop
IL_0181: ldloc.0
// double alphaModifiedAppearDelay = (double)(1f - CurrentTooltip.Alpha) * appearDelay;
IL_0182: ldc.r4 1
IL_0187: ldarg.0
IL_0188: ldfld class osu.Framework.Graphics.Cursor.ITooltip osu.Framework.Graphics.Cursor.TooltipContainer::CurrentTooltip
IL_018d: callvirt instance float32 osu.Framework.Graphics.IDrawable::get_Alpha()
IL_0192: sub
IL_0193: conv.r8
// (no C# code)
IL_0194: ldloc.0
IL_0195: ldfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearDelay
IL_019a: mul
IL_019b: stfld float64 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::alphaModifiedAppearDelay
// IEnumerable<TimedPosition> source = recentMousePositions.Where((TimedPosition t) => base.Time.Current - t.Time <= alphaModifiedAppearDelay);
IL_01a0: ldarg.0
IL_01a1: ldfld class [netstandard]System.Collections.Generic.List`1<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition> osu.Framework.Graphics.Cursor.TooltipContainer::recentMousePositions
IL_01a6: ldloc.0
IL_01a7: ldftn instance bool osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<findTooltipTarget>b__1'(valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition)
// (no C# code)
IL_01ad: newobj instance void class [netstandard]System.Func`2<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition, bool>::.ctor(object, native int)
IL_01b2: call class [netstandard]System.Collections.Generic.IEnumerable`1<!!0> [netstandard]System.Linq.Enumerable::Where<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>(class [netstandard]System.Collections.Generic.IEnumerable`1<!!0>, class [netstandard]System.Func`2<!!0, bool>)
IL_01b7: stloc.s 5
IL_01b9: ldloc.0
// Vector2 first = source.FirstOrDefault().Position;
IL_01ba: ldloc.s 5
IL_01bc: call !!0 [netstandard]System.Linq.Enumerable::FirstOrDefault<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>(class [netstandard]System.Collections.Generic.IEnumerable`1<!!0>)
IL_01c1: ldfld valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition::Position
IL_01c6: stfld valuetype [osuTK]osuTK.Vector2 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::first
// (no C# code)
IL_01cb: ldloc.0
// float appearRadiusSq = AppearRadius * AppearRadius;
IL_01cc: ldarg.0
IL_01cd: callvirt instance float32 osu.Framework.Graphics.Cursor.TooltipContainer::get_AppearRadius()
IL_01d2: ldarg.0
IL_01d3: callvirt instance float32 osu.Framework.Graphics.Cursor.TooltipContainer::get_AppearRadius()
IL_01d8: mul
IL_01d9: stfld float32 osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::appearRadiusSq
// if (source.All((TimedPosition t) => Vector2Extensions.DistanceSquared(t.Position, first) < appearRadiusSq))
IL_01de: ldloc.s 5
IL_01e0: ldloc.0
IL_01e1: ldftn instance bool osu.Framework.Graphics.Cursor.TooltipContainer/'<>c__DisplayClass25_0'::'<findTooltipTarget>b__2'(valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition)
// (no C# code)
IL_01e7: newobj instance void class [netstandard]System.Func`2<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition, bool>::.ctor(object, native int)
IL_01ec: call bool [netstandard]System.Linq.Enumerable::All<valuetype osu.Framework.Graphics.Cursor.TooltipContainer/TimedPosition>(class [netstandard]System.Collections.Generic.IEnumerable`1<!!0>, class [netstandard]System.Func`2<!!0, bool>)
IL_01f1: brfalse.s IL_01f5
// return tooltipContentProvider;
IL_01f3: ldloc.3
// (no C# code)
IL_01f4: ret
// return null;
IL_01f5: ldnull
// (no C# code)
IL_01f6: ret
} // end of method TooltipContainer::findTooltipTarget
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment