internal void SetTarget(MyEntityComponentBase owner) { _fixedEntry = ProfilerFixedEntry.Count; FreeHandles(); _owner = GCHandle.Alloc(owner, GCHandleType.Weak); _getter = GetterImplEntityComponent; }
internal void SetTarget(IMyCubeGrid grid, object owner) { _fixedEntry = ProfilerFixedEntry.Count; FreeHandles(); _owner = GCHandle.Alloc(owner, GCHandleType.Weak); _getterExtra = new[] { GCHandle.Alloc(grid, GCHandleType.Weak) }; _getter = GetterImplGridSystem; }
internal void SetTarget(ProfilerFixedEntry owner) { if (owner == ProfilerFixedEntry.Count) { throw new ArgumentOutOfRangeException(nameof(owner), "Must not be the count enum"); } _fixedEntry = owner; FreeHandles(); _owner = GCHandle.Alloc(owner, GCHandleType.Weak); // we can capture here since its a value type _getter = () => ProfilerData.FixedProfiler(owner); }
internal static FatProfilerEntry FixedProfiler(ProfilerFixedEntry item) { return(_fixed[(int)item] ?? throw new InvalidOperationException($"Fixed profiler {item} doesn't exist")); }