Installed Surge, fixed compile errors, moved a bunch of external stuff into folder

This commit is contained in:
2025-09-10 10:53:04 +02:00
parent a3649c65b0
commit 52bd7ef585
433 changed files with 10589 additions and 4 deletions

View File

@@ -0,0 +1,78 @@
/// <summary>
/// SURGE FRAMEWORK
/// Author: Bob Berkebile
/// Email: bobb@pixelplacement.com
///
/// A generic singleton.
///
/// </summary>
using System;
using UnityEngine;
using System.Collections;
namespace Pixelplacement
{
[RequireComponent(typeof(Initialization))]
public abstract class Singleton<T> : MonoBehaviour
{
//Public Properties:
/// <summary>
/// Gets the instance.
/// </summary>
public static T Instance
{
get
{
if (_instance == null)
{
Debug.LogError("Singleton not registered! Make sure the GameObject running your singleton is active in your scene and has an Initialization component attached.");
return default(T);
}
return _instance;
}
}
//Private Variables:
[SerializeField] bool _dontDestroyOnLoad = false;
static T _instance;
//Virtual Methods:
/// <summary>
/// Override this method to have code run when this singleton is initialized which is guaranteed to run before Awake and Start.
/// </summary>
protected virtual void OnRegistration()
{
}
//Public Methods:
/// <summary>
/// Generic method that registers the singleton instance.
/// </summary>
public void RegisterSingleton(T instance)
{
_instance = instance;
}
//Private Methods:
protected void Initialize(T instance)
{
if (_dontDestroyOnLoad && _instance != null)
{
//there is already an instance:
Destroy(gameObject);
return;
}
if (_dontDestroyOnLoad)
{
//don't destroy on load only works on root objects so let's force this transform to be a root object:
transform.parent = null;
DontDestroyOnLoad(gameObject);
}
_instance = instance;
OnRegistration();
}
}
}