Kinect.VisualGestureManager.InitVisualGestures C# (CSharp) Method

InitVisualGestures() private method

private InitVisualGestures ( ) : bool
return bool
        private bool InitVisualGestures()
        {
            KinectManager kinectManager = KinectManager.Instance;
            KinectInterop.SensorData sensorData = kinectManager != null ? kinectManager.GetSensorData() : null;

            Kinect2Interface kinectInterface = sensorData.sensorInterface as Kinect2Interface;
            KinectSensor kinectSensor = kinectInterface != null ? kinectInterface.kinectSensor : null;

            if (kinectSensor == null)
                return false;

            if (gestureDatabase == string.Empty)
            {
                Debug.LogError("Please specify gesture database file!");
                return false;
            }

            // copy the gesture database file from Resources, if available
            if (!File.Exists(gestureDatabase))
            {
                TextAsset textRes = Resources.Load(gestureDatabase, typeof(TextAsset)) as TextAsset;

                if (textRes != null && textRes.bytes.Length != 0)
                {
                    File.WriteAllBytes(gestureDatabase, textRes.bytes);
                }
            }

            // create the vgb source
            vgbFrameSource = VisualGestureBuilderFrameSource.Create(kinectSensor, 0);

            // open the reader
            vgbFrameReader = vgbFrameSource != null ? vgbFrameSource.OpenReader() : null;
            if (vgbFrameReader != null)
            {
                vgbFrameReader.IsPaused = true;
            }

            using (VisualGestureBuilderDatabase database = VisualGestureBuilderDatabase.Create(gestureDatabase))
            {
                if (database == null)
                {
                    Debug.LogError("Gesture database not found: " + gestureDatabase);
                    return false;
                }

                // check if we need to load all gestures
                bool bAllGestures = (gestureNames.Count == 0);

                foreach (Gesture gesture in database.AvailableGestures)
                {
                    bool bAddGesture = bAllGestures || gestureNames.Contains(gesture.Name);

                    if (bAddGesture)
                    {
                        string sGestureName = gesture.Name;
                        vgbFrameSource.AddGesture(gesture);

                        if (!gestureNames.Contains(sGestureName))
                        {
                            gestureNames.Add(sGestureName);
                        }

                        if (!gestureData.ContainsKey(sGestureName))
                        {
                            VisualGestureData data = new VisualGestureData();
                            data.gestureName = sGestureName;
                            data.isDiscrete = (gesture.GestureType == GestureType.Discrete);
                            data.isContinuous = (gesture.GestureType == GestureType.Continuous);
                            data.timestamp = Time.realtimeSinceStartup;

                            gestureData.Add(sGestureName, data);
                        }
                    }
                }
            }

            return true;
        }