69 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|