StationObscurum/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs

1035 lines
42 KiB
C#

//! @file nativemethods.cs
//! @brief Interface to the sbsario dynamic library for working with Substance
//! @author Galen Helfter - Adobe
//! @date 20210608
//! @copyright Adobe. All rights reserved.
//Do not dynamically load on Android.
#if (!UNITY_EDITOR && UNITY_ANDROID)
#define ALG_SBSARIO_STATIC_LOAD
//Do not dynamically load on IOS.
#elif (!UNITY_EDITOR && UNITY_IOS)
#define ALG_SBSARIO_STATIC_LOAD
#else
//Dynamically load on Mac and Linux and Windows.
#define ALG_SBSARIO_DYNAMIC_LOAD
#endif
using System;
using System.Runtime.InteropServices;
using UnityEngine;
namespace Adobe.Substance
{
internal static class NativeMethods
{
#if (UNITY_IOS && !UNITY_EDITOR)
public const string NativeAssembly = "__Internal";
public const CharSet NativeCharSet = CharSet.Ansi;
public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
#elif(UNITY_EDITOR_LINUX)
public const string NativeAssembly = "sbsario";
public const CharSet NativeCharSet = CharSet.Ansi;
public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
#else
public const string NativeAssembly = "sbsario";
public const CharSet NativeCharSet = CharSet.Ansi;
public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
#endif
public static string substancePath = null;
private static object _locker = new object();
internal static IntPtr sbsario_get_version()
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_get_version();
}
}
//! @brief Acquire the git hash of the sbsario library
//! @note This may be called without initializing the library
//! @return Constant string containing the sbsario git hash
internal static IntPtr sbsario_get_hash()
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_get_hash();
}
}
//! @brief Initialize the sbsario library
//! @param engine_path File path to the Substance engine on disk, as a null-terminated
//! UTF-8 C string
//! @return Error type enum representic success or an error
internal static uint sbsario_initialize(string pluginPath, string engine_path, IntPtr memoryBudget)
{
lock (_locker)
{
try
{
#if ALG_SBSARIO_DYNAMIC_LOAD
return NativeMethodsImpl.sbsario_initialize(engine_path, pluginPath, memoryBudget);
#else
return NativeMethodsImpl.sbsario_initialize(engine_path, memoryBudget);
#endif
}
catch (DllNotFoundException e)
{
UnityEngine.Debug.Log($"{e.Message}");
throw e;
}
}
}
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
internal static uint sbsario_shutdown()
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_shutdown();
}
}
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
public static IntPtr sbsario_sbsar_open(string sbsar_path)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_open(sbsar_path);
}
}
public static IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_load_from_memory(data, size);
}
}
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
internal static uint sbsario_sbsar_close(IntPtr sbsar_handle)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_close(sbsar_handle);
}
}
internal static IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_graph_count(sbsar_handle);
}
}
internal static IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_output_count(sbsar_handle, graph);
}
}
internal static uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_output_desc(sbsar_handle, graph, output, out desc);
}
}
internal static IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_input_count(sbsar_handle, graph);
}
}
internal static uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_input_desc(sbsar_handle, graph, output, out desc);
}
}
internal static uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr inputIndex, out NativeNumericInputDesc desc)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_numeric_input_desc(sbsar_handle, graph, inputIndex, out desc);
}
}
internal static uint sbsario_sbsar_get_enum_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr inputIndex, IntPtr valuesArray, IntPtr size)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_enum_input_values(sbsar_handle, graph, inputIndex, valuesArray, size);
}
}
internal static uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_set_input(sbsar_handle, graph, ref data);
}
}
internal static uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_input(sbsar_handle, graph, input, out data);
}
}
internal static uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_input_visibility(sbsar_handle, graph, input, out visibilityInfo);
}
}
internal static uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_render(sbsar_handle, graph, out result);
}
}
internal static uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_clear_results(sbsar_handle, graph);
}
}
internal static uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_utils_copy_texture(ref src, ref dst, flags);
}
}
internal static uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_make_preset_from_current_state(sbsar_handle, graph, ref preset);
}
}
internal static uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_apply_preset(sbsar_handle, graph, ref preset);
}
}
internal static uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_assign_as_alpha_channel(sbsar_handle, graph, targetOutput, alphaOutput, minValue, maxValue);
}
}
internal static uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_create_virtual_output(sbsar_handle, graph, ref desc, ref format);
}
}
internal static uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_output_uid(sbsar_handle, graph, targetOutput, out uid);
}
}
internal static uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_create_output_copy(sbsar_handle, graph, targetOutput, out desc);
}
}
internal static uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_set_output_format_override(sbsar_handle, graph, targetOutput, ref format);
}
}
internal static uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_output_format_override(sbsar_handle, graph, targetOutput, out isFormatOverridden, out format);
}
}
internal static uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_graph_thumbnail(sbsar_handle, graph, out thumbnail);
}
}
internal static uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize)
{
lock (_locker)
{
return NativeMethodsImpl.sbsario_sbsar_get_physical_size(sbsar_handle, graph, out physicaSize);
}
}
#region Impl
//! @brief Native interface to the sbsario library, for communicating between the
//! unmanaged code and the managed code
private static class NativeMethodsImpl
{
#if ALG_SBSARIO_DYNAMIC_LOAD
public static void LoadSBSARIO()
{
}
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_get_version_delegate();
public static IntPtr sbsario_get_version()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_get_version_delegate)) as sbsario_get_version_delegate;
return function.Invoke();
}
#else
//! @brief Acquire the version of the sbsario library
//! @note This may be called without initializing the library
//! @return Constant string containing the sbsario semantic version
[DllImport(NativeAssembly)]
internal static extern IntPtr sbsario_get_version();
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_get_hash_delegate();
public static IntPtr sbsario_get_hash()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_get_hash_delegate)) as sbsario_get_hash_delegate;
return function.Invoke();
}
#else
//! @brief Acquire the git hash of the sbsario library
//! @note This may be called without initializing the library
//! @return Constant string containing the sbsario git hash
[DllImport(NativeAssembly)]
internal static extern IntPtr sbsario_get_hash();
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
private delegate uint sbsario_initialize_delegate(IntPtr engine_path, IntPtr memoryBudget);
public static uint sbsario_initialize(string engine_path, string pluginPath, IntPtr memoryBudget)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
DLLHelpers.LoadDLL(pluginPath);
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_initialize_delegate)) as sbsario_initialize_delegate;
var globalStr = Marshal.StringToHGlobalAnsi(engine_path);
return function.Invoke(globalStr, memoryBudget);
}
#else
//! @brief Initialize the sbsario library
//! @param engine_path File path to the Substance engine on disk, as a null-terminated
//! UTF-8 C string
//! @return Error type enum representic success or an error
[DllImport(NativeAssembly)]
internal static extern uint sbsario_initialize([MarshalAs(UnmanagedType.LPStr)] string engine_path, IntPtr memoryBudget);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_shutdown_delegate();
public static uint sbsario_shutdown()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_shutdown_delegate)) as sbsario_shutdown_delegate;
var result = function.Invoke();
DLLHelpers.UnloadDLL();
return result;
}
#else
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
[DllImport(NativeAssembly)]
internal static extern uint sbsario_shutdown();
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_sbsar_open_delegate([MarshalAs(UnmanagedType.LPStr)] string sbsar_path);
public static IntPtr sbsario_sbsar_open(string sbsar_handle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_open_delegate)) as sbsario_sbsar_open_delegate;
return function.Invoke(sbsar_handle);
}
#else
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
[DllImport(NativeAssembly)]
public static extern IntPtr sbsario_sbsar_open([MarshalAs(UnmanagedType.LPStr)] string sbsar_path);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_sbsar_load_from_memory_delegate(IntPtr data, IntPtr size);
public static IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_load_from_memory_delegate)) as sbsario_sbsar_load_from_memory_delegate;
return function.Invoke(data, size);
}
#else
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
[DllImport(NativeAssembly)]
public static extern IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_close_delegate(IntPtr sbsar_handle);
public static uint sbsario_sbsar_close(IntPtr sbsar_handle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_close_delegate)) as sbsario_sbsar_close_delegate;
return function.Invoke(sbsar_handle);
}
#else
//! @brief Shut down the sbsario library
//! @return Error type enum representing success or error
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_close(IntPtr sbsar_handle);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_sbsar_get_graph_count_delegate(IntPtr sbsar_handle);
public static IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_graph_count_delegate)) as sbsario_sbsar_get_graph_count_delegate;
return function.Invoke(sbsar_handle);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_sbsar_get_output_count_delegate(IntPtr sbsar_handle, IntPtr graph);
public static IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_count_delegate)) as sbsario_sbsar_get_output_count_delegate;
return function.Invoke(sbsar_handle, graph);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_output_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc);
public static uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_desc_delegate)) as sbsario_sbsar_get_output_desc_delegate;
return function.Invoke(sbsar_handle, graph, output, out desc);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate IntPtr sbsario_sbsar_get_input_count_delegate(IntPtr sbsar_handle, IntPtr graph);
public static IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_count_delegate)) as sbsario_sbsar_get_input_count_delegate;
return function.Invoke(sbsar_handle, graph);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_input_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc);
public static uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_desc_delegate)) as sbsario_sbsar_get_input_desc_delegate;
return function.Invoke(sbsar_handle, graph, output, out desc);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_numeric_input_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc);
public static uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_numeric_input_desc_delegate)) as sbsario_sbsar_get_numeric_input_desc_delegate;
return function.Invoke(sbsar_handle, graph, input, out desc);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_enum_input_values_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize);
public static uint sbsario_sbsar_get_enum_input_values(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_enum_input_values_delegate)) as sbsario_sbsar_get_enum_input_values_delegate;
return function.Invoke(sbsar_handle, graph, input, valuesArray, arraySize);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_enum_input_values(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_set_input_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativeData data);
public static uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_set_input_delegate)) as sbsario_sbsar_set_input_delegate;
return function.Invoke(sbsar_handle, graph, ref data);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_input_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data);
public static uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_delegate)) as sbsario_sbsar_get_input_delegate;
return function.Invoke(sbsar_handle, graph, input, out data);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_render_delegate(IntPtr sbsar_handle, IntPtr graph, out IntPtr result);
public static uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_render_delegate)) as sbsario_sbsar_render_delegate;
return function.Invoke(sbsar_handle, graph, out result);
}
#else
//! @brief
//! @return
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_clear_results_delegate(IntPtr sbsar_handle, IntPtr graph);
public static uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_clear_results_delegate)) as sbsario_sbsar_clear_results_delegate;
return function.Invoke(sbsar_handle, graph);
}
#else
/** @brief Implementation to lear any stored memory for renders with the graph
@param sbsar_object Pointer to a valid sbsar object to clear results on
@param graph Index of the graph to clear the results of
@return sbsario_error_t enum representing success or the error **/
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_utils_copy_texture_delegate(ref NativeDataImage src, ref NativeDataImage dst, uint flags);
public static uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_utils_copy_texture_delegate)) as sbsario_sbsar_utils_copy_texture_delegate;
return function.Invoke(ref src, ref dst, flags);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_make_preset_from_current_state_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
public static uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_make_preset_from_current_state_delegate)) as sbsario_sbsar_make_preset_from_current_state_delegate;
return function.Invoke(sbsar_handle, graph, ref preset);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint ssbsario_sbsar_apply_preset_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
public static uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(ssbsario_sbsar_apply_preset_delegate)) as ssbsario_sbsar_apply_preset_delegate;
return function.Invoke(sbsar_handle, graph, ref preset);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_input_visibility_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo);
public static uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_visibility_delegate)) as sbsario_sbsar_get_input_visibility_delegate;
return function.Invoke(sbsar_handle, graph, input, out visibilityInfo);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_assign_as_alpha_channel_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue);
public static uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_assign_as_alpha_channel_delegate)) as sbsario_sbsar_assign_as_alpha_channel_delegate;
return function.Invoke(sbsar_handle, graph, targetOutput, alphaOutput, minValue, maxValue);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_create_virtual_output_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format);
public static uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_create_virtual_output_delegate)) as sbsario_sbsar_create_virtual_output_delegate;
return function.Invoke(sbsar_handle, graph, ref desc, ref format);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_output_uid_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid);
public static uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_uid_delegate)) as sbsario_sbsar_get_output_uid_delegate;
return function.Invoke(sbsar_handle, graph, targetOutput, out uid);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_create_output_copy_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc);
public static uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_create_output_copy_delegate)) as sbsario_sbsar_create_output_copy_delegate;
return function.Invoke(sbsar_handle, graph, targetOutput, out desc);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_set_output_format_override_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format);
public static uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_set_output_format_override_delegate)) as sbsario_sbsar_set_output_format_override_delegate;
return function.Invoke(sbsar_handle, graph, targetOutput, ref format);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_output_format_override_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format);
public static uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_format_override_delegate)) as sbsario_sbsar_get_output_format_override_delegate;
return function.Invoke(sbsar_handle, graph, targetOutput, out isFormatOverridden, out format);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_graph_thumbnail_delegate(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail);
public static uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_graph_thumbnail_delegate)) as sbsario_sbsar_get_graph_thumbnail_delegate;
return function.Invoke(sbsar_handle, graph, out thumbnail);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail);
#endif
#if ALG_SBSARIO_DYNAMIC_LOAD
private delegate uint sbsario_sbsar_get_physical_size_delegate(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize);
public static uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
throw new SubstanceEngineNotFoundException(substancePath);
var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_physical_size_delegate)) as sbsario_sbsar_get_physical_size_delegate;
return function.Invoke(sbsar_handle, graph, out physicaSize);
}
#else
[DllImport(NativeAssembly)]
internal static extern uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize);
#endif
#endregion Impl
}
}
}