zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/Model/Core/Entity/Game.cs

66 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
namespace ET
{
public static class Game
{
public static ThreadSynchronizationContext ThreadSynchronizationContext => ThreadSynchronizationContext.Instance;
public static TimeInfo TimeInfo => TimeInfo.Instance;
public static EventSystem EventSystem => EventSystem.Instance;
private static Scene scene;
public static Scene Scene
{
get
{
if (scene != null)
{
return scene;
}
InstanceIdStruct instanceIdStruct = new InstanceIdStruct(Options.Process, 0);
scene = EntitySceneFactory.CreateScene(instanceIdStruct.ToLong(), 0, SceneType.Process, "Process");
return scene;
}
}
public static ObjectPool ObjectPool => ObjectPool.Instance;
public static IdGenerater IdGenerater => IdGenerater.Instance;
public static Options Options;
public static List<Action> FrameFinishCallback = new List<Action>();
public static void Update()
{
ThreadSynchronizationContext.Update();
TimeInfo.Update();
EventSystem.Update();
}
public static void LateUpdate()
{
EventSystem.LateUpdate();
}
public static void FrameFinish()
{
foreach (Action action in FrameFinishCallback)
{
action.Invoke();
}
FrameFinishCallback.Clear();
}
public static void Close()
{
scene?.Dispose();
scene = null;
ObjectPool.Instance.Dispose();
EventSystem.Instance.Dispose();
IdGenerater.Instance.Dispose();
}
}
}