A game about forced loneliness, made by TACStudios
1using System;
2using System.Runtime.Serialization;
3using Unity.PerformanceTesting.Runtime;
4
5namespace Unity.PerformanceTesting.Data
6{
7 /// <summary>
8 /// Settings store
9 /// @TODO make it public along with guidelines of how and when to use
10 /// @TODO add a property bag
11 /// </summary>
12 [Serializable]
13 internal class RunSettings : IDeserializationCallback
14 {
15 public RunSettings(params string[] args)
16 {
17 if (int.TryParse(Utils.GetArg(args, "-performance-measurement-count"), out var measurementMultiplier))
18 {
19 MeasurementCount = measurementMultiplier;
20 }
21 }
22
23 private static RunSettings m_Instance;
24
25 /// <summary>
26 /// Singleton instance of settings.
27 /// </summary>
28 public static RunSettings Instance
29 {
30 get
31 {
32 if (m_Instance == null)
33 {
34 m_Instance = ResourcesLoader.Load<RunSettings>(Utils.RunSettings, Utils.PlayerPrefKeySettingsJSON);
35 }
36
37 return m_Instance;
38 }
39 set { m_Instance = value; }
40 }
41
42 /// <summary>
43 /// Measurement counts will be overriden by specified value when using Measure.Method and Measure.Frames.
44 /// </summary>
45 public int MeasurementCount = -1;
46
47 /// <summary>
48 /// Validates the deserialized object.
49 /// </summary>
50 /// <param name="sender">The object that initiated the deserialization process.</param>
51 public void OnDeserialization(object sender)
52 {
53 if (MeasurementCount < -1)
54 {
55 throw new SerializationException("MeasurementCount cannot be negative, except for the initial value of -1.");
56 }
57 }
58 }
59}