Example #1
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="jointsOption">Joint 単位の設定</param>
        public OriginPositionAutoSetter(JointsOption jointsOption)
        {
            _jointsOption = jointsOption;

            _addedEventListener = false;
            _timer = null;

            _remainingTime = 0;
            _alreadySet    = false;

            _status = OriginPositionAutoSetterStatus.NOT_STARTING;
        }
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="jointsOption">Joint 単位の設定</param>
        public OriginPositionAutoSetter(JointsOption jointsOption)
        {
            _jointsOption = jointsOption;

            _addedEventListener = false;
            _timer = null;

            _remainingTime = 0;
            _alreadySet = false;

            _status = OriginPositionAutoSetterStatus.NOT_STARTING;
        }
Example #3
0
        /// <summary>
        /// 自動設定開始
        /// </summary>
        public void StartAutoSetting()
        {
            if (!_addedEventListener)
            {
                throw new InvalidOperationException("イベントリスナーが登録されていません。");
            }
            _timer         = new Timer(_TimerCallback, null, 1000, 1000);
            _remainingTime = _WAITING_TIME;
            _status        = OriginPositionAutoSetterStatus.STARTING;

            EventHandler <EventArgs> eventHandler = Update;

            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }
Example #4
0
        /// <summary>
        /// タイマーコールバック関数
        /// </summary>
        /// <param name="state">ステータス</param>
        private void _TimerCallback(object state)
        {
            _remainingTime--;
            if (_remainingTime <= 0)
            {
                _status = OriginPositionAutoSetterStatus.SETTABLE;

                _timer.Dispose();
                _timer = null;
            }

            EventHandler <EventArgs> eventHandler = Update;

            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }
Example #5
0
        /// <summary>
        /// スケルトンデータ更新イベントハンドラ
        /// </summary>
        /// <param name="sender">イベント送信元</param>
        /// <param name="e">イベント引数</param>
        private void kinectManager_SkeletonUpdate(object sender, SkeletonUpdateEventArgs e)
        {
            // 実設定可能でないなら終了
            if (_status != OriginPositionAutoSetterStatus.SETTABLE)
            {
                return;
            }

            KinectSensor  kinect        = e.Kinect;
            SkeletonFrame skeletonFrame = e.SkeletonFrame;

            Skeleton[] skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
            skeletonFrame.CopySkeletonDataTo(skeletons);

            IList <JointDrawPosition> jointDrawPositionList = new List <JointDrawPosition>();

            bool success = false;

            foreach (Skeleton skeleton in skeletons)
            {
                if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                {
                    continue;
                }

                // 実設定
                _SetOriginPosition(skeleton);
                success = true;
            }

            if (success)
            {
                _alreadySet  = true;
                _lastSetTime = DateTime.Now;
            }
            _status = OriginPositionAutoSetterStatus.NOT_STARTING;

            EventHandler <EventArgs> eventHandler = Update;

            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }
        /// <summary>
        /// タイマーコールバック関数
        /// </summary>
        /// <param name="state">ステータス</param>
        private void _TimerCallback(object state)
        {
            _remainingTime--;
            if (_remainingTime <= 0)
            {
                _status = OriginPositionAutoSetterStatus.SETTABLE;

                _timer.Dispose();
                _timer = null;
            }

            EventHandler<EventArgs> eventHandler = Update;
            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }
        /// <summary>
        /// スケルトンデータ更新イベントハンドラ
        /// </summary>
        /// <param name="sender">イベント送信元</param>
        /// <param name="e">イベント引数</param>
        private void kinectManager_SkeletonUpdate(object sender, SkeletonUpdateEventArgs e)
        {
            // 実設定可能でないなら終了
            if (_status != OriginPositionAutoSetterStatus.SETTABLE)
            {
                return;
            }

            KinectSensor kinect = e.Kinect;
            SkeletonFrame skeletonFrame = e.SkeletonFrame;

            Skeleton[] skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
            skeletonFrame.CopySkeletonDataTo(skeletons);

            IList<JointDrawPosition> jointDrawPositionList = new List<JointDrawPosition>();

            bool success = false;

            foreach (Skeleton skeleton in skeletons)
            {
                if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                {
                    continue;
                }

                // 実設定
                _SetOriginPosition(skeleton);
                success = true;
            }

            if (success)
            {
                _alreadySet = true;
                _lastSetTime = DateTime.Now;
            }
            _status = OriginPositionAutoSetterStatus.NOT_STARTING;

            EventHandler<EventArgs> eventHandler = Update;
            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }
        /// <summary>
        /// 自動設定開始
        /// </summary>
        public void StartAutoSetting()
        {
            if (!_addedEventListener)
            {
                throw new InvalidOperationException("イベントリスナーが登録されていません。");
            }
            _timer = new Timer(_TimerCallback, null, 1000, 1000);
            _remainingTime = _WAITING_TIME;
            _status = OriginPositionAutoSetterStatus.STARTING;

            EventHandler<EventArgs> eventHandler = Update;
            if (eventHandler != null)
            {
                eventHandler(this, new EventArgs());
            }
        }