Pink/Assets/Scripts/Environment/GameController.cs

44 lines
1.2 KiB
C#

using UnityEngine;
using UnityEngine.SceneManagement;
namespace Pink.Environment
{
/// <summary>
/// This class exposes the the game model in the inspector, and ticks the
/// simulation.
/// </summary>
public class GameController : MonoBehaviour
{
public static GameController Instance { get; private set; }
//This model field is public and can be therefore be modified in the
//inspector.
//The reference actually comes from the InstanceRegister, and is shared
//through the simulation and events. Unity will deserialize over this
//shared reference when the scene loads, allowing the model to be
//conveniently configured inside the inspector.
public EnvironmentModel model = Simulation.GetModel<EnvironmentModel>();
void OnEnable()
{
Instance = this;
}
void OnDisable()
{
if (Instance == this) Instance = null;
}
void Update()
{
if (Instance == this) Simulation.Tick();
}
void LoadLevel(string levelName)
{
Debug.Log($"Loading level {levelName}");
SceneManager.LoadScene(levelName);
}
}
}