private void CleanupData()
{
if (_usedSegmentData != null)
foreach (var segmentData in _usedSegmentData.ToArray())
{
var segmentMapUsedCount = SegmentToSegmentDataMap.Count(segmentData.Equals);
var segmentOptionsUsedCount = _selectedSegmentOptions.Values.Count(segmentData.Equals);
var assetOptionsUsedCount = _assetSegmentOptions.Values.Count(segmentData.Equals);
var calculatedUsedCount = segmentMapUsedCount + segmentOptionsUsedCount + assetOptionsUsedCount;
if (segmentData.UsedCount != calculatedUsedCount)
{
Debug.LogErrorFormat("Network Skins: Incorrect usedCount detected, should be {0} ({1})", calculatedUsedCount, segmentData);
segmentData.UsedCount = calculatedUsedCount;
DeleteIfNotInUse(segmentData);
}
}
// check if data is applied to segments which no longer exist
if (SegmentToSegmentDataMap != null)
for (var i = 0; i < SegmentToSegmentDataMap.Length; i++)
{
var segmentData = SegmentToSegmentDataMap[i];
if (segmentData != null && NetManager.instance.m_segments.m_buffer[i].m_flags == NetSegment.Flags.None)
{
Debug.LogErrorFormat("Network Skins: Data was applied to released segment {0}", segmentData);
SegmentToSegmentDataMap[i] = null;
segmentData.UsedCount--;
DeleteIfNotInUse(segmentData);
}
}
}