123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571 |
- /************************************************************************************
- Filename : ONSPPropagationInterface.cs
- Content : Interface into the Oculus Audio propagation functions
- Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
- Licensed under the Oculus SDK Version 3.5 (the "License");
- you may not use the Oculus SDK except in compliance with the License,
- which is provided at the time of installation or download, or which
- otherwise accompanies this software in either electronic or hard copy form.
- You may obtain a copy of the License at
- https://developer.oculus.com/licenses/sdk-3.5/
- Unless required by applicable law or agreed to in writing, the Oculus SDK
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ************************************************************************************/
- using System;
- using System.Runtime.InteropServices;
- using UnityEngine;
- using Oculus.Spatializer.Propagation;
- namespace Oculus
- {
- namespace Spatializer
- {
- namespace Propagation
- {
- /***********************************************************************************/
- // ENUMS and STRUCTS
- /***********************************************************************************/
- public enum FaceType : uint
- {
- TRIANGLES = 0,
- QUADS
- }
- public enum MaterialProperty : uint
- {
- ABSORPTION = 0,
- TRANSMISSION,
- SCATTERING
- }
- // Matches internal mesh layout
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- public struct MeshGroup
- {
- public UIntPtr indexOffset;
- public UIntPtr faceCount;
- [MarshalAs(UnmanagedType.U4)]
- public FaceType faceType;
- public IntPtr material;
- }
- }
- }
- }
- class ONSPPropagation
- {
- static PropagationInterface CachedInterface;
- public static PropagationInterface Interface { get { if (CachedInterface == null) CachedInterface = FindInterface(); return CachedInterface; } }
- static PropagationInterface FindInterface()
- {
- IntPtr temp;
- try
- {
- WwisePluginInterface.ovrAudio_GetPluginContext(out temp, ClientType.OVRA_CLIENT_TYPE_WWISE_UNKNOWN);
- Debug.Log("Propagation initialized with Wwise Oculus Spatializer plugin");
- return new WwisePluginInterface();
- }
- catch(System.DllNotFoundException)
- {
- // this is fine
- }
- try
- {
- FMODPluginInterface.ovrAudio_GetPluginContext(out temp, ClientType.OVRA_CLIENT_TYPE_FMOD);
- Debug.Log("Propagation initialized with FMOD Oculus Spatializer plugin");
- return new FMODPluginInterface();
- }
- catch (System.DllNotFoundException)
- {
- // this is fine
- }
- Debug.Log("Propagation initialized with Unity Oculus Spatializer plugin");
- return new UnityNativeInterface();
- }
- public enum ovrAudioScalarType : uint
- {
- Int8,
- UInt8,
- Int16,
- UInt16,
- Int32,
- UInt32,
- Int64,
- UInt64,
- Float16,
- Float32,
- Float64
- }
- public class ClientType
- {
- // Copied from AudioSDK\OVRAudio\OVR_Audio_Internal.h
- public const uint OVRA_CLIENT_TYPE_NATIVE = 0;
- public const uint OVRA_CLIENT_TYPE_WWISE_2016 = 1;
- public const uint OVRA_CLIENT_TYPE_WWISE_2017_1 = 2;
- public const uint OVRA_CLIENT_TYPE_WWISE_2017_2 = 3;
- public const uint OVRA_CLIENT_TYPE_WWISE_2018_1 = 4;
- public const uint OVRA_CLIENT_TYPE_FMOD = 5;
- public const uint OVRA_CLIENT_TYPE_UNITY = 6;
- public const uint OVRA_CLIENT_TYPE_UE4 = 7;
- public const uint OVRA_CLIENT_TYPE_VST = 8;
- public const uint OVRA_CLIENT_TYPE_AAX = 9;
- public const uint OVRA_CLIENT_TYPE_TEST = 10;
- public const uint OVRA_CLIENT_TYPE_OTHER = 11;
- public const uint OVRA_CLIENT_TYPE_WWISE_UNKNOWN = 12;
- }
- public interface PropagationInterface
- {
- /***********************************************************************************/
- // Settings API
- int SetPropagationQuality(float quality);
- int SetPropagationThreadAffinity(UInt64 cpuMask);
- /***********************************************************************************/
- // Geometry API
- int CreateAudioGeometry(out IntPtr geometry);
- int DestroyAudioGeometry(IntPtr geometry);
- int AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, int vertexCount,
- int[] indices, int indexCount,
- MeshGroup[] groups, int groupCount);
- int AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4);
- int AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4);
- int AudioGeometryWriteMeshFile(IntPtr geometry, string filePath);
- int AudioGeometryReadMeshFile(IntPtr geometry, string filePath);
- int AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath);
-
- /***********************************************************************************/
- // Material API
- int AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value);
- int CreateAudioMaterial(out IntPtr material);
- int DestroyAudioMaterial(IntPtr material);
- int AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value);
- int AudioMaterialReset(IntPtr material, MaterialProperty property);
- }
- /***********************************************************************************/
- // UNITY NATIVE
- /***********************************************************************************/
- public class UnityNativeInterface : PropagationInterface
- {
- // The name used for the plugin DLL.
- public const string strOSPS = "AudioPluginOculusSpatializer";
- /***********************************************************************************/
- // Context API: Required to create internal context if it does not exist yet
- IntPtr context_ = IntPtr.Zero;
- IntPtr context { get { if (context_ == IntPtr.Zero) { ovrAudio_GetPluginContext(out context_, ClientType.OVRA_CLIENT_TYPE_UNITY); } return context_; } }
- [DllImport(strOSPS)]
- public static extern int ovrAudio_GetPluginContext(out IntPtr context, uint clientType);
- /***********************************************************************************/
- // Settings API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationQuality(IntPtr context, float quality);
- public int SetPropagationQuality(float quality)
- {
- return ovrAudio_SetPropagationQuality(context, quality);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationThreadAffinity(IntPtr context, UInt64 cpuMask);
- public int SetPropagationThreadAffinity(UInt64 cpuMask)
- {
- return ovrAudio_SetPropagationThreadAffinity(context, cpuMask);
- }
- /***********************************************************************************/
- // Geometry API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioGeometry(IntPtr context, out IntPtr geometry);
- public int CreateAudioGeometry(out IntPtr geometry)
- {
- return ovrAudio_CreateAudioGeometry(context, out geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioGeometry(IntPtr geometry);
- public int DestroyAudioGeometry(IntPtr geometry)
- {
- return ovrAudio_DestroyAudioGeometry(geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, UIntPtr verticesBytesOffset, UIntPtr vertexCount, UIntPtr vertexStride, ovrAudioScalarType vertexType,
- int[] indices, UIntPtr indicesByteOffset, UIntPtr indexCount, ovrAudioScalarType indexType,
- MeshGroup[] groups, UIntPtr groupCount);
- public int AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, int vertexCount,
- int[] indices, int indexCount,
- MeshGroup[] groups, int groupCount)
- {
- return ovrAudio_AudioGeometryUploadMeshArrays(geometry,
- vertices, UIntPtr.Zero, (UIntPtr)vertexCount, UIntPtr.Zero, ovrAudioScalarType.Float32,
- indices, UIntPtr.Zero, (UIntPtr)indexCount, ovrAudioScalarType.UInt32,
- groups, (UIntPtr)groupCount);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4);
- public int AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4)
- {
- return ovrAudio_AudioGeometrySetTransform(geometry, matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4);
- public int AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4)
- {
- return ovrAudio_AudioGeometryGetTransform(geometry, out matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryReadMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryReadMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryReadMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFileObj(geometry, filePath);
- }
- /***********************************************************************************/
- // Material API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioMaterial(IntPtr context, out IntPtr material);
- public int CreateAudioMaterial(out IntPtr material)
- {
- return ovrAudio_CreateAudioMaterial(context, out material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioMaterial(IntPtr material);
- public int DestroyAudioMaterial(IntPtr material)
- {
- return ovrAudio_DestroyAudioMaterial(material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value);
- public int AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value)
- {
- return ovrAudio_AudioMaterialSetFrequency(material, property, frequency, value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value);
- public int AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value)
- {
- return ovrAudio_AudioMaterialGetFrequency(material, property, frequency, out value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialReset(IntPtr material, MaterialProperty property);
- public int AudioMaterialReset(IntPtr material, MaterialProperty property)
- {
- return ovrAudio_AudioMaterialReset(material, property);
- }
- }
- /***********************************************************************************/
- // WWISE
- /***********************************************************************************/
- public class WwisePluginInterface : PropagationInterface
- {
- // The name used for the plugin DLL.
- public const string strOSPS = "OculusSpatializerWwise";
- /***********************************************************************************/
- // Context API: Required to create internal context if it does not exist yet
- IntPtr context_ = IntPtr.Zero;
- IntPtr context { get { if (context_ == IntPtr.Zero) { ovrAudio_GetPluginContext(out context_, ClientType.OVRA_CLIENT_TYPE_WWISE_UNKNOWN); } return context_; } }
- [DllImport(strOSPS)]
- public static extern int ovrAudio_GetPluginContext(out IntPtr context, uint clientType);
- /***********************************************************************************/
- // Settings API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationQuality(IntPtr context, float quality);
- public int SetPropagationQuality(float quality)
- {
- return ovrAudio_SetPropagationQuality(context, quality);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationThreadAffinity(IntPtr context, UInt64 cpuMask);
- public int SetPropagationThreadAffinity(UInt64 cpuMask)
- {
- return ovrAudio_SetPropagationThreadAffinity(context, cpuMask);
- }
- /***********************************************************************************/
- // Geometry API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioGeometry(IntPtr context, out IntPtr geometry);
- public int CreateAudioGeometry(out IntPtr geometry)
- {
- return ovrAudio_CreateAudioGeometry(context, out geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioGeometry(IntPtr geometry);
- public int DestroyAudioGeometry(IntPtr geometry)
- {
- return ovrAudio_DestroyAudioGeometry(geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, UIntPtr verticesBytesOffset, UIntPtr vertexCount, UIntPtr vertexStride, ovrAudioScalarType vertexType,
- int[] indices, UIntPtr indicesByteOffset, UIntPtr indexCount, ovrAudioScalarType indexType,
- MeshGroup[] groups, UIntPtr groupCount);
- public int AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, int vertexCount,
- int[] indices, int indexCount,
- MeshGroup[] groups, int groupCount)
- {
- return ovrAudio_AudioGeometryUploadMeshArrays(geometry,
- vertices, UIntPtr.Zero, (UIntPtr)vertexCount, UIntPtr.Zero, ovrAudioScalarType.Float32,
- indices, UIntPtr.Zero, (UIntPtr)indexCount, ovrAudioScalarType.UInt32,
- groups, (UIntPtr)groupCount);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4);
- public int AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4)
- {
- return ovrAudio_AudioGeometrySetTransform(geometry, matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4);
- public int AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4)
- {
- return ovrAudio_AudioGeometryGetTransform(geometry, out matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryReadMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryReadMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryReadMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFileObj(geometry, filePath);
- }
- /***********************************************************************************/
- // Material API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioMaterial(IntPtr context, out IntPtr material);
- public int CreateAudioMaterial(out IntPtr material)
- {
- return ovrAudio_CreateAudioMaterial(context, out material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioMaterial(IntPtr material);
- public int DestroyAudioMaterial(IntPtr material)
- {
- return ovrAudio_DestroyAudioMaterial(material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value);
- public int AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value)
- {
- return ovrAudio_AudioMaterialSetFrequency(material, property, frequency, value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value);
- public int AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value)
- {
- return ovrAudio_AudioMaterialGetFrequency(material, property, frequency, out value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialReset(IntPtr material, MaterialProperty property);
- public int AudioMaterialReset(IntPtr material, MaterialProperty property)
- {
- return ovrAudio_AudioMaterialReset(material, property);
- }
- }
- /***********************************************************************************/
- // FMOD
- /***********************************************************************************/
- public class FMODPluginInterface : PropagationInterface
- {
- // The name used for the plugin DLL.
- public const string strOSPS = "OculusSpatializerFMOD";
- /***********************************************************************************/
- // Context API: Required to create internal context if it does not exist yet
- IntPtr context_ = IntPtr.Zero;
- IntPtr context { get { if (context_ == IntPtr.Zero) { ovrAudio_GetPluginContext(out context_, ClientType.OVRA_CLIENT_TYPE_FMOD); } return context_; } }
- [DllImport(strOSPS)]
- public static extern int ovrAudio_GetPluginContext(out IntPtr context, uint clientType);
- /***********************************************************************************/
- // Settings API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationQuality(IntPtr context, float quality);
- public int SetPropagationQuality(float quality)
- {
- return ovrAudio_SetPropagationQuality(context, quality);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_SetPropagationThreadAffinity(IntPtr context, UInt64 cpuMask);
- public int SetPropagationThreadAffinity(UInt64 cpuMask)
- {
- return ovrAudio_SetPropagationThreadAffinity(context, cpuMask);
- }
- /***********************************************************************************/
- // Geometry API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioGeometry(IntPtr context, out IntPtr geometry);
- public int CreateAudioGeometry(out IntPtr geometry)
- {
- return ovrAudio_CreateAudioGeometry(context, out geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioGeometry(IntPtr geometry);
- public int DestroyAudioGeometry(IntPtr geometry)
- {
- return ovrAudio_DestroyAudioGeometry(geometry);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, UIntPtr verticesBytesOffset, UIntPtr vertexCount, UIntPtr vertexStride, ovrAudioScalarType vertexType,
- int[] indices, UIntPtr indicesByteOffset, UIntPtr indexCount, ovrAudioScalarType indexType,
- MeshGroup[] groups, UIntPtr groupCount);
- public int AudioGeometryUploadMeshArrays(IntPtr geometry,
- float[] vertices, int vertexCount,
- int[] indices, int indexCount,
- MeshGroup[] groups, int groupCount)
- {
- return ovrAudio_AudioGeometryUploadMeshArrays(geometry,
- vertices, UIntPtr.Zero, (UIntPtr)vertexCount, UIntPtr.Zero, ovrAudioScalarType.Float32,
- indices, UIntPtr.Zero, (UIntPtr)indexCount, ovrAudioScalarType.UInt32,
- groups, (UIntPtr)groupCount);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4);
- public int AudioGeometrySetTransform(IntPtr geometry, float[] matrix4x4)
- {
- return ovrAudio_AudioGeometrySetTransform(geometry, matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4);
- public int AudioGeometryGetTransform(IntPtr geometry, out float[] matrix4x4)
- {
- return ovrAudio_AudioGeometryGetTransform(geometry, out matrix4x4);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryReadMeshFile(IntPtr geometry, string filePath);
- public int AudioGeometryReadMeshFile(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryReadMeshFile(geometry, filePath);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath);
- public int AudioGeometryWriteMeshFileObj(IntPtr geometry, string filePath)
- {
- return ovrAudio_AudioGeometryWriteMeshFileObj(geometry, filePath);
- }
- /***********************************************************************************/
- // Material API
- [DllImport(strOSPS)]
- private static extern int ovrAudio_CreateAudioMaterial(IntPtr context, out IntPtr material);
- public int CreateAudioMaterial(out IntPtr material)
- {
- return ovrAudio_CreateAudioMaterial(context, out material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_DestroyAudioMaterial(IntPtr material);
- public int DestroyAudioMaterial(IntPtr material)
- {
- return ovrAudio_DestroyAudioMaterial(material);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value);
- public int AudioMaterialSetFrequency(IntPtr material, MaterialProperty property, float frequency, float value)
- {
- return ovrAudio_AudioMaterialSetFrequency(material, property, frequency, value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value);
- public int AudioMaterialGetFrequency(IntPtr material, MaterialProperty property, float frequency, out float value)
- {
- return ovrAudio_AudioMaterialGetFrequency(material, property, frequency, out value);
- }
- [DllImport(strOSPS)]
- private static extern int ovrAudio_AudioMaterialReset(IntPtr material, MaterialProperty property);
- public int AudioMaterialReset(IntPtr material, MaterialProperty property)
- {
- return ovrAudio_AudioMaterialReset(material, property);
- }
- }
- }
|