eye-therapy-2 / Assets / Scripts / Builder / BuildingInputManager.cs
BuildingInputManager.cs
Raw
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Events;

public class BuildingInputManager : MonoBehaviour, IListener
{
    public InputEvent buildingConfirmedEvent;
    public InputEvent buildingMovedEvent;

    private InputActions input;
    private VRControlMode currentVRControlMode;

    void Awake()
    {
        input = new InputActions();

        EventManager.Instance.AddListener(EVENT_TYPE.ON_VR_CONTROLMODE_SWITCHED, this);
    }

    private void OnEnable()
    {
        input.BuilderInput.Enable();

        // Building Management
        input.BuilderInput.Confirm.performed += OnBuildingConfirmed;
        input.BuilderInput.MoveBuilding.performed += OnBuildingMoved;
        input.BuilderInput.MoveBuilding.canceled += OnBuildingMoved;
    }

    private void OnDisable()
    {
        // Building Management
        input.BuilderInput.Confirm.performed -= OnBuildingConfirmed;
        input.BuilderInput.MoveBuilding.performed -= OnBuildingMoved;
        input.BuilderInput.MoveBuilding.canceled -= OnBuildingMoved;

        input.BuilderInput.Disable();
    }

    private void OnBuildingConfirmed(InputAction.CallbackContext ctx)
    {
        if (currentVRControlMode == VRControlMode.Advanced && ctx.control.device.description.interfaceName.Contains("XR")) return;
        buildingConfirmedEvent.Invoke(ctx);
    }

    private void OnBuildingMoved(InputAction.CallbackContext ctx)
    {
        if (currentVRControlMode == VRControlMode.Advanced && ctx.control.device.description.interfaceName.Contains("XR")) return;
        buildingMovedEvent.Invoke(ctx);
    }

    public void OnEvent<T>(EVENT_TYPE eventType, Component Sender, T param = default)
    {
        switch(eventType)
        {
            case EVENT_TYPE.ON_VR_CONTROLMODE_SWITCHED:
                currentVRControlMode = (VRControlMode)(dynamic)param;
                break;
        }
    }
}