50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine.AddressableAssets;
|
||
|
|
||
|
namespace UnityEditor.AddressableAssets.Diagnostics.Data
|
||
|
{
|
||
|
[Serializable]
|
||
|
class EventDataSetStream
|
||
|
{
|
||
|
internal int maxValue;
|
||
|
internal List<EventDataSample> samples = new List<EventDataSample>();
|
||
|
|
||
|
internal void AddSample(int frame, int val)
|
||
|
{
|
||
|
bool streamHasSamples = samples.Count > 0;
|
||
|
if (streamHasSamples && frame < samples[samples.Count - 1].frame)
|
||
|
return;
|
||
|
if (val > maxValue)
|
||
|
maxValue = val;
|
||
|
if (streamHasSamples && samples[samples.Count - 1].frame == frame)
|
||
|
samples[samples.Count - 1] = new EventDataSample(frame, val);
|
||
|
else
|
||
|
samples.Add(new EventDataSample(frame, val));
|
||
|
}
|
||
|
|
||
|
internal int GetValue(int f)
|
||
|
{
|
||
|
if (samples.Count == 0 || f < samples[0].frame)
|
||
|
return 0;
|
||
|
if (f >= samples[samples.Count - 1].frame)
|
||
|
return samples[samples.Count - 1].data;
|
||
|
for (int i = 1; i < samples.Count; i++)
|
||
|
{
|
||
|
if (samples[i].frame > f)
|
||
|
return samples[i - 1].data;
|
||
|
}
|
||
|
|
||
|
return samples[0].data;
|
||
|
}
|
||
|
|
||
|
internal bool HasDataAfterFrame(int frame)
|
||
|
{
|
||
|
if (samples.Count == 0)
|
||
|
return false;
|
||
|
EventDataSample lastSample = samples[samples.Count - 1];
|
||
|
return lastSample.frame > frame || lastSample.data > 0;
|
||
|
}
|
||
|
}
|
||
|
}
|