Looks wrong to me, too.
While there's a new C# wrapper in development, let's try to fix it right here as I don't have an ETA on that.
Shot from the hip I'd change:
Code:
[StructLayout(LayoutKind.Sequential)]
public struct TS3_VECTOR
{
[MarshalAs(UnmanagedType.R4)]
public float x;
[MarshalAs(UnmanagedType.R4)]
public float y;
[MarshalAs(UnmanagedType.R4)]
public float z;
}
Code:
[DllImport(DLL_PATH, EntryPoint = "ts3client_systemset3DListenerAttributes")]
public static extern uint ts3client_systemset3DListenerAttributes(uint64 scHandlerID, [param: MarshalAs(UnmanagedType.Struct), In] ref TS3_VECTOR position, [param: MarshalAs(UnmanagedType.Struct), In] ref TS3_VECTOR forward, [MarshalAs(UnmanagedType.Struct), In] ref TS3_VECTOR up);
Code:
[DllImport(DLL_PATH, EntryPoint = "ts3client_channelset3DAttributes")]
public static extern uint ts3client_channelset3DAttributes(uint64 scHandlerID, anyID clientID, [param: MarshalAs(UnmanagedType.Struct), In] ref TS3_VECTOR position);
That said, it's untested and I haven't been working in C# for quite a while. I'll point our dev in charge for C# / Unity here, too.