Mini demo with all features

This commit is contained in:
2026-02-23 14:10:46 +01:00
parent 5b1bdaeb90
commit d9326e48cc
176 changed files with 32668 additions and 564 deletions
@@ -12,17 +12,13 @@ namespace Unheimlich.Gameplay.Player
{
public class DiapasonListeningHandlerV2 : Singleton<DiapasonListeningHandlerV2>
{
[Header("Systems")]
[SerializeField] private DiapasonEquipmentManager _equipmentManager;
[SerializeField] private CameraPanController _cameraPanController;
[Header("Settings")]
[SerializeField] private bool _disablePlayerMovementDuringListen = true;
[SerializeField] private bool _enablePanMode = true;
[Header("Visual Feedback")]
[SerializeField] private float _vignetteIntensity = 0.5f;
[SerializeField] private ListeningVignetteEffect _vignetteEffect;
[Tooltip("Vignette intensity during listening (0-1)")]
[SerializeField] [Range(0f, 1f)] private float _vignetteIntensity = 0.3f;
[Header("Audio")]
[SerializeField] private AudioClip _breathInClip;
@@ -46,23 +42,9 @@ namespace Unheimlich.Gameplay.Player
if (_playerAudioSource == null)
_playerAudioSource = gameObject.AddComponent<AudioSource>();
if (_cameraPanController == null)
{
_cameraPanController = GetComponent<CameraPanController>();
if (_cameraPanController == null)
{
Debug.LogWarning("[DiapasonV2] CameraPanController not found!");
}
}
if (_vignetteEffect == null)
{
_vignetteEffect = GetComponentInChildren<ListeningVignetteEffect>();
}
_cameraHeadBob = GetComponentInChildren<CameraHeadBob>();
if (_equipmentManager != null)
if (PlayerController.Instance != null)
{
SubscribeToEquipmentEvents();
}
@@ -70,7 +52,7 @@ namespace Unheimlich.Gameplay.Player
void OnDestroy()
{
if (_equipmentManager != null)
if (PlayerController.Instance != null && PlayerController.Instance.DiapasonEquipment != null)
{
UnsubscribeFromEquipmentEvents();
}
@@ -99,15 +81,15 @@ namespace Unheimlich.Gameplay.Player
}
}
if (IsListening && _cameraPanController != null)
if (IsListening && PlayerController.Instance?.CameraPanController != null)
{
_cameraPanController.UpdatePan();
PlayerController.Instance.CameraPanController.UpdatePan();
}
}
private void StartListeningMode()
{
if (_isFadingOut || _equipmentManager == null)
if (_isFadingOut || PlayerController.Instance?.DiapasonEquipment == null)
return;
if (_listeningCoroutine != null)
@@ -126,7 +108,7 @@ namespace Unheimlich.Gameplay.Player
PlayerController.Instance.Movement.enabled = false;
}
_equipmentManager.EquipDiapason();
PlayerController.Instance.DiapasonEquipment.EquipDiapason();
PlayBreathIn();
yield return new WaitForSeconds(_breathInDuration);
@@ -144,10 +126,10 @@ namespace Unheimlich.Gameplay.Player
EnableVignette(true);
if (_enablePanMode && _cameraPanController != null)
if (_enablePanMode && PlayerController.Instance?.CameraPanController != null)
{
_cameraPanController.SaveOriginalState();
_cameraPanController.StartPan();
PlayerController.Instance.CameraPanController.SaveOriginalState();
PlayerController.Instance.CameraPanController.StartPan();
}
Cursor.lockState = CursorLockMode.Confined;
@@ -166,18 +148,18 @@ namespace Unheimlich.Gameplay.Player
IsConcentrating = false;
_isFadingOut = true;
_equipmentManager.UnequipDiapason();
PlayerController.Instance.DiapasonEquipment.UnequipDiapason();
EnableVignette(false);
if (_enablePanMode && _cameraPanController != null)
if (_enablePanMode && PlayerController.Instance?.CameraPanController != null)
{
_cameraPanController.StopPan();
_cameraPanController.ReturnToOriginalPosition(() =>
PlayerController.Instance.CameraPanController.StopPan();
PlayerController.Instance.CameraPanController.ReturnToOriginalPosition(() =>
{
if (_originalCameraSettings != null)
if (_originalCameraSettings != null && PlayerController.Instance?.CameraPanController != null)
{
_cameraPanController.Settings = _originalCameraSettings;
PlayerController.Instance.CameraPanController.Settings = _originalCameraSettings;
_originalCameraSettings = null;
}
@@ -215,15 +197,17 @@ namespace Unheimlich.Gameplay.Player
private void EnableVignette(bool enable)
{
if (_vignetteEffect == null)
if (ListeningVignetteEffect.Instance == null)
return;
if (enable)
{
_vignetteEffect.SetIntensity(_vignetteIntensity);
ListeningVignetteEffect.Instance.EnableVignetteWithIntensity(_vignetteIntensity);
}
else
{
ListeningVignetteEffect.Instance.EnableVignette(false);
}
_vignetteEffect.EnableVignette(enable);
}
}
}
@@ -1,24 +1,28 @@
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using Unheimlich.Core;
namespace Unheimlich.Gameplay.Player
{
public class ListeningVignetteEffect : MonoBehaviour
public class ListeningVignetteEffect : Singleton<ListeningVignetteEffect>
{
[Header("References")]
[Tooltip("Dedicated Volume for listening mode (not shared with dialogue system)")]
[SerializeField] private Volume _listeningVolume;
[Header("Settings")]
[SerializeField] private float _targetIntensity = 0.5f;
[Tooltip("Target intensity when listening (0-1)")]
[SerializeField] [Range(0f, 1f)] private float _targetIntensity = 0.3f;
[Tooltip("Speed of vignette fade in/out")]
[SerializeField] private float _transitionSpeed = 2f;
private Vignette _vignette;
private bool _isEnabled;
private VolumeProfile _volumeProfile;
private void Awake()
protected override void OnAwake()
{
if (_listeningVolume == null)
{
@@ -79,6 +83,12 @@ namespace Unheimlich.Gameplay.Player
if (_vignette != null)
_vignette.intensity.value = _targetIntensity;
}
public void EnableVignetteWithIntensity(float intensity)
{
SetIntensity(intensity);
EnableVignette(true);
}
private void OnDestroy()
{
@@ -4,6 +4,8 @@ using Unheimlich.Core;
using Unheimlich.Data;
using Unheimlich.Managers;
using Unheimlich.Gameplay.CameraControl;
using Unheimlich.Interactions.Core;
using Unheimlich.Gameplay.DetectiveBoard;
namespace Unheimlich.Gameplay.Player
{
@@ -23,6 +25,12 @@ namespace Unheimlich.Gameplay.Player
public Transform CameraPivot { get; private set; }
public CameraEffects CameraEffects { get; private set; }
public CameraPanController CameraPanController { get; private set; }
public DiapasonListeningHandlerV2 DiapasonHandler { get; private set; }
public DiapasonEquipmentManager DiapasonEquipment { get; private set; }
public PlayerInspectionHandler InspectionHandler { get; private set; }
public DetectiveBoardController DetectiveBoardController { get; private set; }
public OctoIkArmsImproved ArmsSystem { get; private set; }
public InputManager Inputs => InputManager.Instance;
public bool IsMoving
@@ -61,7 +69,13 @@ namespace Unheimlich.Gameplay.Player
CharController = GetComponent<CharacterController>();
CameraEffects = GetComponent<CameraEffects>();
CameraPanController = GetComponent<CameraPanController>();
DiapasonHandler = GetComponent<DiapasonListeningHandlerV2>();
DiapasonEquipment = GetComponent<DiapasonEquipmentManager>();
InspectionHandler = GetComponent<PlayerInspectionHandler>();
DetectiveBoardController = GetComponent<DetectiveBoardController>();
PlayerCamera = GetComponentInChildren<Camera>();
ArmsSystem = GetComponentInChildren<OctoIkArmsImproved>();
if (PlayerCamera != null)
{