Thursday, March 15, 2007

Scene 그래프 갱신

오직 BranchGroup만이 프로그램 실행 중에 detach, add 가 가능하기 때문에, BranchGroup의 생성시 이를 지정해 주어야 한다.

Exam code

  1. BranchGroup branch=new BranchGroup();
  2. branch.setCapability BranchGroup.ALLOW_DETACH);
  3. branch.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
  4. branch.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);


2번: branchgroup 자신이 parent group에서 분리될 수 있게 선언
3,4번: child group이 확장 되거나 새롭게 add될 수 있게 선언



상호 작용
Parent group과 child group의 branchgroup의 선언이 서로 match가 되어야
제대로 기능할 수 있다.

Exam code

BranchGroup parent=new BranchGroup();
parent.setcapability(BranchGroup.allow_child_write);

...

BranchGroup child=new BranchGroup();
child.setcapability(BranchGroup.allow_detach);
...

parent.addchild(child);
parent.removeall();



앞의 부모 branch에서 자식 branch를 다시 쓸 수 있다고 선언했지만,
아래의 자식 branch에서 스스로 detach 할 수 있다고 선언하지 않으면
parent.removeall()은 동작하지 않는다.