//ターゲット操作系関数 //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); }
/** * 指定したインデクスのターゲットをリストから削除します。 * ターゲットだけを外部から参照している場合など、ターゲットの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; }