Files
Bombaleila/Assets/ThunderWire Studio/UHFPS/Content/Scripts/Runtime/Controllers/Player/PlayerComponent.cs
2026-03-03 05:27:03 +05:00

93 lines
2.6 KiB
C#

using System;
using UnityEngine;
using Cinemachine;
namespace UHFPS.Runtime
{
public abstract class PlayerComponent : MonoBehaviour
{
protected bool isEnabled = true;
public virtual void SetEnabled(bool enabled)
{
isEnabled = enabled;
}
[NonSerialized]
private PlayerManager playerManager;
public PlayerManager PlayerManager
{
get
{
if (playerManager == null)
{
Transform currentTransform = transform;
while (currentTransform != null)
{
if (currentTransform.TryGetComponent(out playerManager))
break;
currentTransform = currentTransform.parent;
}
}
return playerManager;
}
}
[NonSerialized]
private CharacterController playerCollider;
public CharacterController PlayerCollider
{
get
{
if (playerCollider == null)
playerCollider = PlayerManager.GetComponent<CharacterController>();
return playerCollider;
}
}
[NonSerialized]
private PlayerStateMachine playerStateMachine;
public PlayerStateMachine PlayerStateMachine
{
get
{
if (playerStateMachine == null)
playerStateMachine = PlayerManager.GetComponent<PlayerStateMachine>();
return playerStateMachine;
}
}
[NonSerialized]
private LookController lookController;
public LookController LookController
{
get
{
if (lookController == null)
lookController = PlayerManager.GetComponentInChildren<LookController>();
return lookController;
}
}
[NonSerialized]
private ExamineController examineController;
public ExamineController ExamineController
{
get
{
if (examineController == null)
examineController = PlayerManager.GetComponentInChildren<ExamineController>();
return examineController;
}
}
public Camera MainCamera => PlayerManager.MainCamera;
public CinemachineVirtualCamera VirtualCamera => PlayerManager.MainVirtualCamera;
}
}