Ejemplo n.º 1
0
        //ターゲット操作系関数

        //IgnoreTargetの数は、NUMBER_OF_TARGETと同じです。



        /**
         * 新しいNewTargetを追加します。
         * @param i_clock
         * @param i_sample
         * @return
         * @throws NyARException
         */
        private NyARTarget addNewTarget(LowResolutionLabelingSamplerOut.Item i_sample)
        {
            //個数制限
            if (this._number_of_new >= this.MAX_NUMBER_OF_NEW)
            {
                return(null);
            }
            //アイテム生成
            NyARTarget t = this.target_pool.newNewTarget();

            if (t == null)
            {
                return(null);
            }
            t._status_life = LIFE_OF_NEW;
            t._st_type     = NyARTargetStatus.ST_NEW;
            t._delay_tick  = 0;
            t.setSampleArea(i_sample);
            t._ref_status = this.newst_pool.newObject();
            if (t._ref_status == null)
            {
                t.releaseObject();
                return(null);
            }
            ((NyARNewTargetStatus)t._ref_status).setValue(i_sample);
            //ターゲットリストへ追加
            this._targets.pushAssert(t);
            this._number_of_new++;
            return(t);
        }
Ejemplo n.º 2
0
        /**
         * 指定したインデクスのターゲットをリストから削除します。
         * ターゲットだけを外部から参照している場合など、ターゲットのindexが不明な場合は、
         * ターゲットをignoreステータスに設定して、trackerのprogressを経由してdeleateを実行します。
         * @param i_index
         * @return
         * @throws NyARException
         */
        private void deleatTarget(int i_index)
        {
            Debug.Assert(this._targets.getItem(i_index)._st_type == NyARTargetStatus.ST_IGNORE);
            NyARTarget tr = this._targets.getItem(i_index);

            this._targets.removeIgnoreOrder(i_index);
            tr.releaseObject();
            this._number_of_ignore--;
            return;
        }