This commit is contained in:
2026-07-09 21:33:33 +02:00
commit 84a2a365f3
2364 changed files with 950134 additions and 0 deletions
@@ -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