Hi, Im creating a .net wrapper for unity. When i try to implement 3d positions i crash when i send a struct with floats higher than zero. Anyone knows why?
This is my code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using MyType = System.Int64;
namespace bt
{
public class bass
{
public struct BASS_3DVECTOR
{
public float x, y, z;
}
public enum channelSettings
{
BASS_ATTRIB_EAXMIX = 4,
BASS_ATTRIB_FREQ = 1,
BASS_ATTRIB_MUSIC_AMPLIFY,
BASS_ATTRIB_MUSIC_BPM,
BASS_ATTRIB_MUSIC_PANSEP,
BASS_ATTRIB_MUSIC_PSCALER,
BASS_ATTRIB_MUSIC_SPEED,
BASS_ATTRIB_MUSIC_VOL_CHAN,
BASS_ATTRIB_MUSIC_VOL_GLOBAL,
BASS_ATTRIB_MUSIC_VOL_INST,
BASS_ATTRIB_NOBUFFER,
BASS_ATTRIB_PAN = 3,
BASS_ATTRIB_VOL = 2
}
public enum channelTags
{
BASS_TAG_ICY = 4,
BASS_TAG_META = 5,
BASS_TAG_HTTP = 3,
BASS_TAG_OGG = 2
}
public enum syncTypes {
BASS_SYNC_META = 4
}
public enum initFlags
{
BASS_DEVICE_3D = 4
}
public enum flags
{
BASS_DEFAULT = 0,
BASS_SAMPLE_MONO = 2,
BASS_SAMPLE_3D = 8
}
public enum test
{
BASS_CONFIG_DEV_BUFFER
}
public enum configs
{
BASS_CONFIG_NET_PLAYLIST = 21,
BASS_CONFIG_BUFFER,
BASS_CONFIG_DEV_BUFFER
}
[DllImport("bass.dll")]
public static extern bool BASS_ChannelSet3DPosition(int stream, BASS_3DVECTOR pos, BASS_3DVECTOR pos1, BASS_3DVECTOR pos2);
public static bool set3DPosition()
{
BASS_3DVECTOR pos;
pos.x = 0f;
pos.y = 0f;
pos.z = 0f;
pos.x = 1f; //crash
bool test = BASS_Set3DPosition(pos, pos, pos, pos);
return test;
}
public static int stream;
public static int play(string url)
{
if (BASS_Init(-1, 44100, initFlags.BASS_DEVICE_3D, IntPtr.Zero, IntPtr.Zero))
{
BASS_PluginLoad("bass_aac.dll", 0);
BASS_SetConfig(configs.BASS_CONFIG_NET_PLAYLIST, 1);
stream = BASS_StreamCreateURL(url, 0, flags.BASS_SAMPLE_3D | flags.BASS_SAMPLE_MONO, 0, 0);
if (stream != 0)
{
BASS_ChannelPlay(stream, false);
return stream;
}
else
{
return 1;
}
}
else
{
return 2;
}
}
}
}