Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/test_render/SceneGraphIterator.cpp @ 202:3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
add variable SceneGraph::sgid, flag_drawbale
author | gongo@gendarme.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Mon, 26 Jan 2009 16:58:35 +0900 |
parents | b257e27d995c |
children | 2a0fad8a817d |
line wrap: on
line source
#include "SceneGraphIterator.h" void SceneGraphIterator::set(SceneGraphPtr _list) { list = cur = _list; } /** * 次の SceneGraph があるか返す * * @retval 1 next がある * @retval 0 next がない */ int SceneGraphIterator::hasNext(void) { return (cur->next) ? 1 : 0; } /** * 指定した名前をもつ SceneGraph が以降存在するか * * @param id 検索したい SceneGraph の ID * @retval 1 next がある * @retval 0 next がない */ int SceneGraphIterator::hasNext(int id) { SceneGraphPtr p; for (p = cur->next; p; p = p->next) { if (p->sgid == id) { return 1; } } return 0; } /** * iterator を次に進める */ void SceneGraphIterator::next(void) { cur = cur->next; } /** * iterator を指定した ID を持つ SceneGraph まで進める * SceneGraph が無い場合、NULL にする * * @param id 検索したい SceneGraph の ID */ void SceneGraphIterator::next(int id) { SceneGraphPtr p; for (p = cur->next; p; p = p->next) { if (p->sgid == id) { break; } } cur = p; } /** * 参照中の SceneGraph を削除する */ void SceneGraphIterator::remove(void) { cur->remove(); } /** * 参照中の SceneGraph を返す * * @return current SceneGraph */ SceneGraphPtr SceneGraphIterator::get(void) { return cur; }