Exemplo n.º 1
0
  void traverseSwitchChild(
      int child,
      HashKey key,
      int index,
      SwitchRetained switchRoot,
      boolean init,
      boolean swChanged,
      boolean switchOn,
      int switchLevel,
      ArrayList<SwitchState> updateList) {

    SwitchRetained sw;
    LinkRetained ln;
    Object obj;
    int i, j, k;

    ArrayList<NodeRetained> childSwitchLinks = childrenSwitchLinks.get(child);
    for (i = 0; i < childSwitchLinks.size(); i++) {
      obj = childSwitchLinks.get(i);

      if (obj instanceof SwitchRetained) {
        sw = (SwitchRetained) obj;
        for (j = 0; j < sw.children.size(); j++) {
          sw.traverseSwitchChild(
              j, key, index, switchRoot, init, swChanged, switchOn, switchLevel, updateList);
        }
      } else { // LinkRetained
        ln = (LinkRetained) obj;
        switchKey.set(key);
        switchKey.append(LinkRetained.plus).append(ln.nodeId);

        if (ln.sharedGroup.localToVworldKeys != null) {

          j =
              switchKey.equals(
                  ln.sharedGroup.localToVworldKeys, 0, ln.sharedGroup.localToVworldKeys.length);
          if (j < 0) {
            System.err.println("SharedGroupRetained : Can't find hashKey");
          }

          if (j < ln.sharedGroup.localToVworldKeys.length) {
            for (k = 0; k < ln.sharedGroup.children.size(); k++) {
              ln.sharedGroup.traverseSwitchChild(
                  k,
                  ln.sharedGroup.localToVworldKeys[j],
                  j,
                  switchRoot,
                  init,
                  swChanged,
                  switchOn,
                  switchLevel,
                  updateList);
            }
          }
        }
      }
    }
  }
Exemplo n.º 2
0
  void traverseSwitchParent() {
    int i;

    for (i = 0; i < parents.size(); i++) {
      NodeRetained ln = parents.get(i);
      if (ln.parentSwitchLink != null) {
        if (parentSwitchLink instanceof SwitchRetained) {
          ((SwitchRetained) parentSwitchLink).traverseSwitchParent();
        } else if (parentSwitchLink instanceof SharedGroupRetained) {
          ((SharedGroupRetained) parentSwitchLink).traverseSwitchParent();
        }
      }
    }
  }