Aetheria/Assets/Allegorithmic/Plugins/Substance.Platform/NativeFunctions.cs
Reinier Vens f643f6cc8a New Inventory System + Overhaul
Removed universal GameContext references
Refactored GameContext: It's now only responsible for item management. As such it's now called ItemManager
GlobalData is gone, relevant settings are distributed amongst specialized settings classes
Entities are no longer database entries, references to them are now direct - Zone is reponsible for storing them in ZonePacks
Controller subtypes are now generic classes, class argument is task type
Inventory is now a 2D grid instead of a list
Entity temperature is now a 2D grid instead of a number
Item sizes are now arbitrary shapes instead of a number
Hardpoints are now arbitrary shapes instead
Equipped items have their own temperatures
Map view now displays sunlight colors
Integrated Allegorithmic Substance Plugin
Imported Djinni ship and assigned Substance materials
Removed Node Editor framework (might come back later but needs work to integrate with behavior system)
2020-12-10 23:20:38 +00:00

1159 lines
No EOL
45 KiB
C#

#if (!UNITY_EDITOR && UNITY_ANDROID)
#define IMPORT_STATIC
#elif (!UNITY_EDITOR && UNITY_IOS)
#define IMPORT_STATIC
#else
#define IMPORT_DYNAMIC // Make this an "#else" so that, by default, the corresponding script code (below) is enabled!
#endif
using System;
using UnityEngine;
using System.Runtime.InteropServices;
using System.IO;
using System.Reflection;
using System.Collections.Generic;
namespace Substance.Platform
{
public class NativeFunctions
{
// ToDo: move "build target" function out of here, they have nothing to do with "native functions".
public enum BuildTarget
{
Default = 0, // or: Editor
StandAlone,
IOS,
Android
}
public static BuildTarget GetBuildTarget()
{
// Use Unity's environment variables:
BuildTarget buildTarget = BuildTarget.Default;
#if (UNITY_STANDALONE)
buildTarget = BuildTarget.StandAlone;
#elif (UNITY_IOS)
buildTarget = BuildTarget.IOS;
#elif (UNITY_ANDROID)
buildTarget = BuildTarget.Android;
#endif
return buildTarget;
}
public static string GetBuildTargetString()
{
// Use Unity's environment variables:
string buildTarget = "UNKNOWN";
#if (UNITY_STANDALONE)
buildTarget = "StandAlone";
#elif (UNITY_IOS)
buildTarget = "IOS";
#elif (UNITY_ANDROID)
buildTarget = "Android";
#endif
return buildTarget;
}
public static bool IsMobile()
{
bool bMobile = false;
#if (UNITY_IOS || UNITY_ANDROID)
bMobile = true;
#endif
return bMobile;
}
public static TextureFormat GetMobileTextureFormat()
{
TextureFormat format = TextureFormat.RGBA32;
#if (UNITY_IOS)
format = TextureFormat.PVRTC_RGBA4;
#elif (UNITY_ANDROID)
format = TextureFormat.ETC2_RGBA8;
#else
Debug.LogError("The current build target is NOT for a modbile platform!");
#endif
return format;
}
#if DEBUG
public static void ShowBuildTargetEnvironment() // dev/debug tool
{
#if (UNITY_EDITOR)
Debug.Log("UNITY_EDITOR");
#endif
#if (UNITY_EDITOR_WIN)
Debug.Log("UNITY_EDITOR_WIN");
#endif
#if (UNITY_EDITOR_OSX)
Debug.Log("UNITY_EDITOR_OSX");
#endif
#if (UNITY_STANDALONE_OSX)
Debug.Log("UNITY_STANDALONE_OSX");
#endif
#if (UNITY_STANDALONE_WIN)
Debug.Log("UNITY_STANDALONE_WIN");
#endif
#if (UNITY_STANDALONE_LINUX)
Debug.Log("UNITY_STANDALONE_LINUX");
#endif
#if (UNITY_STANDALONE)
Debug.Log("UNITY_STANDALONE");
#endif
#if (UNITY_IOS)
Debug.Log("UNITY_IOS");
#endif
#if (UNITY_IPHONE)
Debug.Log("UNITY_IPHONE");
#endif
#if (ENABLE_MONO)
Debug.Log("ENABLE_MONO");
#endif
#if (UNITY_ANDROID)
Debug.Log("UNITY_ANDROID");
#endif
#if (ENABLE_IL2CPP)
Debug.Log("ENABLE_IL2CPP");
#endif
}
#endif // DEBUG
// ========================================================================================
// STATIC IMPORT UTILITIES:
// Define DllImport's attribute value here:
#if (UNITY_IOS)
public const string attributeValue = "__Internal";
#elif (UNITY_ANDROID)
public const string attributeValue = "Substance.Engine.Mobile";
#else
public const string attributeValue = "UnknownAttributeValue";
#endif
// ======================================================================
// DYNAMIC IMPORT UTILITIES:
#if IMPORT_DYNAMIC
internal class DLLHelpers
{
[DllImport("kernel32.dll", EntryPoint = "LoadLibrary", SetLastError = true, CharSet = CharSet.Unicode)]
protected static extern IntPtr LoadLibrary(string filename);
[DllImport("kernel32.dll", EntryPoint = "GetProcAddress", SetLastError = true)]
protected static extern IntPtr GetProcAddress(IntPtr hModule, string procname);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool FreeLibrary(IntPtr hModule);
[DllImport("libdl")]
protected static extern IntPtr dlopen(string filename, int flags);
[DllImport("libdl")]
protected static extern IntPtr dlsym(IntPtr handle, string symbol);
[DllImport("libdl")]
protected static extern IntPtr dlerror();
[DllImport("libdl")]
protected static extern int dlclose(IntPtr handle);
internal static IntPtr DllHandle = IntPtr.Zero;
private static object[] mParams = new object[0];
internal static object[] GetParams(int size)
{
Array.Resize<object>(ref mParams, size);
return mParams;
}
internal static void LoadDLL(string dataPath)
{
//load external library
if (DllHandle == IntPtr.Zero)
{
string LibDestination = "";
if (IsWindows())
{
LibDestination = Path.Combine(dataPath, "Plugins/Substance.Engine.dll");
DllHandle = LoadLibrary(LibDestination);
if (DllHandle == IntPtr.Zero)
{
// Unity added the subfolder 'x86_64' in Unity2019.3.9f1 & later versions...
LibDestination = Path.Combine(dataPath, "Plugins/x86_64/Substance.Engine.dll");
DllHandle = LoadLibrary(LibDestination);
}
}
else if (IsMac())
{
LibDestination = Path.Combine(dataPath, "Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine");
DllHandle = dlopen(LibDestination, 3);
}
else if (IsLinux())
{
LibDestination = Path.Combine(dataPath, "Plugins/libSubstance.Engine.so");
DllHandle = dlopen(LibDestination, 3);
}
if (DllHandle == IntPtr.Zero)
{
Debug.LogError("Substance engine failed to load.");
}
}
}
internal static void UnloadDLL()
{
if (DllHandle != IntPtr.Zero)
{
if (IsWindows())
{
FreeLibrary(DllHandle);
}
else if (IsMac() || IsLinux())
{
dlclose(DllHandle);
}
DllHandle = IntPtr.Zero;
}
}
internal static Delegate GetFunction(string funcname, Type t)
{
IntPtr ptr = IntPtr.Zero;
if (DllHandle == IntPtr.Zero)
return null;
if (IsWindows())
{
ptr = GetProcAddress(DllHandle, funcname);
}
else if (IsMac() || IsLinux())
{
ptr = dlsym(DllHandle, funcname);
}
if (ptr == IntPtr.Zero)
{
return null;
}
return Marshal.GetDelegateForFunctionPointer(ptr, t);
}
private static bool IsWindows()
{
return (Application.platform == RuntimePlatform.WindowsEditor
|| Application.platform == RuntimePlatform.WindowsPlayer);
}
private static bool IsMac()
{
return (Application.platform == RuntimePlatform.OSXEditor
|| Application.platform == RuntimePlatform.OSXPlayer);
}
private static bool IsLinux()
{
return (Application.platform == RuntimePlatform.LinuxEditor
|| Application.platform == RuntimePlatform.LinuxPlayer);
}
}
#endif // IMPORT_DYNAMIC
// ======================================================================
#if IMPORT_DYNAMIC
public delegate IntPtr cppHelloDelegate();
public static IntPtr cppHello()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppHelloDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppHelloDelegate)) as cppHelloDelegate;
return (IntPtr)function.Invoke();
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppHello();
#endif
#if IMPORT_DYNAMIC
public delegate void cppInitSubstanceDelegate(string applicationDataPath, int pTextureClampExposant);
public static void cppInitSubstance(string applicationDataPath, int pTextureClampExposant)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
DLLHelpers.LoadDLL(applicationDataPath);
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppInitSubstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppInitSubstanceDelegate)) as cppInitSubstanceDelegate;
function.Invoke(applicationDataPath, pTextureClampExposant);
}
#else
[DllImport(attributeValue)]
public static extern void cppInitSubstance(string applicationDataPath, int pTextureClampExposant);
#endif
#if IMPORT_DYNAMIC
public delegate void cppSetCallbacksDelegate(IntPtr log, IntPtr texture, IntPtr numerical, IntPtr graphInitialized);
public static void cppSetCallbacks(IntPtr log, IntPtr texture, IntPtr numerical, IntPtr graphInitialized)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppSetCallbacksDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetCallbacksDelegate)) as cppSetCallbacksDelegate;
function.Invoke(log, texture, numerical, graphInitialized);
}
#else
[DllImport(attributeValue)]
public static extern void cppSetCallbacks(IntPtr log, IntPtr texture, IntPtr numerical, IntPtr graphInitialized);
#endif
#if IMPORT_DYNAMIC // not used!
public delegate bool cppIsValidGraphHandleDelegate(IntPtr pGraphHandle);
public static bool cppIsValidGraphHandle(IntPtr pGraphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return false;
cppIsValidGraphHandleDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppIsValidGraphHandleDelegate)) as cppIsValidGraphHandleDelegate;
return function.Invoke(pGraphHandle);
}
#else
[DllImport(attributeValue)]
public static extern bool cppIsValidGraphHandle(IntPtr pGraphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate void cppApplyPresetDelegate(IntPtr graphHandle, string presetStr);
public static void cppApplyPreset(IntPtr graphHandle, string presetStr)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppApplyPresetDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppApplyPresetDelegate)) as cppApplyPresetDelegate;
function.Invoke(graphHandle, presetStr);
}
#else
[DllImport(attributeValue)]
public static extern void cppApplyPreset(IntPtr graphHandle, string presetStr);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetPresetDelegate(IntPtr graphHandle);
public static IntPtr cppGetPreset(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetPresetDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetPresetDelegate)) as cppGetPresetDelegate;
return (IntPtr)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetPreset(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppListAssetsDelegate();
public static IntPtr cppListAssets()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppListAssetsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppListAssetsDelegate)) as cppListAssetsDelegate;
return (IntPtr)function.Invoke();
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppListAssets();
#endif
#if IMPORT_DYNAMIC
public delegate int cppGetNumOutputsDelegate(IntPtr graphHandle);
public static int cppGetNumOutputs(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppGetNumOutputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetNumOutputsDelegate)) as cppGetNumOutputsDelegate;
return (int)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern int cppGetNumOutputs(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetColorSpaceListDelegate(IntPtr graphHandle, int numOutputs);
public static IntPtr cppGetColorSpaceList(IntPtr graphHandle, int numOutputs)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetColorSpaceListDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetColorSpaceListDelegate)) as cppGetColorSpaceListDelegate;
return (IntPtr)function.Invoke(graphHandle, numOutputs);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetColorSpaceList(IntPtr graphHandle, int numOutputs);
#endif
#if IMPORT_DYNAMIC
public delegate void cppFreeMemoryDelegate(IntPtr pointer);
public static void cppFreeMemory(IntPtr pointer)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppFreeMemoryDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppFreeMemoryDelegate)) as cppFreeMemoryDelegate;
function.Invoke(pointer);
}
#else
[DllImport(attributeValue)]
public static extern void cppFreeMemory(IntPtr pointer);
#endif
#if IMPORT_DYNAMIC
public delegate void cppSetCreateSubstanceGraphCallbackEditorPtrDelegate(IntPtr fp);
public static void cppSetCreateSubstanceGraphCallbackEditorPtr(IntPtr fp)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppSetCreateSubstanceGraphCallbackEditorPtrDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetCreateSubstanceGraphCallbackEditorPtrDelegate)) as cppSetCreateSubstanceGraphCallbackEditorPtrDelegate;
function.Invoke(fp);
}
#else
[DllImport(attributeValue)]
public static extern void cppSetCreateSubstanceGraphCallbackEditorPtr(IntPtr fp);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetMInputsDelegate(IntPtr graphHandle, int pNumInputs);
public static IntPtr cppGetMInputs(IntPtr graphHandle, int pNumInputs)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetMInputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetMInputsDelegate)) as cppGetMInputsDelegate;
return (IntPtr)function.Invoke(graphHandle, pNumInputs);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetMInputs(IntPtr graphHandle, int pNumInputs);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetOutputsDescDelegate(IntPtr graphHandle, ref int pNumOutputs);
public static IntPtr cppGetOutputsDesc(IntPtr graphHandle, ref int pNumOutputs)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetOutputsDescDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOutputsDescDelegate)) as cppGetOutputsDescDelegate;
return (IntPtr)function.Invoke(graphHandle, ref pNumOutputs);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetOutputsDesc(IntPtr graphHandle, ref int pNumOutputs);
#endif
#if IMPORT_DYNAMIC
public delegate int cppShutdownSubstanceDelegate();
public static int cppShutdownSubstance()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppShutdownSubstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppShutdownSubstanceDelegate)) as cppShutdownSubstanceDelegate;
int result = (int)function.Invoke();
DLLHelpers.UnloadDLL();
return result;
}
#else
[DllImport(attributeValue)]
public static extern int cppShutdownSubstance();
#endif
#if IMPORT_DYNAMIC
public delegate int cppRemoveAssetDelegate(string pAssetPath);
public static int cppRemoveAsset(string pAssetPath)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppRemoveAssetDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppRemoveAssetDelegate)) as cppRemoveAssetDelegate;
return (int)function.Invoke(pAssetPath);
}
#else
[DllImport(attributeValue)]
public static extern int cppRemoveAsset(string pAssetPath);
#endif
#if IMPORT_DYNAMIC
public delegate int cppMoveAssetDelegate(string pFromAssetPath, string pToAssetPath);
public static int cppMoveAsset(string pFromAssetPath, string pToAssetPath)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppMoveAssetDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppMoveAssetDelegate)) as cppMoveAssetDelegate;
return (int)function.Invoke(pFromAssetPath, pToAssetPath);
}
#else
[DllImport(attributeValue)]
public static extern int cppMoveAsset(string pFromAssetPath, string pToAssetPath);
#endif
#if IMPORT_DYNAMIC
public delegate int cppLoadSubstanceDelegate(string pAssetPath, IntPtr array, Int32 size,
IntPtr assetCtx, IntPtr substanceObject,
UInt32[] graphIndices, string[] graphPrototypeNames, string[] graphLabels,
int[] graphFormats, int[] normalFormats, UInt32 numGraphIndices,
int rawOverride, int pPipeline);
public static int cppLoadSubstance(string pAssetPath, IntPtr array, Int32 size, IntPtr assetCtx, IntPtr substanceObject,
UInt32[] graphIndices, string[] graphPrototypeNames, string[] graphLabels,
int[] graphFormats, int[] normalFormats, UInt32 numGraphIndices,
int rawOverride, int pPipeline)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppLoadSubstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppLoadSubstanceDelegate)) as cppLoadSubstanceDelegate;
return (int)function.Invoke(pAssetPath, array, size, assetCtx, substanceObject,
graphIndices, graphPrototypeNames, graphLabels,
graphFormats, normalFormats, numGraphIndices,
rawOverride, pPipeline);
}
#else
[DllImport(attributeValue)]
public static extern int cppLoadSubstance(string pAssetPath, IntPtr array, Int32 size, IntPtr assetCtx,
IntPtr substanceObject, UInt32[] graphIndices, string[] graphPrototypeNames, string[] graphLabels,
int[] graphFormats, int[] normalFormats, UInt32 numGraphIndices, int rawOverride, int pPipeline);
#endif
#if IMPORT_DYNAMIC
public delegate void cppQueueSubstanceDelegate(IntPtr graphHandle);
public static void cppQueueSubstance(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppQueueSubstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppQueueSubstanceDelegate)) as cppQueueSubstanceDelegate;
function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern void cppQueueSubstance(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate uint cppRenderSubstancesDelegate(bool bAsync, IntPtr preComputeCallback);
public static uint cppRenderSubstances(bool bAsync, IntPtr preComputeCallback)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppRenderSubstancesDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppRenderSubstancesDelegate)) as cppRenderSubstancesDelegate;
return (uint)function.Invoke(bAsync, preComputeCallback);
}
#else
[DllImport(attributeValue)]
public static extern uint cppRenderSubstances(bool bAsync, IntPtr preComputeCallback);
#endif
#if IMPORT_DYNAMIC
public delegate bool cppIsRendererBusyDelegate(uint runid);
public static bool cppIsRendererBusy(uint runid)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return false;
cppIsRendererBusyDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppIsRendererBusyDelegate)) as cppIsRendererBusyDelegate;
return (bool)function.Invoke(runid);
}
#else
[DllImport(attributeValue)]
public static extern bool cppIsRendererBusy(uint runid);
#endif
#if IMPORT_DYNAMIC
public delegate void cppSetDirtyOutputsDelegate(IntPtr graphHandle);
public static void cppSetDirtyOutputs(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppSetDirtyOutputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetDirtyOutputsDelegate)) as cppSetDirtyOutputsDelegate;
function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern void cppSetDirtyOutputs(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate int cppGetNumInputsDelegate(IntPtr graphHandle);
public static int cppGetNumInputs(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppGetNumInputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetNumInputsDelegate)) as cppGetNumInputsDelegate;
return (int)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern int cppGetNumInputs(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetInput_IntsDelegate(IntPtr graphHandle, string pFieldName, int pNumInputs);
public static IntPtr cppGetInput_Ints(IntPtr graphHandle, string pFieldName, int pNumInputs)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetInput_IntsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetInput_IntsDelegate)) as cppGetInput_IntsDelegate;
return (IntPtr)function.Invoke(graphHandle, pFieldName, pNumInputs);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetInput_Ints(IntPtr graphHandle, string pFieldName, int pNumInputs);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetMComboBoxItemsDelegate(IntPtr graphHandle, string pIdentifier, out int pNumValues);
public static IntPtr cppGetMComboBoxItems(IntPtr graphHandle, string pIdentifier, out int pNumValues)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
{
pNumValues = 0;
return IntPtr.Zero;
}
cppGetMComboBoxItemsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetMComboBoxItemsDelegate)) as cppGetMComboBoxItemsDelegate;
return (IntPtr)function.Invoke(graphHandle, pIdentifier, out pNumValues);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetMComboBoxItems(IntPtr graphHandle, string pIdentifier, out int pNumValues);
#endif
#if IMPORT_DYNAMIC
public delegate void cppGetInput_FloatDelegate(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues);
public static void cppGetInput_Float(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppGetInput_FloatDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetInput_FloatDelegate)) as cppGetInput_FloatDelegate;
function.Invoke(graphHandle, pInputName, values, numValues);
}
#else
[DllImport(attributeValue)]
public static extern void cppGetInput_Float(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues);
#endif
#if IMPORT_DYNAMIC
public delegate int cppSetInput_FloatDelegate(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues);
public static int cppSetInput_Float(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return -2;
cppSetInput_FloatDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetInput_FloatDelegate)) as cppSetInput_FloatDelegate;
return (int)function.Invoke(graphHandle, pInputName, values, numValues);
}
#else
[DllImport(attributeValue)]
public static extern int cppSetInput_Float(IntPtr graphHandle, string pInputName, float[] values, UInt32 numValues);
#endif
#if IMPORT_DYNAMIC
public delegate void cppGetInput_IntDelegate(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues);
public static void cppGetInput_Int(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppGetInput_IntDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetInput_IntDelegate)) as cppGetInput_IntDelegate;
function.Invoke(graphHandle, pInputName, values, numValues);
}
#else
[DllImport(attributeValue)]
public static extern void cppGetInput_Int(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues);
#endif
#if IMPORT_DYNAMIC
public delegate void cppSetInput_IntDelegate(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues);
public static void cppSetInput_Int(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppSetInput_IntDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetInput_IntDelegate)) as cppSetInput_IntDelegate;
function.Invoke(graphHandle, pInputName, values, numValues);
}
#else
[DllImport(attributeValue)]
public static extern void cppSetInput_Int(IntPtr graphHandle, string pInputName, int[] values, UInt32 numValues);
#endif
#if IMPORT_DYNAMIC
public delegate int cppSetInput_StringDelegate(IntPtr graphHandle, string pInputName, string value);
public static int cppSetInput_String(IntPtr graphHandle, string pInputName, string value)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return -2;
cppSetInput_StringDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetInput_StringDelegate)) as cppSetInput_StringDelegate;
return (int)function.Invoke(graphHandle, pInputName, value);
}
#else
[DllImport(attributeValue)]
public static extern int cppSetInput_String(IntPtr graphHandle, string pInputName, string value);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetInput_StringDelegate(IntPtr graphHandle, string pInputName);
public static IntPtr cppGetInput_String(IntPtr graphHandle, string pInputName)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetInput_StringDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetInput_StringDelegate)) as cppGetInput_StringDelegate;
return (IntPtr)function.Invoke(graphHandle, pInputName);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetInput_String(IntPtr graphHandle, string pInputName);
#endif
#if IMPORT_DYNAMIC
public delegate int cppSetInput_TextureDelegate(IntPtr graphHandle, string pInputName, int format, int mipCount, int width, int height, IntPtr pixels);
public static int cppSetInput_Texture(IntPtr graphHandle, string pInputName, int format, int mipCount, int width, int height, IntPtr pixels)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return -2;
cppSetInput_TextureDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppSetInput_TextureDelegate)) as cppSetInput_TextureDelegate;
return (int)function.Invoke(graphHandle, pInputName, format, mipCount, width, height, pixels);
}
#else
[DllImport(attributeValue)]
public static extern int cppSetInput_Texture(IntPtr graphHandle, string pInputName, int format, int mipCount, int width, int height, IntPtr pixels);
#endif
#if IMPORT_DYNAMIC
public delegate int cppProcessQueuedOutputsDelegate();
public static int cppProcessQueuedOutputs()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppProcessQueuedOutputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppProcessQueuedOutputsDelegate)) as cppProcessQueuedOutputsDelegate;
return (int)function.Invoke();
}
#else
[DllImport(attributeValue)]
public static extern int cppProcessQueuedOutputs();
#endif
#if IMPORT_DYNAMIC // not used anymore
public delegate IntPtr cppGetOutputLabelFromHashDelegate(string pAssetPath, UInt32 outputHash);
public static IntPtr cppGetOutputLabelFromHash(string pAssetPath, UInt32 outputHash)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetOutputLabelFromHashDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOutputLabelFromHashDelegate)) as cppGetOutputLabelFromHashDelegate;
return (IntPtr)function.Invoke(pAssetPath, outputHash);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetOutputLabelFromHash(string pAssetPath, UInt32 outputHash);
#endif
#if IMPORT_DYNAMIC // not used anymore
public delegate IntPtr cppGetOutputIdentifierFromHashDelegate(string pAssetPath, UInt32 outputHash);
public static IntPtr cppGetOutputIdentifierFromHash(string pAssetPath, UInt32 outputHash)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetOutputIdentifierFromHashDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOutputIdentifierFromHashDelegate)) as cppGetOutputIdentifierFromHashDelegate;
return (IntPtr)function.Invoke(pAssetPath, outputHash);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetOutputIdentifierFromHash(string pAssetPath, UInt32 outputHash);
#endif
#if IMPORT_DYNAMIC // not used anymore
public delegate bool cppIsImageOutputFromHashDelegate(string pAssetPath, UInt32 outputHash);
public static bool cppIsImageOutputFromHash(string pAssetPath, UInt32 outputHash)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return false;
cppIsImageOutputFromHashDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppIsImageOutputFromHashDelegate)) as cppIsImageOutputFromHashDelegate;
return (bool)function.Invoke(pAssetPath, outputHash);
}
#else
[DllImport(attributeValue)]
public static extern bool cppIsImageOutputFromHash(string pAssetPath, UInt32 outputHash);
#endif
#if IMPORT_DYNAMIC // not used anymore
public delegate IntPtr cppGetOutputChannelStrFromHashDelegate(string pAssetPath, UInt32 outputHash);
public static IntPtr cppGetOutputChannelStrFromHash(string pAssetPath, UInt32 outputHash)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetOutputChannelStrFromHashDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOutputChannelStrFromHashDelegate)) as cppGetOutputChannelStrFromHashDelegate;
return (IntPtr)function.Invoke(pAssetPath, outputHash);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetOutputChannelStrFromHash(string pAssetPath, UInt32 outputHash);
#endif
#if IMPORT_DYNAMIC
public delegate void cppOnGenerateMipMapsChangedDelegate(IntPtr graphHandle, bool bGenerateMipMaps);
public static void cppOnGenerateMipMapsChanged(IntPtr graphHandle, bool bGenerateMipMaps)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppOnGenerateMipMapsChangedDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppOnGenerateMipMapsChangedDelegate)) as cppOnGenerateMipMapsChangedDelegate;
function.Invoke(graphHandle, bGenerateMipMaps);
}
#else
[DllImport(attributeValue)]
public static extern void cppOnGenerateMipMapsChanged(IntPtr graphHandle, bool bGenerateMipMaps);
#endif
#if IMPORT_DYNAMIC
public delegate void cppModifyTexturePackingDelegate(IntPtr graphHandle,
string pSourceNames, int[] pSourceComponents,
string pTargetName, int[] pTargetComponents,
int pNumComponents);
public static void cppModifyTexturePacking(IntPtr graphHandle,
string pSourceNames, int[] pSourceComponents,
string pTargetName, int[] pTargetComponents,
int pNumComponents)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppModifyTexturePackingDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppModifyTexturePackingDelegate)) as cppModifyTexturePackingDelegate;
function.Invoke(graphHandle,
pSourceNames, pSourceComponents,
pTargetName, pTargetComponents,
pNumComponents);
}
#else
[DllImport(attributeValue)]
public static extern void cppModifyTexturePacking(IntPtr graphHandle,
string pSourceNames, int[] pSourceComponents,
string pTargetName, int[] pTargetComponents,
int pNumComponents);
#endif
#if IMPORT_DYNAMIC
public delegate void cppGetTextureDimensionsDelegate(IntPtr graphHandle, out int pWidth, out int pHeight);
public static void cppGetTextureDimensions(IntPtr graphHandle, out int pWidth, out int pHeight)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
{
pWidth = 256;
pHeight = 256;
return;
}
cppGetTextureDimensionsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetTextureDimensionsDelegate)) as cppGetTextureDimensionsDelegate;
function.Invoke(graphHandle, out pWidth, out pHeight);
}
#else
[DllImport(attributeValue)]
public static extern void cppGetTextureDimensions(IntPtr graphHandle, out int pWidth, out int pHeight);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppDuplicateGraphInstanceDelegate(IntPtr graphHandle);
public static IntPtr cppDuplicateGraphInstance(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppDuplicateGraphInstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppDuplicateGraphInstanceDelegate)) as cppDuplicateGraphInstanceDelegate;
return (IntPtr)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppDuplicateGraphInstance(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate void cppRemoveGraphInstanceDelegate(IntPtr graphHandle);
public static void cppRemoveGraphInstance(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return;
cppRemoveGraphInstanceDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppRemoveGraphInstanceDelegate)) as cppRemoveGraphInstanceDelegate;
function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern void cppRemoveGraphInstance(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate int cppListInputsDelegate(IntPtr graphHandle);
public static int cppListInputs(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return -2;
cppListInputsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppListInputsDelegate)) as cppListInputsDelegate;
return (int)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern int cppListInputs(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetChannelNamesDelegate();
public static IntPtr cppGetChannelNames()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetChannelNamesDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetChannelNamesDelegate)) as cppGetChannelNamesDelegate;
return (IntPtr)function.Invoke();
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetChannelNames();
#endif
#if IMPORT_DYNAMIC
public delegate uint cppGetOutputHashDelegate(IntPtr graphHandle, int pOutputIndex);
public static uint cppGetOutputHash(IntPtr graphHandle, int pOutputIndex)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppGetOutputHashDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOutputHashDelegate)) as cppGetOutputHashDelegate;
return (uint)function.Invoke(graphHandle, pOutputIndex);
}
#else
[DllImport(attributeValue)]
public static extern uint cppGetOutputHash(IntPtr graphHandle, int outputIndex);
#endif
#if IMPORT_DYNAMIC
public delegate IntPtr cppGetEngineVersionDelegate();
public static IntPtr cppGetEngineVersion()
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return IntPtr.Zero;
cppGetEngineVersionDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetEngineVersionDelegate)) as cppGetEngineVersionDelegate;
return (IntPtr)function.Invoke();
}
#else
[DllImport(attributeValue)]
public static extern IntPtr cppGetEngineVersion();
#endif
#if IMPORT_DYNAMIC
public delegate int cppGetNumberOfDuplicatedGraphsDelegate(IntPtr graphHandle);
public static int cppGetNumberOfDuplicatedGraphs(IntPtr graphHandle)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppGetNumberOfDuplicatedGraphsDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetNumberOfDuplicatedGraphsDelegate)) as cppGetNumberOfDuplicatedGraphsDelegate;
return (int)function.Invoke(graphHandle);
}
#else
[DllImport(attributeValue)]
public static extern int cppGetNumberOfDuplicatedGraphs(IntPtr graphHandle);
#endif
#if IMPORT_DYNAMIC
public delegate int cppGetOldFileIdDelegate(string pCharArray, int pTypeConstant);
public static int cppComputeOldFileID(string pCharArray, int pTypeConstant)
{
string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
if (DLLHelpers.DllHandle == IntPtr.Zero)
return 0;
cppGetOldFileIdDelegate function = DLLHelpers.GetFunction(
myName, typeof(cppGetOldFileIdDelegate)) as cppGetOldFileIdDelegate;
return (int)function.Invoke(pCharArray, pTypeConstant);
}
#else
[DllImport(attributeValue)]
public static extern int cppComputeOldFileID(string pCharArray, int pTypeConstant);
#endif
}
}