Mini demo with all features
This commit is contained in:
+23
-39
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+13
-3
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user