BITKit/Packages/Runtime~/Unity/Extensions/Entity/EntityInputSystem.cs

183 lines
8.6 KiB
C#

/* using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using BITKit.BITInputSystem;
using BITKit.Entities;
using BITKit;
namespace BITKit.SubSystems.Input
{
[SubSystemConfig(isMainThread = true)]
public class EntityInputSystem : SubBITSystem, BITController.IGameplayActions
{
ValidHandle enabled = new();
Entity entity;
bool cursorLocked;
public override void OnStart()
{
enabled.AddListener(x =>
{
if (x)
{
RegisterCallback();
}
else
{
UnRegisterCallback();
}
});
}
public void RegisterCallback()
{
Data.AddListener<InputAction.CallbackContext>(nameof(OnMovement), OnMovement);
Data.AddListener<InputAction.CallbackContext>(nameof(OnView), OnView);
Data.AddListener<InputAction.CallbackContext>(nameof(OnJump), OnJump);
Data.AddListener<InputAction.CallbackContext>(nameof(OnCrouch), OnCrouch);
Data.AddListener<InputAction.CallbackContext>(nameof(OnHoldCrouch), OnHoldCrouch);
Data.AddListener<InputAction.CallbackContext>(nameof(OnFire), OnFire);
Data.AddListener<InputAction.CallbackContext>(nameof(OnAim), OnAim);
Data.AddListener<InputAction.CallbackContext>(nameof(OnInteractive), OnInteractive);
Data.AddListener<InputAction.CallbackContext>(nameof(OnAbility), OnAbility);
Data.AddListener<InputAction.CallbackContext>(nameof(OnMelee), OnMelee);
Data.AddListener<InputAction.CallbackContext>(nameof(OnRun), OnRun);
Data.AddListener<InputAction.CallbackContext>(nameof(OnRunHold), OnRunHold);
Data.AddListener<InputAction.CallbackContext>(nameof(OnReload), OnReload);
Data.AddListener<InputAction.CallbackContext>(nameof(OnPrimary), OnPrimary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnSecondary), OnSecondary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnTertiary), OnTertiary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnQuaternary), OnQuaternary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnQuinary), OnQuinary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnSenary), OnSenary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnSeptenary), OnSeptenary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnOctonary), OnOctonary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnNonary), OnNonary);
Data.AddListener<InputAction.CallbackContext>(nameof(OnDenary), OnDenary);
}
public void UnRegisterCallback()
{
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnMovement), OnMovement);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnView), OnView);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnJump), OnJump);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnCrouch), OnCrouch);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnHoldCrouch), OnHoldCrouch);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnFire), OnFire);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnAim), OnAim);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnInteractive), OnInteractive);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnMelee), OnMelee);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnAbility), OnAbility);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnRunHold), OnRunHold);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnReload), OnReload);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnPrimary), OnPrimary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnSecondary), OnSecondary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnTertiary), OnTertiary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnQuaternary), OnQuaternary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnQuinary), OnQuinary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnSenary), OnSenary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnSeptenary), OnSeptenary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnOctonary), OnOctonary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnNonary), OnNonary);
Data.RemoveListender<InputAction.CallbackContext>(nameof(OnDenary), OnDenary);
}
public override void OnUpdate(float deltaTime)
{
entity = IEntity.LocalPlayer;
enabled.SetElements(this.entity is not null);
cursorLocked = Cursor.lockState is CursorLockMode.Locked;
}
public virtual void OnMovement(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnMovement), context);
}
public virtual void OnView(InputAction.CallbackContext context)
{
if (cursorLocked)
entity?.Invoke(nameof(OnView), context);
}
public virtual void OnJump(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnJump), context);
}
public virtual void OnCrouch(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnCrouch), context);
}
public virtual void OnHoldCrouch(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnHoldCrouch), context);
}
public virtual void OnFire(InputAction.CallbackContext context)
{
if (cursorLocked)
entity?.Invoke(nameof(OnFire), context);
}
public virtual void OnAim(InputAction.CallbackContext context)
{
if (cursorLocked)
entity?.Invoke(nameof(OnAim), context);
}
public virtual void OnInteractive(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnInteractive), context);
}
public virtual void OnAbility(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnAbility), context);
}
public virtual void OnMelee(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnMelee), context);
}
public virtual void OnRun(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnRun), context);
}
public virtual void OnRunHold(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnRunHold), context);
}
public virtual void OnReload(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnReload), context);
}
public virtual void OnPrimary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnPrimary), context);
}
public virtual void OnSecondary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnSecondary), context);
}
public virtual void OnTertiary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnTertiary), context);
}
public virtual void OnQuaternary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnQuaternary), context);
}
public virtual void OnQuinary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnQuinary), context);
}
public virtual void OnSenary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnSenary), context);
}
public virtual void OnSeptenary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnSeptenary), context);
}
public virtual void OnOctonary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnOctonary), context);
}
public virtual void OnNonary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnNonary), context);
}
public virtual void OnDenary(InputAction.CallbackContext context)
{
entity?.Invoke(nameof(OnDenary), context);
}
}
} */