示例#1
0
        private void Initialize()
        {
            HaloSize      = 3;
            NearThreshold = 1589;
            FarThreshold  = 1903;

            objectFilter = ObjectFilter.CreateObjectFilterWithGPUSupport();

            // -- Initialize Relay commands --

            InitializeRelayCommands();

            // --
            // -- Create observables to activate / deactivate recording and to start and stop processing  --

            var observableIsRecording = ObservableEx.ObservableProperty(() => IsRecording);

            observableIsRecording
            .Throttle(TimeSpan.FromMilliseconds(150))
            .Subscribe(e =>
            {
                if (e)
                {
                    ActivateRecording();
                }
                else
                {
                    DeactivateRecording();
                }
            });

            var observableIsAvailable = Observable.FromEventPattern <bool>(KinectManager.Instance, "KinectAvailabilityChanged")
                                        .Select(e => e.EventArgs);

            StartProcessingSubscription = observableIsAvailable
                                          .CombineLatest(observableIsRunning, (available, running) => Tuple.Create(available, running))
                                          .Where(tuple => tuple.Item1 && tuple.Item2)
                                          .Subscribe(_ => StartProcessing());

            StopProcessingSubscription = observableIsAvailable
                                         .CombineLatest(observableIsRunning, (available, running) => Tuple.Create(available, running))
                                         .Where(tuple => !tuple.Item1 || !tuple.Item2)
                                         .Subscribe(_ => StopProcessing());

            InitializeReactiveCommands();
            InitializeReactiveProperties();

            // --

            fpsTimer = Stopwatch.StartNew();
            colorAndDepthFPSTimer = Stopwatch.StartNew();
        }