[Refactor] GlobalOrbitalSettings

This commit is contained in:
Pasha Bibko
2025-11-27 21:32:47 +00:00
parent 540cc700e4
commit 201675720c
4 changed files with 23 additions and 30 deletions

3
.gitignore vendored
View File

@@ -69,6 +69,9 @@ sysinfo.txt
/Win64-Build
/Build
# Rider IDE project files
.idea/
# Crashlytics generated file
crashlytics-build.properties

View File

@@ -680,12 +680,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1b1a209741ad95946a6f0138e93431c4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RadiusSpeed: 0.5
m_DistanceSpeed: 0.6
m_GapDistance: 1
m_RingPrefab: {fileID: 8276642441649562681, guid: 2b69b065f2beade4d91167a23508e29e, type: 3}
m_EnemyPrefab: {fileID: 345795220292517504, guid: ec4a924a38b208240b281bd7983b07b7, type: 3}
m_ModifierPrefab: {fileID: 7367671708397998036, guid: 780bf151465173e4a82da2763da54b2b, type: 3}
<RadiusSpeed>k__BackingField: 0.5
<DistanceSpeed>k__BackingField: 0.6
<GapDistance>k__BackingField: 1
<RingPrefab>k__BackingField: {fileID: 8276642441649562681, guid: 2b69b065f2beade4d91167a23508e29e, type: 3}
<EnemyPrefab>k__BackingField: {fileID: 345795220292517504, guid: ec4a924a38b208240b281bd7983b07b7, type: 3}
<ModifierPrefab>k__BackingField: {fileID: 7367671708397998036, guid: 780bf151465173e4a82da2763da54b2b, type: 3}
--- !u!4 &1827131557
Transform:
m_ObjectHideFlags: 0

View File

@@ -1,26 +1,16 @@
using UnityEngine;
public class GlobalOrbitalSettings : MonoBehaviour
public class Settings : MonoBehaviour
{
private static GlobalOrbitalSettings Instance = null;
public static Settings Instance;
[SerializeField, Range(0f, Mathf.PI * 2)] float m_RadiusSpeed = 2f;
public static float RadiusSpeed => Instance.m_RadiusSpeed;
[field: SerializeField, Range(0f, Mathf.PI * 2)] public float RadiusSpeed { get; private set; } = 2f;
[field: SerializeField, Range(0f, 2f)] public float DistanceSpeed { get; private set; } = 0.6f;
[field: SerializeField, Range(0f, 1f)] public float GapDistance { get; private set; } = 0.3f;
[SerializeField, Range(0f, 2f)] float m_DistanceSpeed = 0.6f;
public static float DistanceSpeed => Instance.m_DistanceSpeed;
[SerializeField, Range(0f, 1f)] float m_GapDistance = 0.3f;
public static float GapDistance => Instance.m_GapDistance;
[SerializeField] GameObject m_RingPrefab;
public static GameObject RingPrefab => Instance.m_RingPrefab;
[SerializeField] GameObject m_EnemyPrefab;
public static GameObject EnemyPrefab => Instance.m_EnemyPrefab;
[SerializeField] GameObject m_ModifierPrefab;
public static GameObject ModifierPrefab => Instance.m_ModifierPrefab;
[field: SerializeField] public GameObject RingPrefab { get; private set; }
[field: SerializeField] public GameObject EnemyPrefab { get; private set; }
[field: SerializeField] public GameObject ModifierPrefab { get; private set; }
private void Start() => Instance = this;
}

View File

@@ -129,9 +129,9 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
private void Update()
{
if (Time.time - m_TimeOfLastRingSpawn > (GlobalOrbitalSettings.GapDistance / m_LocalDeltaTimeScale))
if (Time.time - m_TimeOfLastRingSpawn > (Settings.Instance.GapDistance / m_LocalDeltaTimeScale))
{
GameObject newRing = Instantiate(GlobalOrbitalSettings.RingPrefab);
GameObject newRing = Instantiate(Settings.Instance.RingPrefab);
newRing.transform.localScale = new Vector3(12f, 12f, 1);
Ring ring = newRing.AddComponent<Ring>();
@@ -150,7 +150,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
m_CurrentRingAllowsSpawning = Random.Range(0, 25) != 0;
if (!m_CurrentRingAllowsSpawning && AllowPlayerInput)
Instantiate(GlobalOrbitalSettings.ModifierPrefab);
Instantiate(Settings.Instance.ModifierPrefab);
}
List<Ring> toRemove = new();
@@ -158,7 +158,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
foreach (Ring ring in m_Rings)
{
float diff = LocalDeltaTime * GlobalOrbitalSettings.DistanceSpeed;
float diff = LocalDeltaTime * Settings.Instance.DistanceSpeed;
ring.transform.localScale -= new Vector3(diff, diff, 0f);
LineRenderer lineRenderer = ring.GetComponentInChildren<LineRenderer>();
@@ -207,7 +207,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
float distance = m_Distances[orbitalPosition.m_AttachedRing];
orbitalPosition.m_DistanceFromCentre = distance;
orbitalPosition.m_DistanceAlongRadius = (orbitalPosition.m_DistanceAlongRadius + LocalDeltaTime * GlobalOrbitalSettings.RadiusSpeed * orbitalPosition.m_SpinSpeed) % (Mathf.PI * 2);
orbitalPosition.m_DistanceAlongRadius = (orbitalPosition.m_DistanceAlongRadius + LocalDeltaTime * Settings.Instance.RadiusSpeed * orbitalPosition.m_SpinSpeed) % (Mathf.PI * 2);
orbitalPosition.m_Owner.position = orbitalPosition.TranslateToVec3();
}
@@ -232,7 +232,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
}
if (Random.Range(0, 20) == 0 && AllowPlayerInput && m_CurrentRingAllowsSpawning)
Instantiate(GlobalOrbitalSettings.EnemyPrefab);
Instantiate(Settings.Instance.EnemyPrefab);
}
public static void RegisterOrbitalPositionInstance(OrbitalPosition newInstance) =>