public void SetActiveOptions(NetInfo prefab, SegmentData segmentOptions)
{
var options = _assetMode ? _assetSegmentOptions : _selectedSegmentOptions;
// Delete existing data if it is not used anymore
var activeSegmentData = GetActiveOptions(prefab);
if (activeSegmentData != null)
{
options.Remove(prefab);
activeSegmentData.UsedCount--;
DeleteIfNotInUse(activeSegmentData);
}
// No new data? Stop here
if (segmentOptions == null || segmentOptions.Features == SegmentData.FeatureFlags.None) return;
// Check if there is an equal data object
var equalSegmentData = _usedSegmentData.FirstOrDefault(segmentOptions.Equals);
if (equalSegmentData != null)
{
// yes? use that, discard the one we created
options[prefab] = equalSegmentData;
equalSegmentData.UsedCount++;
}
else
{
// no? Use the one we got
_usedSegmentData.Add(segmentOptions);
options[prefab] = segmentOptions;
segmentOptions.UsedCount++;
}
}