Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/test_render/SceneGraphIterator.cpp @ 341:2a0fad8a817d
add param gid [SceneGraph.h], func [SceneGraphIterator]
author | aaa |
---|---|
date | Mon, 29 Jun 2009 20:28:42 +0900 |
parents | 3f4c6a75d7e0 |
children |
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; } /*! 指定したグループが以降存在するか @param id 検索したい Group の ID @retval 1 next がある @retval 0 next がない */ int SceneGraphIterator::hasNextGroup(int id) { SceneGraphPtr p; for (p = cur->next; p; p = p->next) { if (p->gid == 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; } /*! iterator を指定した Group ID を持つ SceneGraph まで進める @param id 検索したい SceneGraph の Group ID */ void SceneGraphIterator::nextGroup(int id) { SceneGraphPtr p; for (p = cur->next; p; p = p->next) { if (p->gid == id) { break; } } cur = p; } /** * 参照中の SceneGraph を削除する */ void SceneGraphIterator::remove(void) { cur->remove(); } /** * 参照中の SceneGraph を返す * * @return current SceneGraph */ SceneGraphPtr SceneGraphIterator::get(void) { return cur; }