using System; using System.Runtime.InteropServices; using System.Runtime.Serialization; using UnityEngine; namespace GCSeries.zView { public partial class GView : MonoBehaviour { ////////////////////////////////////////////////////////////////// // Enumerations ////////////////////////////////////////////////////////////////// /// /// Defines the error codes returned by all native plugin zView /// API functions. /// public enum PluginError { Unknown = -1, /// /// No error occurred. /// Ok = 0, /// /// An error of an unspecified type occurred. /// Failed = 1, /// /// A zView API function that is not implemented was called. /// /// /// /// This may occur when running code written against a version of the zView /// API that is newer than the version of the zView runtime being used. /// NotImplemented = 2, /// /// A zView API function was called before the zView runtime has /// been initialized. /// NotInitialized = 3, /// /// A view API function was called with an invalid parameter value. /// InvalidParameter = 4, /// /// The zView runtime failed to allocate additional memory while /// performing some operation. /// OutOfMemory = 5, /// /// A view API function was called with a buffer that is too small. /// BufferTooSmall = 6, /// /// The zview runtime DLL could not be found. /// RuntimeNotFound = 7, /// /// A required symbol within the zView runtime DLL could not be /// found. /// SymbolNotFound = 8, /// /// A zView API function was called in a way that is not compatible /// with the version of the zView runtime being used. /// RuntimeIncompatible = 9, /// /// A zView API function was called in a way that is not allowed for /// the current or specified node type. /// InvalidNodeType = 10, /// /// A zView API function was called with an invalid context. /// InvalidContext = 11, /// /// A zView API function was called in a way that is not allowed /// while the associated zView context is in its current state. /// InvalidContextState = 12, /// /// A zView API function was called with an invalid mode spec /// handle. /// InvalidModeSpec = 13, /// /// A zView API function was called with an invalid mode handle. /// InvalidMode = 14, /// /// A zView API function was called with an invalid /// ZVModeAttributeKey enum value. /// InvalidModeAttributeKey = 15, /// /// An operation failed because an invalid connection specification /// was specified. /// InvalidConnectionSpec = 16, /// /// A zView API function was called with an invalid ZVConnection /// handle. /// InvalidConnection = 17, /// /// A zView API function was called in a way that is not allowed /// while the associated zView connection is in its current state. /// InvalidConnectionState = 18, /// /// A zView API function was called with an invalid setting key /// enum value. /// InvalidSettingKey = 19, /// /// A zView API function was called with an invalid Stream enum /// value. /// InvalidStream = 20, /// /// A zView API function was called with an invalid frame /// handle. /// InvalidFrame = 21, /// /// A zView API function was called with an invalid FrameDataKey /// enum value. /// InvalidFrameDataKey = 22, /// /// A zView API function was called in a way that is not allowed /// while the associated zView connection is in its current video recording /// state. /// InvalidVideoRecordingState = 23, /// /// An operation failed because the associated zView context has /// already been shut down. /// Shutdown = 24, /// /// A zView API function was called with a mode or mode spec /// handle representing a zView mode that is not supported. /// UnsupportedMode = 25, /// /// A zView API function was called in a way that requires a /// capability that is not supported. /// UnsupportedCapability = 26, /// /// An operation failed because a low-level network I/O error /// occurred. /// Network = 27, /// /// An operation failed because a zView communication protocol error /// occurred. /// Protocol = 28, /// /// A zView connection could not be established because a /// communication protocol version supported by all nodes does not exist. /// NoSupportedProtocolVersion = 29, } public enum PluginEvent { SendFrame = 20000, DestroyResources = 20001, } ////////////////////////////////////////////////////////////////// // Public API ////////////////////////////////////////////////////////////////// public static void IssuePluginEvent(PluginEvent pluginEvent) { //#if (UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1) // GL.IssuePluginEvent((int)pluginEvent); //#else // IntPtr renderEventFunc = zvuGetRenderEventFunc(); // if (renderEventFunc != IntPtr.Zero) // { // GL.IssuePluginEvent(renderEventFunc, (int)pluginEvent); // } //#endif } ////////////////////////////////////////////////////////////////// // Compound Types ////////////////////////////////////////////////////////////////// [StructLayout(LayoutKind.Sequential)] private struct ZVSupportedMode { public IntPtr mode; public ModeAvailability modeAvailability; } [StructLayout(LayoutKind.Explicit)] private struct ZSVector3 { [FieldOffset(0)] public float x; [FieldOffset(4)] public float y; [FieldOffset(8)] public float z; } [StructLayout(LayoutKind.Explicit)] private struct ZSMatrix4 { [FieldOffset(0)] public float m00; [FieldOffset(4)] public float m10; [FieldOffset(8)] public float m20; [FieldOffset(12)] public float m30; [FieldOffset(16)] public float m01; [FieldOffset(20)] public float m11; [FieldOffset(24)] public float m21; [FieldOffset(28)] public float m31; [FieldOffset(32)] public float m02; [FieldOffset(36)] public float m12; [FieldOffset(40)] public float m22; [FieldOffset(44)] public float m32; [FieldOffset(48)] public float m03; [FieldOffset(52)] public float m13; [FieldOffset(56)] public float m23; [FieldOffset(60)] public float m33; } ////////////////////////////////////////////////////////////////// // General API Imports ////////////////////////////////////////////////////////////////// [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern IntPtr zvuGetRenderEventFunc(); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern void zvuGetPluginVersion( out int major, out int minor, out int patch); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern void zvuSetCurrentFrameInfo( IntPtr frame, IntPtr texturePtr); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuInitialize( NodeType nodeType, out IntPtr context); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuShutDown( IntPtr context); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetRuntimeVersion( IntPtr context, out int major, out int minor, out int patch); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetErrorStringSize( PluginError error, out int size); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetErrorString( PluginError error, byte[] buffer, int bufferSize); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeType( IntPtr context, out NodeType type); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeIdSize( IntPtr context, out int size); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeId( IntPtr context, byte[] buffer, int bufferSize); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeNameSize( IntPtr context, out int size); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeName( IntPtr context, byte[] buffer, int bufferSize); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuSetNodeName( IntPtr context, byte[] name); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeStatusSize( IntPtr context, out int size); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNodeStatus( IntPtr context, byte[] buffer, int bufferSize); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuSetNodeStatus( IntPtr context, byte[] status); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNumSupportedModes( IntPtr context, out int numModes); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetSupportedMode( IntPtr context, int modeIndex, out ZVSupportedMode mode); // TODO: Double check this. [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuSetSupportedModes( IntPtr context, ZVSupportedMode[] modes, int numModes); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetNumSupportedCapabilities( IntPtr context, out int numCapabilities); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetSupportedCapability( IntPtr context, int capabilityIndex, out Capability capability); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuSetSupportedCapabilities( IntPtr context, Capability[] capabilities, int numCapabilities); ////////////////////////////////////////////////////////////////// // Mode API Imports ////////////////////////////////////////////////////////////////// [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuCreateModeSpec( IntPtr context, out IntPtr modeSpec); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuDestroyModeSpec( IntPtr modeSpec); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetModeSpecAttributeU32( IntPtr modeSpec, ModeAttributeKey key, out UInt32 value); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuSetModeSpecAttributeU32( IntPtr modeSpec, ModeAttributeKey key, UInt32 value); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetModeForSpec( IntPtr modeSpec, out IntPtr mode); [DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] private static extern PluginError zvuGetModeAttributeU32( IntPtr mode, ModeAttributeKey key, out UInt32 value); ////////////////////////////////////////////////////////////////// // Connection Management API Imports ////////////////////////////////////////////////////////////////// // TODO: Remove listeningSpec parameter //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuStartListeningForConnections( // IntPtr context, // byte[] listeningSpec); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuStopListeningForConnections( // IntPtr context); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuConnectToDefaultViewer( // IntPtr context, // IntPtr connectionUserData); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuCloseConnection( // IntPtr connection, // ConnectionCloseAction action, // ConnectionCloseReason reason, // byte[] reasonDetails); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuAcceptConnection( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuDestroyConnection( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuUpdateConnectionList( // IntPtr context); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetNumConnections( // IntPtr context, // out int numConnections); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnection( // IntPtr context, // int connectionIndex, // out IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuUpdateConnection( // IntPtr connection); //////////////////////////////////////////////////////////////////// //// Connection Property API Imports //////////////////////////////////////////////////////////////////// //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionState( // IntPtr connection, // out ConnectionState state); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionError( // IntPtr connection, // out PluginError error); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuWasConnectionLocallyInitiated( // IntPtr connection, // [param: MarshalAs(UnmanagedType.Bool), Out()] // out bool wasLocallyInitiated); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeIdSize( // IntPtr connection, // out int size); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeId( // IntPtr connection, // byte[] buffer, // int bufferSize); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeNameSize( // IntPtr connection, // out int size); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeName( // IntPtr connection, // byte[] buffer, // int bufferSize); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeStatusSize( // IntPtr connection, // out int size); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectedNodeStatus( // IntPtr connection, // byte[] buffer, // int bufferSize); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuDoesConnectionSupportCapability( // IntPtr connection, // Capability capability, // [param: MarshalAs(UnmanagedType.Bool), Out()] // out bool isSupported); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetNumConnectionSupportedModes( // IntPtr connection, // out int numSupportedModes); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionSupportedMode( // IntPtr connection, // int supportedModeIndex, // out ZVSupportedMode supportedMode); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionMode( // IntPtr connection, // out IntPtr mode); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetConnectionMode( // IntPtr connection, // IntPtr mode); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionUserData( // IntPtr connection, // out IntPtr userData); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetConnectionUserData( // IntPtr connection, // IntPtr userData); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionCloseAction( // IntPtr connection, // out ConnectionCloseAction action); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionCloseReason( // IntPtr connection, // out ConnectionCloseReason reason); //////////////////////////////////////////////////////////////////// //// Connection Phase Change API Imports //////////////////////////////////////////////////////////////////// //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetConnectionModeSetupPhase( // IntPtr connection, // out ModeSetupPhase phase, // [param: MarshalAs(UnmanagedType.Bool), Out()] // out bool isAwaitingCompletion); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuCompleteModeSetupPhase( // IntPtr connection, // ModeSetupPhase phase); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuPauseMode( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuResumeMode( // IntPtr connection); //////////////////////////////////////////////////////////////////// //// Connection Settings API Imports //////////////////////////////////////////////////////////////////// //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuBeginSettingsBatch( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuEndSettingsBatch( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingB( // IntPtr connection, // SettingKey key, // [param: MarshalAs(UnmanagedType.Bool), Out()] // out bool value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingI8( // IntPtr connection, // SettingKey key, // out sbyte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingI16( // IntPtr connection, // SettingKey key, // out Int16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingI32( // IntPtr connection, // SettingKey key, // out Int32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingI64( // IntPtr connection, // SettingKey key, // out Int64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingU8( // IntPtr connection, // SettingKey key, // out byte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingU16( // IntPtr connection, // SettingKey key, // out UInt16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingU32( // IntPtr connection, // SettingKey key, // out UInt32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingU64( // IntPtr connection, // SettingKey key, // out UInt64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingF32( // IntPtr connection, // SettingKey key, // out float value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingF64( // IntPtr connection, // SettingKey key, // out double value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingV3( // IntPtr connection, // SettingKey key, // out ZSVector3 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingM4( // IntPtr connection, // SettingKey key, // out ZSMatrix4 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingB( // IntPtr connection, // SettingKey key, // [param: MarshalAs(UnmanagedType.Bool)] // bool value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingI8( // IntPtr connection, // SettingKey key, // sbyte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingI16( // IntPtr connection, // SettingKey key, // Int16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingI32( // IntPtr connection, // SettingKey key, // Int32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingI64( // IntPtr connection, // SettingKey key, // Int64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingU8( // IntPtr connection, // SettingKey key, // byte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingU16( // IntPtr connection, // SettingKey key, // UInt16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingU32( // IntPtr connection, // SettingKey key, // UInt32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingU64( // IntPtr connection, // SettingKey key, // UInt64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingF32( // IntPtr connection, // SettingKey key, // float value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingF64( // IntPtr connection, // SettingKey key, // double value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingV3( // IntPtr connection, // SettingKey key, // [param: MarshalAs(UnmanagedType.LPStruct)] // ZSVector3 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetSettingM4( // IntPtr connection, // SettingKey key, // [param: MarshalAs(UnmanagedType.LPStruct)] // ZSMatrix4 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetSettingState( // IntPtr connection, // SettingKey key, // out SettingState state); //////////////////////////////////////////////////////////////////// //// Connection Frame Data API Imports //////////////////////////////////////////////////////////////////// //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuReceiveFrame( // IntPtr connection, // Stream stream, // out IntPtr frame); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuReleaseReceivedFrame( // IntPtr frame); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetNextFrameToSend( // IntPtr connection, // Stream stream, // out IntPtr frame); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSendFrame( // IntPtr frame); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataB( // IntPtr frame, // FrameDataKey key, // [param: MarshalAs(UnmanagedType.Bool), Out()] // out bool value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataI8( // IntPtr frame, // FrameDataKey key, // out sbyte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataI16( // IntPtr frame, // FrameDataKey key, // out Int16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataI32( // IntPtr frame, // FrameDataKey key, // out Int32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataI64( // IntPtr frame, // FrameDataKey key, // out Int64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataU8( // IntPtr frame, // FrameDataKey key, // out byte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataU16( // IntPtr frame, // FrameDataKey key, // out UInt16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataU32( // IntPtr frame, // FrameDataKey key, // out UInt32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataU64( // IntPtr frame, // FrameDataKey key, // out UInt64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataF32( // IntPtr frame, // FrameDataKey key, // out float value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataF64( // IntPtr frame, // FrameDataKey key, // out double value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataV3( // IntPtr frame, // FrameDataKey key, // out ZSVector3 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameDataM4( // IntPtr frame, // FrameDataKey key, // out ZSMatrix4 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataB( // IntPtr frame, // FrameDataKey key, // [param: MarshalAs(UnmanagedType.Bool)] // bool value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataI8( // IntPtr frame, // FrameDataKey key, // sbyte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataI16( // IntPtr frame, // FrameDataKey key, // Int16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataI32( // IntPtr frame, // FrameDataKey key, // Int32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataI64( // IntPtr frame, // FrameDataKey key, // Int64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataU8( // IntPtr frame, // FrameDataKey key, // byte value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataU16( // IntPtr frame, // FrameDataKey key, // UInt16 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataU32( // IntPtr frame, // FrameDataKey key, // UInt32 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataU64( // IntPtr frame, // FrameDataKey key, // UInt64 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataF32( // IntPtr frame, // FrameDataKey key, // float value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataF64( // IntPtr frame, // FrameDataKey key, // double value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataV3( // IntPtr frame, // FrameDataKey key, // [param: MarshalAs(UnmanagedType.LPStruct)] // ZSVector3 value); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSetFrameDataM4( // IntPtr frame, // FrameDataKey key, // [param: MarshalAs(UnmanagedType.LPStruct)] // ZSMatrix4 value); //// TODO: Experiment with marshaling the buffer. //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetFrameBuffer( // IntPtr frame, // FrameBufferKey key, // out IntPtr buffer); // ZVUInt8** //////////////////////////////////////////////////////////////////// //// Video Recording API Imports //////////////////////////////////////////////////////////////////// //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetVideoRecordingState( // IntPtr connection, // out VideoRecordingState state); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetVideoRecordingError( // IntPtr connection, // out PluginError error); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuClearVideoRecordingError( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuStartVideoRecording( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuFinishVideoRecording( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuPauseVideoRecording( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuResumeVideoRecording( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuSaveVideoRecording( // IntPtr connection, // byte[] fileName); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuDiscardVideoRecording( // IntPtr connection); //[DllImport("zViewUnity", CallingConvention = CallingConvention.StdCall)] //private static extern PluginError zvuGetVideoRecordingTime( // IntPtr connection, // out UInt64 timeInMilliseconds); ////////////////////////////////////////////////////////////////// // Private Helpers ////////////////////////////////////////////////////////////////// //private PluginException NewPluginException(PluginError error) //{ // switch (error) // { // case PluginError.Failed: // return new FailedException(); // case PluginError.NotImplemented: // return new NotImplementedException(); // case PluginError.NotInitialized: // return new NotInitializedException(); // case PluginError.InvalidParameter: // return new InvalidParameterException(); // case PluginError.OutOfMemory: // return new OutOfMemoryException(); // case PluginError.BufferTooSmall: // return new BufferTooSmallException(); // case PluginError.RuntimeNotFound: // return new RuntimeNotFoundException(); // case PluginError.SymbolNotFound: // return new SymbolNotFoundException(); // case PluginError.RuntimeIncompatible: // return new RuntimeIncompatibleException(); // case PluginError.InvalidNodeType: // return new InvalidNodeTypeException(); // case PluginError.InvalidContext: // return new InvalidContextException(); // case PluginError.InvalidContextState: // return new InvalidContextStateException(); // case PluginError.InvalidModeSpec: // return new InvalidModeSpecException(); // case PluginError.InvalidMode: // return new InvalidModeException(); // case PluginError.InvalidModeAttributeKey: // return new InvalidModeAttributeKeyException(); // case PluginError.InvalidConnectionSpec: // return new InvalidConnectionSpecException(); // case PluginError.InvalidConnection: // return new InvalidConnectionException(); // case PluginError.InvalidConnectionState: // return new InvalidConnectionStateException(); // case PluginError.InvalidSettingKey: // return new InvalidSettingKeyException(); // case PluginError.InvalidStream: // return new InvalidStreamException(); // case PluginError.InvalidFrame: // return new InvalidFrameException(); // case PluginError.InvalidFrameDataKey: // return new InvalidFrameDataKeyException(); // case PluginError.InvalidVideoRecordingState: // return new InvalidVideoRecordingStateException(); // case PluginError.Shutdown: // return new ShutdownException(); // case PluginError.UnsupportedMode: // return new UnsupportedModeException(); // case PluginError.UnsupportedCapability: // return new UnsupportedCapabilityException(); // case PluginError.Network: // return new NetworkException(); // case PluginError.Protocol: // return new ProtocolException(); // case PluginError.NoSupportedProtocolVersion: // return new NoSupportedProtocolVersionException(); // default: // return new PluginException(error); // } //} } /* [Serializable] public class PluginException : Exception { public ZView.PluginError PluginError { get; private set; } public PluginException(ZView.PluginError pluginError) : base() { this.PluginError = pluginError; } public PluginException(ZView.PluginError pluginError, string message) : base(message) { this.PluginError = pluginError; } protected PluginException(ZView.PluginError pluginError, SerializationInfo info, StreamingContext context) : base(info, context) { this.PluginError = pluginError; } } [Serializable] public class FailedException : PluginException { public FailedException() : base(ZView.PluginError.Failed) { } public FailedException(string message) : base(ZView.PluginError.Failed, message) { } protected FailedException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.Failed, info, context) { } } [Serializable] public class NotImplementedException : PluginException { public NotImplementedException() : base(ZView.PluginError.NotImplemented) { } public NotImplementedException(string message) : base(ZView.PluginError.NotImplemented, message) { } protected NotImplementedException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.NotImplemented, info, context) { } } [Serializable] public class NotInitializedException : PluginException { public NotInitializedException() : base(ZView.PluginError.NotInitialized) { } public NotInitializedException(string message) : base(ZView.PluginError.NotInitialized, message) { } protected NotInitializedException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.NotInitialized, info, context) { } } [Serializable] public class InvalidParameterException : PluginException { public InvalidParameterException() : base(ZView.PluginError.InvalidParameter) { } public InvalidParameterException(string message) : base(ZView.PluginError.InvalidParameter, message) { } protected InvalidParameterException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidParameter, info, context) { } } [Serializable] public class OutOfMemoryException : PluginException { public OutOfMemoryException() : base(ZView.PluginError.OutOfMemory) { } public OutOfMemoryException(string message) : base(ZView.PluginError.OutOfMemory, message) { } protected OutOfMemoryException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.OutOfMemory, info, context) { } } [Serializable] public class BufferTooSmallException : PluginException { public BufferTooSmallException() : base(ZView.PluginError.BufferTooSmall) { } public BufferTooSmallException(string message) : base(ZView.PluginError.BufferTooSmall, message) { } protected BufferTooSmallException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.BufferTooSmall, info, context) { } } [Serializable] public class RuntimeNotFoundException : PluginException { public RuntimeNotFoundException() : base(ZView.PluginError.RuntimeNotFound) { } public RuntimeNotFoundException(string message) : base(ZView.PluginError.RuntimeNotFound, message) { } protected RuntimeNotFoundException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.RuntimeNotFound, info, context) { } } [Serializable] public class SymbolNotFoundException : PluginException { public SymbolNotFoundException() : base(ZView.PluginError.SymbolNotFound) { } public SymbolNotFoundException(string message) : base(ZView.PluginError.SymbolNotFound, message) { } protected SymbolNotFoundException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.SymbolNotFound, info, context) { } } [Serializable] public class RuntimeIncompatibleException : PluginException { public RuntimeIncompatibleException() : base(ZView.PluginError.RuntimeIncompatible) { } public RuntimeIncompatibleException(string message) : base(ZView.PluginError.RuntimeIncompatible, message) { } protected RuntimeIncompatibleException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.RuntimeIncompatible, info, context) { } } [Serializable] public class InvalidNodeTypeException : PluginException { public InvalidNodeTypeException() : base(ZView.PluginError.InvalidNodeType) { } public InvalidNodeTypeException(string message) : base(ZView.PluginError.InvalidNodeType, message) { } protected InvalidNodeTypeException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidNodeType, info, context) { } } [Serializable] public class InvalidContextException : PluginException { public InvalidContextException() : base(ZView.PluginError.InvalidContext) { } public InvalidContextException(string message) : base(ZView.PluginError.InvalidContext, message) { } protected InvalidContextException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidContext, info, context) { } } [Serializable] public class InvalidContextStateException : PluginException { public InvalidContextStateException() : base(ZView.PluginError.InvalidContextState) { } public InvalidContextStateException(string message) : base(ZView.PluginError.InvalidContextState, message) { } protected InvalidContextStateException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidContextState, info, context) { } } [Serializable] public class InvalidModeSpecException : PluginException { public InvalidModeSpecException() : base(ZView.PluginError.InvalidModeSpec) { } public InvalidModeSpecException(string message) : base(ZView.PluginError.InvalidModeSpec, message) { } protected InvalidModeSpecException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidModeSpec, info, context) { } } [Serializable] public class InvalidModeException : PluginException { public InvalidModeException() : base(ZView.PluginError.InvalidMode) { } public InvalidModeException(string message) : base(ZView.PluginError.InvalidMode, message) { } protected InvalidModeException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidMode, info, context) { } } [Serializable] public class InvalidModeAttributeKeyException : PluginException { public InvalidModeAttributeKeyException() : base(ZView.PluginError.InvalidModeAttributeKey) { } public InvalidModeAttributeKeyException(string message) : base(ZView.PluginError.InvalidModeAttributeKey, message) { } protected InvalidModeAttributeKeyException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidModeAttributeKey, info, context) { } } [Serializable] public class InvalidConnectionSpecException : PluginException { public InvalidConnectionSpecException() : base(ZView.PluginError.InvalidConnectionSpec) { } public InvalidConnectionSpecException(string message) : base(ZView.PluginError.InvalidConnectionSpec, message) { } protected InvalidConnectionSpecException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidConnectionSpec, info, context) { } } [Serializable] public class InvalidConnectionException : PluginException { public InvalidConnectionException() : base(ZView.PluginError.InvalidConnection) { } public InvalidConnectionException(string message) : base(ZView.PluginError.InvalidConnection, message) { } protected InvalidConnectionException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidConnection, info, context) { } } [Serializable] public class InvalidConnectionStateException : PluginException { public InvalidConnectionStateException() : base(ZView.PluginError.InvalidConnectionState) { } public InvalidConnectionStateException(string message) : base(ZView.PluginError.InvalidConnectionState, message) { } protected InvalidConnectionStateException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidConnectionState, info, context) { } } [Serializable] public class InvalidSettingKeyException : PluginException { public InvalidSettingKeyException() : base(ZView.PluginError.InvalidSettingKey) { } public InvalidSettingKeyException(string message) : base(ZView.PluginError.InvalidSettingKey, message) { } protected InvalidSettingKeyException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidSettingKey, info, context) { } } [Serializable] public class InvalidStreamException : PluginException { public InvalidStreamException() : base(ZView.PluginError.InvalidStream) { } public InvalidStreamException(string message) : base(ZView.PluginError.InvalidStream, message) { } protected InvalidStreamException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidStream, info, context) { } } [Serializable] public class InvalidFrameException : PluginException { public InvalidFrameException() : base(ZView.PluginError.InvalidFrame) { } public InvalidFrameException(string message) : base(ZView.PluginError.InvalidFrame, message) { } protected InvalidFrameException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidFrame, info, context) { } } [Serializable] public class InvalidFrameDataKeyException : PluginException { public InvalidFrameDataKeyException() : base(ZView.PluginError.InvalidFrameDataKey) { } public InvalidFrameDataKeyException(string message) : base(ZView.PluginError.InvalidFrameDataKey, message) { } protected InvalidFrameDataKeyException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidFrameDataKey, info, context) { } } [Serializable] public class InvalidVideoRecordingStateException : PluginException { public InvalidVideoRecordingStateException() : base(ZView.PluginError.InvalidVideoRecordingState) { } public InvalidVideoRecordingStateException(string message) : base(ZView.PluginError.InvalidVideoRecordingState, message) { } protected InvalidVideoRecordingStateException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.InvalidVideoRecordingState, info, context) { } } [Serializable] public class ShutdownException : PluginException { public ShutdownException() : base(ZView.PluginError.Shutdown) { } public ShutdownException(string message) : base(ZView.PluginError.Shutdown, message) { } protected ShutdownException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.Shutdown, info, context) { } } [Serializable] public class UnsupportedModeException : PluginException { public UnsupportedModeException() : base(ZView.PluginError.UnsupportedMode) { } public UnsupportedModeException(string message) : base(ZView.PluginError.UnsupportedMode, message) { } protected UnsupportedModeException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.UnsupportedMode, info, context) { } } [Serializable] public class UnsupportedCapabilityException : PluginException { public UnsupportedCapabilityException() : base(ZView.PluginError.UnsupportedCapability) { } public UnsupportedCapabilityException(string message) : base(ZView.PluginError.UnsupportedCapability, message) { } protected UnsupportedCapabilityException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.UnsupportedCapability, info, context) { } } [Serializable] public class NetworkException : PluginException { public NetworkException() : base(ZView.PluginError.Network) { } public NetworkException(string message) : base(ZView.PluginError.Network, message) { } protected NetworkException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.Network, info, context) { } } [Serializable] public class ProtocolException : PluginException { public ProtocolException() : base(ZView.PluginError.Protocol) { } public ProtocolException(string message) : base(ZView.PluginError.Protocol, message) { } protected ProtocolException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.Protocol, info, context) { } } [Serializable] public class NoSupportedProtocolVersionException : PluginException { public NoSupportedProtocolVersionException() : base(ZView.PluginError.NoSupportedProtocolVersion) { } public NoSupportedProtocolVersionException(string message) : base(ZView.PluginError.NoSupportedProtocolVersion, message) { } protected NoSupportedProtocolVersionException(SerializationInfo info, StreamingContext context) : base(ZView.PluginError.NoSupportedProtocolVersion, info, context) { } } */ }