ArcadeInputPackage/README.md
2025-09-20 00:28:00 -04:00

4.9 KiB

Conjure Arcade Controller Package

Unity Input System support for Conjure Arcade Controllers.

Features

  • Custom Input Device implementation for Conjure Arcade Controllers
  • Arcade stick support with directional buttons (up, down, left, right)
  • 8 button support (Home, Start, 1-3, A-C)
  • Multi-controller support with controller indexing
  • Integration with Unity's Input System
  • Input Action Asset extensions for easy controller assignment

Requirements

  • Unity 2021.3 or later
  • Unity Input System package (1.4.4 or later)

Installation

Via Package Manager (Git URL)

  1. Open the Package Manager in Unity
  2. Click the "+" button and select "Add package from git URL"
  3. Enter the repository URL

Via Package Manager (Local)

  1. Download or clone this repository
  2. Open the Package Manager in Unity
  3. Click the "+" button and select "Add package from disk"
  4. Select the package.json file from the downloaded folder

Quick Start

Basic Usage

using ConjureOS.Input;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    void Update()
    {
        var controller = ConjureArcadeController.current;
        if (controller == null) return;

        // Read stick input
        Vector2 stickInput = controller.stick.ReadValue();
        
        // Check button presses
        if (controller.buttonA.wasPressedThisFrame)
        {
            // Handle A button press
        }
        
        if (controller.start.wasPressedThisFrame)
        {
            // Handle start button press
        }
    }
}

Using Input Actions

  1. Create an Input Action Asset in your project
  2. Add actions and bind them to Conjure controller inputs:
    • Stick: <ConjureArcadeController>/stick
    • Buttons: <ConjureArcadeController>/buttonA, <ConjureArcadeController>/start, etc.
using ConjureOS.Input;
using UnityEngine;
using UnityEngine.InputSystem;

public class InputActionExample : MonoBehaviour
{
    [SerializeField] private InputActionAsset inputActions;
    
    void Start()
    {
        // Assign controller 0 to this input action asset
        inputActions.AssignConjureController(0);
        inputActions.Enable();
    }
}

Multi-Controller Support

// Check how many controllers are connected
int controllerCount = ConjureArcadeController.ControllerCount;

// Get specific controller by index
ConjureArcadeController player1 = ConjureArcadeController.GetForIndex(0);
ConjureArcadeController player2 = ConjureArcadeController.GetForIndex(1);

// Check if controller exists for index
if (ConjureArcadeController.ExistForIndex(0))
{
    // Controller 0 is available
}

API Reference

ConjureArcadeController

Main controller class that provides access to all inputs.

Properties:

  • stick - ConjureArcadeStickControl for joystick input
  • home, start - ButtonControl for system buttons
  • button1, button2, button3 - ButtonControl for numbered buttons
  • buttonA, buttonB, buttonC - ButtonControl for lettered buttons
  • ControllerIndex - The index of this controller instance

Static Properties:

  • current - Currently active controller
  • allControllers - Array of all connected controllers
  • ControllerCount - Number of connected controllers

Static Methods:

  • ExistForIndex(int) - Check if controller exists for index
  • GetForIndex(int) - Get controller by index

Events:

  • OnControllerAdded - Fired when a controller is connected
  • OnControllerRemoved - Fired when a controller is disconnected

ConjureArcadeStickControl

Custom stick control that provides both Vector2 input and directional buttons.

Properties:

  • up, down, left, right - ButtonControl for directional input
  • Standard Vector2Control properties for analog input

InputActionAssetExtension

Extension methods for InputActionAsset to simplify controller assignment.

Methods:

  • AssignConjureController(int, bool) - Assign specific controller to asset
  • CanAssignConjureController(int) - Check if controller can be assigned
  • GetConjureControllerIndex() - Get assigned controller index
  • GetConjureControllerIndexes() - Get all assigned controller indexes

Input Bindings

When setting up Input Actions, use these binding paths:

  • Stick (Vector2): <ConjureArcadeController>/stick
  • Stick Directions:
    • <ConjureArcadeController>/stick/up
    • <ConjureArcadeController>/stick/down
    • <ConjureArcadeController>/stick/left
    • <ConjureArcadeController>/stick/right
  • Buttons:
    • <ConjureArcadeController>/home
    • <ConjureArcadeController>/start
    • <ConjureArcadeController>/button1
    • <ConjureArcadeController>/button2
    • <ConjureArcadeController>/button3
    • <ConjureArcadeController>/buttonA
    • <ConjureArcadeController>/buttonB
    • <ConjureArcadeController>/buttonC

Hardware Information

The controller is detected as:

  • Interface: HID
  • Product: "Generic USB Joystick " (note the extra spaces)