프로젝트

일반

사용자정보

통계
| 개정판:

t1 / TFDContents / Assets / Standard Assets / Windows / Kinect / AudioBeam.cs @ 9

이력 | 보기 | 이력해설 | 다운로드 (11.2 KB)

1
#if !(UNITY_WSA_10_0 && NETFX_CORE)
2
using RootSystem = System;
3
using System.Linq;
4
using System.Collections.Generic;
5
namespace Windows.Kinect
6
{
7
    //
8
    // Windows.Kinect.AudioBeam
9
    //
10
    public sealed partial class AudioBeam : Helper.INativeWrapper
11

    
12
    {
13
        internal RootSystem.IntPtr _pNative;
14
        RootSystem.IntPtr Helper.INativeWrapper.nativePtr { get { return _pNative; } }
15

    
16
        // Constructors and Finalizers
17
        internal AudioBeam(RootSystem.IntPtr pNative)
18
        {
19
            _pNative = pNative;
20
            Windows_Kinect_AudioBeam_AddRefObject(ref _pNative);
21
        }
22

    
23
        ~AudioBeam()
24
        {
25
            Dispose(false);
26
        }
27

    
28
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
29
        private static extern void Windows_Kinect_AudioBeam_ReleaseObject(ref RootSystem.IntPtr pNative);
30
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
31
        private static extern void Windows_Kinect_AudioBeam_AddRefObject(ref RootSystem.IntPtr pNative);
32
        private void Dispose(bool disposing)
33
        {
34
            if (_pNative == RootSystem.IntPtr.Zero)
35
            {
36
                return;
37
            }
38

    
39
            __EventCleanup();
40

    
41
            Helper.NativeObjectCache.RemoveObject<AudioBeam>(_pNative);
42
                Windows_Kinect_AudioBeam_ReleaseObject(ref _pNative);
43

    
44
            _pNative = RootSystem.IntPtr.Zero;
45
        }
46

    
47

    
48
        // Public Properties
49
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
50
        private static extern Windows.Kinect.AudioBeamMode Windows_Kinect_AudioBeam_get_AudioBeamMode(RootSystem.IntPtr pNative);
51
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
52
        private static extern void Windows_Kinect_AudioBeam_put_AudioBeamMode(RootSystem.IntPtr pNative, Windows.Kinect.AudioBeamMode audioBeamMode);
53
        public  Windows.Kinect.AudioBeamMode AudioBeamMode
54
        {
55
            get
56
            {
57
                if (_pNative == RootSystem.IntPtr.Zero)
58
                {
59
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
60
                }
61

    
62
                return Windows_Kinect_AudioBeam_get_AudioBeamMode(_pNative);
63
            }
64
            set
65
            {
66
                if (_pNative == RootSystem.IntPtr.Zero)
67
                {
68
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
69
                }
70

    
71
                Windows_Kinect_AudioBeam_put_AudioBeamMode(_pNative, value);
72
                Helper.ExceptionHelper.CheckLastError();
73
            }
74
        }
75

    
76
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
77
        private static extern RootSystem.IntPtr Windows_Kinect_AudioBeam_get_AudioSource(RootSystem.IntPtr pNative);
78
        public  Windows.Kinect.AudioSource AudioSource
79
        {
80
            get
81
            {
82
                if (_pNative == RootSystem.IntPtr.Zero)
83
                {
84
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
85
                }
86

    
87
                RootSystem.IntPtr objectPointer = Windows_Kinect_AudioBeam_get_AudioSource(_pNative);
88
                Helper.ExceptionHelper.CheckLastError();
89
                if (objectPointer == RootSystem.IntPtr.Zero)
90
                {
91
                    return null;
92
                }
93

    
94
                return Helper.NativeObjectCache.CreateOrGetObject<Windows.Kinect.AudioSource>(objectPointer, n => new Windows.Kinect.AudioSource(n));
95
            }
96
        }
97

    
98
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
99
        private static extern float Windows_Kinect_AudioBeam_get_BeamAngle(RootSystem.IntPtr pNative);
100
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
101
        private static extern void Windows_Kinect_AudioBeam_put_BeamAngle(RootSystem.IntPtr pNative, float beamAngle);
102
        public  float BeamAngle
103
        {
104
            get
105
            {
106
                if (_pNative == RootSystem.IntPtr.Zero)
107
                {
108
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
109
                }
110

    
111
                return Windows_Kinect_AudioBeam_get_BeamAngle(_pNative);
112
            }
113
            set
114
            {
115
                if (_pNative == RootSystem.IntPtr.Zero)
116
                {
117
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
118
                }
119

    
120
                Windows_Kinect_AudioBeam_put_BeamAngle(_pNative, value);
121
                Helper.ExceptionHelper.CheckLastError();
122
            }
123
        }
124

    
125
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
126
        private static extern float Windows_Kinect_AudioBeam_get_BeamAngleConfidence(RootSystem.IntPtr pNative);
127
        public  float BeamAngleConfidence
128
        {
129
            get
130
            {
131
                if (_pNative == RootSystem.IntPtr.Zero)
132
                {
133
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
134
                }
135

    
136
                return Windows_Kinect_AudioBeam_get_BeamAngleConfidence(_pNative);
137
            }
138
        }
139

    
140
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
141
        private static extern long Windows_Kinect_AudioBeam_get_RelativeTime(RootSystem.IntPtr pNative);
142
        public  RootSystem.TimeSpan RelativeTime
143
        {
144
            get
145
            {
146
                if (_pNative == RootSystem.IntPtr.Zero)
147
                {
148
                    throw new RootSystem.ObjectDisposedException("AudioBeam");
149
                }
150

    
151
                return RootSystem.TimeSpan.FromMilliseconds(Windows_Kinect_AudioBeam_get_RelativeTime(_pNative));
152
            }
153
        }
154

    
155

    
156
        // Events
157
        private static RootSystem.Runtime.InteropServices.GCHandle _Windows_Data_PropertyChangedEventArgs_Delegate_Handle;
158
        [RootSystem.Runtime.InteropServices.UnmanagedFunctionPointer(RootSystem.Runtime.InteropServices.CallingConvention.Cdecl)]
159
        private delegate void _Windows_Data_PropertyChangedEventArgs_Delegate(RootSystem.IntPtr args, RootSystem.IntPtr pNative);
160
        private static Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>> Windows_Data_PropertyChangedEventArgs_Delegate_callbacks = new Helper.CollectionMap<RootSystem.IntPtr, List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>>>();
161
        [AOT.MonoPInvokeCallbackAttribute(typeof(_Windows_Data_PropertyChangedEventArgs_Delegate))]
162
        private static void Windows_Data_PropertyChangedEventArgs_Delegate_Handler(RootSystem.IntPtr result, RootSystem.IntPtr pNative)
163
        {
164
            List<RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs>> callbackList = null;
165
            Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryGetValue(pNative, out callbackList);
166
            lock(callbackList)
167
            {
168
                var objThis = Helper.NativeObjectCache.GetObject<AudioBeam>(pNative);
169
                var args = new Windows.Data.PropertyChangedEventArgs(result);
170
                foreach(var func in callbackList)
171
                {
172
                    Helper.EventPump.Instance.Enqueue(() => { try { func(objThis, args); } catch { } });
173
                }
174
            }
175
        }
176
        [RootSystem.Runtime.InteropServices.DllImport("KinectUnityAddin", CallingConvention=RootSystem.Runtime.InteropServices.CallingConvention.Cdecl, SetLastError=true)]
177
        private static extern void Windows_Kinect_AudioBeam_add_PropertyChanged(RootSystem.IntPtr pNative, _Windows_Data_PropertyChangedEventArgs_Delegate eventCallback, bool unsubscribe);
178
        public  event RootSystem.EventHandler<Windows.Data.PropertyChangedEventArgs> PropertyChanged
179
        {
180
            add
181
            {
182
                Helper.EventPump.EnsureInitialized();
183

    
184
                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
185
                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
186
                lock (callbackList)
187
                {
188
                    callbackList.Add(value);
189
                    if(callbackList.Count == 1)
190
                    {
191
                        var del = new _Windows_Data_PropertyChangedEventArgs_Delegate(Windows_Data_PropertyChangedEventArgs_Delegate_Handler);
192
                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle = RootSystem.Runtime.InteropServices.GCHandle.Alloc(del);
193
                        Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, del, false);
194
                    }
195
                }
196
            }
197
            remove
198
            {
199
                if (_pNative == RootSystem.IntPtr.Zero)
200
                {
201
                    return;
202
                }
203

    
204
                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
205
                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
206
                lock (callbackList)
207
                {
208
                    callbackList.Remove(value);
209
                    if(callbackList.Count == 0)
210
                    {
211
                        Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
212
                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
213
                    }
214
                }
215
            }
216
        }
217

    
218

    
219
        // Public Methods
220
        private void __EventCleanup()
221
        {
222
            {
223
                Windows_Data_PropertyChangedEventArgs_Delegate_callbacks.TryAddDefault(_pNative);
224
                var callbackList = Windows_Data_PropertyChangedEventArgs_Delegate_callbacks[_pNative];
225
                lock (callbackList)
226
                {
227
                    if (callbackList.Count > 0)
228
                    {
229
                        callbackList.Clear();
230
                        if (_pNative != RootSystem.IntPtr.Zero)
231
                        {
232
                            Windows_Kinect_AudioBeam_add_PropertyChanged(_pNative, Windows_Data_PropertyChangedEventArgs_Delegate_Handler, true);
233
                        }
234
                        _Windows_Data_PropertyChangedEventArgs_Delegate_Handle.Free();
235
                    }
236
                }
237
            }
238
        }
239
    }
240

    
241
}
242
#endif