53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
|
using UnityEngine;
|
|||
|
|
|||
|
namespace VLB
|
|||
|
{
|
|||
|
[System.Serializable]
|
|||
|
public class RaymarchingQuality
|
|||
|
{
|
|||
|
public int uniqueID => _UniqueID;
|
|||
|
public bool hasValidUniqueID => _UniqueID >= 0;
|
|||
|
|
|||
|
public string name;
|
|||
|
public int stepCount;
|
|||
|
|
|||
|
public static RaymarchingQuality defaultInstance => ms_DefaultInstance;
|
|||
|
|
|||
|
[SerializeField] int _UniqueID;
|
|||
|
static RaymarchingQuality ms_DefaultInstance = new RaymarchingQuality(-1);
|
|||
|
const int kRandomUniqueIdMinRange = 4; // default qualities have fixed ID from 1 to 3
|
|||
|
|
|||
|
private RaymarchingQuality(int uniqueID)
|
|||
|
{
|
|||
|
_UniqueID = uniqueID;
|
|||
|
name = "New quality";
|
|||
|
stepCount = 10;
|
|||
|
}
|
|||
|
|
|||
|
static public RaymarchingQuality New()
|
|||
|
{
|
|||
|
int id = Random.Range(kRandomUniqueIdMinRange, int.MaxValue);
|
|||
|
return new RaymarchingQuality(id);
|
|||
|
}
|
|||
|
|
|||
|
static public RaymarchingQuality New(string name, int forcedUniqueID, int stepCount)
|
|||
|
{
|
|||
|
var instance = new RaymarchingQuality(forcedUniqueID);
|
|||
|
instance.name = name;
|
|||
|
instance.stepCount = stepCount;
|
|||
|
return instance;
|
|||
|
}
|
|||
|
|
|||
|
static bool HasRaymarchingQualityWithSameUniqueID(RaymarchingQuality[] values, int id)
|
|||
|
{
|
|||
|
foreach (var qual in values)
|
|||
|
{
|
|||
|
if (qual != null && qual.uniqueID == id)
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|