public void AddFrameRecords <FrameAggregate>(IFrameDebugProvider provider, IEnumerable <IFrameRecord> records) where FrameAggregate : IFrameAggregate, new() { if (!m_RecordingEnabled) { return; } AddFrameDebugProvider(provider); FrameAggregateSet aggregates; int providerIdentifier = provider.GetUniqueIdentifier(); if (!m_FrameAggregates.TryGetValue(providerIdentifier, out aggregates)) { aggregates = FrameAggregateSet.Create(); m_FrameAggregates.Add(providerIdentifier, aggregates); } Type aggregateType = typeof(FrameAggregate); FrameAggregateInfo aggregateInfo; if (!aggregates.aggregates.TryGetValue(aggregateType, out aggregateInfo)) { aggregateInfo = FrameAggregateInfo.Create <FrameAggregate>(); aggregates.aggregates.Add(aggregateType, aggregateInfo); } aggregateInfo.pendingRecords.AddRange(records); }
internal void PruneRecordsStartingAfterTimeStamp(float startTimeInSeconds) { foreach (var pair in m_FrameAggregates.ToList()) { FrameAggregateSet set = pair.Value; set.PruneRecordsStartingAfterTimeStamp(startTimeInSeconds); m_FrameAggregates[pair.Key] = set; } }
internal void Update(float frameEndTime, float startTimeInSeconds) { if (frameEndTime <= m_FrameStartTime) { foreach (var pair in m_FrameAggregates.ToList()) { FrameAggregateSet set = pair.Value; set.ClearPendingRecords(); m_FrameAggregates[pair.Key] = set; } return; } UpdateRecords(m_FrameStartTime, frameEndTime, startTimeInSeconds); m_FrameStartTime = frameEndTime; m_ProviderInfos.RemoveAll(providerInfo => providerInfo.provider == null && !m_FrameAggregates.ContainsKey(providerInfo.uniqueIdentifier)); }
void UpdateRecords(float frameStartTime, float frameEndTime, float startTimeInSeconds) { List <int> obsoletes = new List <int>(); foreach (var pair in m_FrameAggregates) { FrameAggregateSet set = pair.Value; set.UpdateRecords(frameStartTime, frameEndTime, startTimeInSeconds); if (set.aggregates.Count == 0) { obsoletes.Add(pair.Key); } } foreach (int key in obsoletes) { m_FrameAggregates.Remove(key); } }