projectEli/Assets/NeoFPS/Core/SinglePlayer/Character/FpsSoloCharacter.cs
2022-11-06 20:28:33 -05:00

63 lines
1.9 KiB
C#

using System;
using UnityEngine;
using UnityEngine.Events;
using NeoCC;
using NeoFPS.Constants;
using NeoFPS.CharacterMotion;
namespace NeoFPS.SinglePlayer
{
[HelpURL("https://docs.neofps.com/manual/fpcharactersref-mb-fpssolocharacter.html")]
public class FpsSoloCharacter : BaseCharacter
{
public static event UnityAction<FpsSoloCharacter> onLocalPlayerCharacterChange;
private static FpsSoloCharacter m_LocalPlayerCharacter = null;
public static FpsSoloCharacter localPlayerCharacter
{
get { return m_LocalPlayerCharacter; }
set
{
m_LocalPlayerCharacter = value;
if (onLocalPlayerCharacterChange != null)
onLocalPlayerCharacterChange(m_LocalPlayerCharacter);
}
}
protected override void OnControllerChanged()
{
base.OnControllerChanged();
// Check if controller is player
if (controller != null)
{
if (controller.isPlayer)
{
localPlayerCharacter = this;
SetFirstPerson(true);
}
else
{
if (localPlayerCharacter == this)
localPlayerCharacter = null;
SetFirstPerson(false);
}
if ((FpsSoloCharacter)controller.currentCharacter != this)
controller.currentCharacter = this;
gameObject.SetActive(((MonoBehaviour)controller).isActiveAndEnabled);
}
else
{
if (localPlayerCharacter == this)
localPlayerCharacter = null;
SetFirstPerson(false);
// Disable the object (needs a controller to function)
gameObject.SetActive(false);
}
}
}
}