Beispiel #1
0
        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);
        }
Beispiel #2
0
 internal void PruneRecordsStartingAfterTimeStamp(float startTimeInSeconds)
 {
     foreach (var pair in m_FrameAggregates.ToList())
     {
         FrameAggregateSet set = pair.Value;
         set.PruneRecordsStartingAfterTimeStamp(startTimeInSeconds);
         m_FrameAggregates[pair.Key] = set;
     }
 }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
            }
        }