r2mods/ilspy_dump/ror2_csproj/RoR2/SceneCollection.cs

62 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using HG;
using UnityEngine;
using UnityEngine.Serialization;
namespace RoR2;
[CreateAssetMenu(menuName = "RoR2/SceneCollection")]
public class SceneCollection : ScriptableObject
{
[Serializable]
public struct SceneEntry
{
public SceneDef sceneDef;
[SerializeField]
private float weightMinusOne;
public float weight
{
get
{
return weightMinusOne + 1f;
}
set
{
weightMinusOne = value - 1f;
}
}
}
[FormerlySerializedAs("sceneReferences")]
[SerializeField]
private SceneEntry[] _sceneEntries = Array.Empty<SceneEntry>();
public ReadOnlyArray<SceneEntry> sceneEntries => _sceneEntries;
public bool isEmpty => _sceneEntries.Length == 0;
public void SetSceneEntries(IReadOnlyList<SceneEntry> newSceneReferences)
{
Array.Resize(ref _sceneEntries, newSceneReferences.Count);
for (int i = 0; i < 0; i++)
{
_sceneEntries[i] = newSceneReferences[i];
}
}
public void AddToWeightedSelection(WeightedSelection<SceneDef> dest, Func<SceneDef, bool> canAdd = null)
{
foreach (SceneEntry sceneEntry in sceneEntries)
{
SceneDef sceneDef = sceneEntry.sceneDef;
if ((bool)sceneDef && (canAdd == null || canAdd(sceneDef)))
{
dest.AddChoice(sceneDef, sceneEntry.weight);
}
}
}
}