init
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
|
||||
namespace VOID.Generic.Triggers
|
||||
{
|
||||
[RequireComponent(typeof(Collider))]
|
||||
public class HideCeilingTrigger : MonoBehaviour, ICameraTrigger
|
||||
{
|
||||
public List<GameObject> gameObjectsToHide => _gameObjectsToHide;
|
||||
|
||||
[SerializeField, RequiredListLength(MinLength = 1)] private List<GameObject> _gameObjectsToHide = new();
|
||||
|
||||
// Cache
|
||||
private List<Renderer> _renderers = new();
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
_renderers = _gameObjectsToHide
|
||||
.Where(go => _gameObjectsToHide.All(other => go == other || !go.transform.IsChildOf(other.transform)))
|
||||
.SelectMany(go => go.GetComponentsInChildren<Renderer>())
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public void OnCameraEnter()
|
||||
{
|
||||
_renderers.ForEach(renderer => renderer.shadowCastingMode = ShadowCastingMode.ShadowsOnly);
|
||||
}
|
||||
|
||||
public void OnCameraExit()
|
||||
{
|
||||
_renderers.ForEach(renderer => renderer.shadowCastingMode = ShadowCastingMode.On);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 459763994b374437bafcf8e0f8200c7f
|
||||
timeCreated: 1731449473
|
||||
@@ -0,0 +1,15 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace VOID.Generic.Triggers
|
||||
{
|
||||
/// <summary>
|
||||
/// This interface allow camera's dummy to call <see cref="OnCameraEnter"/> and <see cref="OnCameraExit"/>.<br/>
|
||||
/// Implementing component need to be placed on layer: <see cref="LayerManager.Camera"/>.<br/>
|
||||
/// Setting <see cref="Collider"/>'s <see cref="Collider.isTrigger"/> to true is required!<br/>
|
||||
/// </summary>
|
||||
public interface ICameraTrigger
|
||||
{
|
||||
public void OnCameraEnter();
|
||||
public void OnCameraExit();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f8425893fc8443ba864c98808e5bb97a
|
||||
timeCreated: 1731623130
|
||||
@@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
using VOID.Generic.Objects.Abstract;
|
||||
|
||||
namespace VOID.Generic.Triggers
|
||||
{
|
||||
/// <summary>
|
||||
/// This interface allow <see cref="AbstractObject"/> to call <see cref="OnObjectEnter"/> and <see cref="OnObjectExit"/>.<br/>
|
||||
/// Implementing component need to be placed on one of layers: <see cref="LayerManager.Dynamic"/> or <see cref="LayerManager.Trigger"/>.<br/>
|
||||
/// Setting <see cref="Collider"/>'s <see cref="Collider.isTrigger"/> to true is required!<br/>
|
||||
/// </summary>
|
||||
public interface IDynamicTrigger
|
||||
{
|
||||
public void OnObjectEnter(AbstractObject obj);
|
||||
public void OnObjectExit(AbstractObject obj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48804ddc982d49c2bd2ad1347194ef6d
|
||||
timeCreated: 1697135280
|
||||
Reference in New Issue
Block a user