Skip to content

Using with Unity

Matt edited this page Feb 28, 2023 · 3 revisions

To use this DLL with unity you need to add both hidapi.dll and AirAPI_Windows.dll to your unity project.

Configure both hidapi.dll and AirAPI_Windows.dll for x64

Demo

This demo creates a connection and prints the Euler and Quaternion data

//AirApi.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
public class AirAPI : MonoBehaviour
{
    [DllImport("AirAPI_Windows", CallingConvention = CallingConvention.Cdecl)]
        static extern int StartConnection();

    [DllImport("AirAPI_Windows", CallingConvention = CallingConvention.Cdecl)]
        static extern int StopConnection();

    [DllImport("AirAPI_Windows", CallingConvention = CallingConvention.Cdecl)]
        static extern IntPtr GetQuaternion();

    [DllImport("AirAPI_Windows", CallingConvention = CallingConvention.Cdecl)]
        static extern IntPtr GetEuler();

    float[] EulerArray = new float[3];
    IntPtr EulerPtr;

    float[] QuaternionArray = new float[4];
    IntPtr QuaternionPtr;

    void Start()
    {
        // Start the connection
       var res = StartConnection();
       if(res == 1)
       {
           Debug.Log("Connection started");
       }
       else
       {
           Debug.Log("Connection failed");
       }
    }

    void Update()
    {
    // Get array data from memory
    QuaternionPtr = GetQuaternion();
    Marshal.Copy(QuaternionPtr, QuaternionArray, 0, 4);

    EulerPtr = GetEuler();
    Marshal.Copy(EulerPtr, EulerArray, 0, 3);

    // Print data
    Debug.Log("Quaternion: " + QuaternionArray[0] + " " + QuaternionArray[1] + " " + QuaternionArray[2] + " " + QuaternionArray[3]);
    Debug.Log("Euler: " + EulerArray[0] + " " + EulerArray[1] + " " + EulerArray[2]);
    }

}
Clone this wiki locally