69 lines
1.7 KiB
C#

using System;
using HTraceWSGI.Scripts.Data.Private;
using UnityEngine;
using Object = UnityEngine.Object;
namespace HTraceWSGI.Scripts.Services.DirectionalShadowmap
{
[ExecuteAlways]
internal class DirectionalShadowmapService : IService
{
public HTraceDirectionalCamera DirectionalCamera;
private static DirectionalShadowmapService _instance;
public static DirectionalShadowmapService Instance
{
get
{
if (_instance == null)
_instance = new DirectionalShadowmapService();
return _instance;
}
}
public void Initialize(int layer)
{
CreateHTraceCameraDirectional(layer);
}
private void CreateHTraceCameraDirectional(int layer)
{
if (DirectionalCamera != null)
{
DirectionalCamera.Initialize(this);
return;
}
GameObject cameraFromDirLightGo = new GameObject("HTraceDirectionalCameraHandler");
cameraFromDirLightGo.layer = layer;
cameraFromDirLightGo.hideFlags = HSettings.DebugSettings.ShowBowels ? HideFlags.DontSave : HideFlags.HideAndDontSave;
DirectionalCamera = cameraFromDirLightGo.AddComponent<HTraceDirectionalCamera>();
DirectionalCamera.Initialize(this);
}
public bool PingDirLight(HTraceDirectionalCamera camera)
{
return DirectionalCamera != camera;
}
public void LateUpdate()
{
if (DirectionalCamera != null)
{
DirectionalCamera.gameObject.hideFlags = HSettings.DebugSettings.ShowBowels ? HideFlags.DontSave : HideFlags.HideAndDontSave;
DirectionalCamera.hideFlags = HSettings.DebugSettings.ShowBowels ? HideFlags.DontSave : HideFlags.HideAndDontSave;
}
}
public void Cleanup()
{
// if (DirectionalCamera != null)
// Object.DestroyImmediate(DirectionalCamera.gameObject);
}
}
}