private static void SessionComponentEntry(MySessionComponentBase component, ref MultiProfilerEntry mpe) { if (_activeProfilers == 0) { return; } if (_modMask != null && component.ModContext != _modMask) { return; } if (_activeProfilersByType[(int)ProfilerRequestType.Mod] > 0) { var modContext = ModLookupUtils.GetMod(component) ?? MyModContext.BaseGame; mpe.Add(PerfMod.GetOrAdd(modContext, DelMakeMod)); } if (_activeProfilersByType[(int)ProfilerRequestType.Session] > 0) { mpe.Add(PerfSessionComponent.GetOrAdd(component.GetType(), DelMakeSessionComponent)); } }
private static void EntityComponentEntry(MyEntityComponentBase component, ref MultiProfilerEntry mpe) { if (_activeProfilers == 0) { return; } if (component.Entity != null) { EntityEntry(component.Entity, ref mpe); } // ReSharper disable once InvertIf if (_activeProfilersByType[(int)ProfilerRequestType.Mod] > 0) { var modContext = ModLookupUtils.GetMod(component.GetType()) ?? MyModContext.BaseGame; mpe.Add(PerfMod.GetOrAdd(modContext, DelMakeMod)); } }
public static void EntityEntry(IMyEntity entity, ref MultiProfilerEntry mpe) { if (!AcceptEntity(entity)) { return; } do { switch (entity) { case MyCubeBlock block: { if (block.BlockDefinition != null && (_activeProfilersByType[(int)ProfilerRequestType.BlockDef] > 0 || _activeProfilersByType[(int)ProfilerRequestType.BlockType] > 0)) { var def = block.BlockDefinition.Id; mpe.Add(PerfBlockType.GetOrAdd(def.TypeId, DelMakeBlockType)); mpe.Add(PerfBlockDef.GetOrAdd(block.BlockDefinition, DelMakeBlockDefinition)); } if (block.CubeGrid != null && _activeProfilersByType[(int)ProfilerRequestType.Grid] > 0) { mpe.Add(PerfGrid.GetOrAdd(block.CubeGrid.EntityId, DelMakeGrid)); } if (block is MyProgrammableBlock && _activeProfilersByType[(int)ProfilerRequestType.Scripts] > 0) { mpe.Add(PerfScript.GetOrAdd(block.EntityId, DelMakeScript)); } if (_activeProfilersByType[(int)ProfilerRequestType.Players] > 0) { mpe.Add(PerfPlayer.GetOrAdd(block.BuiltBy, DelMakePlayer)); } if (_activeProfilersByType[(int)ProfilerRequestType.Faction] <= 0) { return; } var faction = MySession.Static.Factions.TryGetPlayerFaction(block.BuiltBy); PerfFaction.GetOrAdd(faction?.FactionId ?? 0, DelMakeFaction); return; } case MyCubeGrid grid: { if (_activeProfilersByType[(int)ProfilerRequestType.Grid] > 0) { mpe.Add(PerfGrid.GetOrAdd(grid.EntityId, DelMakeGrid)); } if (_activeProfilersByType[(int)ProfilerRequestType.Players] <= 0 && _activeProfilersByType[(int)ProfilerRequestType.Faction] <= 0) { return; } var addedFaction = false; foreach (var owner in grid.BigOwners) { if (!addedFaction) { var faction = MySession.Static.Factions.TryGetPlayerFaction(owner); if (faction != null) { addedFaction = mpe.Add(PerfFaction.GetOrAdd(faction.FactionId, DelMakeFaction)); } } mpe.Add(PerfPlayer.GetOrAdd(owner, DelMakePlayer)); } if (!addedFaction) { mpe.Add(PerfFaction.GetOrAdd(0, DelMakeFaction)); } return; } } entity = entity.Parent; } while (entity != null); }