void setLive(SetLiveState s) {
    if (inBackgroundGroup) {
      throw new IllegalSceneGraphException(J3dI18N.getString("ViewSpecificGroup3"));
    }

    s.inViewSpecificGroup = true;
    ArrayList savedViewList = s.viewLists;
    if (s.changedViewGroup == null) {
      s.changedViewGroup = new ArrayList();
      s.changedViewList = new ArrayList();
      s.keyList = new int[10];
      s.viewScopedNodeList = new ArrayList();
      s.scopedNodesViewList = new ArrayList();
    }
    super.setLive(s);
    s.viewLists = savedViewList;
  }
Пример #2
0
  @Override
  void setLive(SetLiveState s) {

    int i, j;
    Targets[] newTargets = null;

    // save setLiveState
    Transform3D savedLocalToVworld[][] = s.localToVworld;
    int savedLocalToVworldIndex[][] = s.localToVworldIndex;
    HashKey savedLocalToVworldKeys[] = s.localToVworldKeys;
    ArrayList<OrderedPath> savedOrderedPaths = s.orderedPaths;
    ArrayList<ArrayList<View>> savedViewList = s.viewLists;
    ArrayList<ArrayList<LightRetained>> savedLights = s.lights;
    ArrayList<ArrayList<FogRetained>> savedFogs = s.fogs;
    ArrayList<ArrayList<ModelClipRetained>> savedMclips = s.modelClips;
    ArrayList<ArrayList<AlternateAppearanceRetained>> savedAltApps = s.altAppearances;

    SharedGroupRetained savedLastSharedGroup = s.lastSharedGroup;
    Targets[] savedSwitchTargets = s.switchTargets;
    ArrayList<SwitchState> savedSwitchStates = s.switchStates;
    ArrayList<NodeRetained> savedChildSwitchLinks = s.childSwitchLinks;
    GroupRetained savedParentSwitchLink = s.parentSwitchLink;
    ArrayList<NodeRetained> savedChildTransformLinks = s.childTransformLinks;
    GroupRetained savedParentTransformLink = s.parentTransformLink;
    int[] savedHashkeyIndex = s.hashkeyIndex;

    // update setLiveState for this node
    // Note that s.containsNodesList is updated in super.setLive
    s.lastSharedGroup = this;

    Targets[] savedTransformTargets = s.transformTargets;

    int numPaths = s.keys.length;
    newTargets = new Targets[numPaths];
    for (i = 0; i < numPaths; i++) {
      if (s.transformLevels[i] >= 0) {
        newTargets[i] = new Targets();
      } else {
        newTargets[i] = null;
      }
    }
    s.transformTargets = newTargets;

    super.setLive(s);

    int hkIndex;
    for (i = 0; i < numPaths; i++) {
      if (s.transformTargets[i] != null) {
        hkIndex = s.hashkeyIndex[i];
        cachedTargets[hkIndex] = s.transformTargets[i].snapShotInit();
      }
    }
    // Assign data in cachedTargets to j3dCTs.
    j3dCTs = new CachedTargets[cachedTargets.length];
    copyCachedTargets(TargetsInterface.TRANSFORM_TARGETS, j3dCTs);

    computeTargetThreads(TargetsInterface.TRANSFORM_TARGETS, cachedTargets);

    // restore setLiveState
    s.localToVworld = savedLocalToVworld;
    s.localToVworldIndex = savedLocalToVworldIndex;
    s.localToVworldKeys = savedLocalToVworldKeys;
    s.orderedPaths = savedOrderedPaths;
    s.viewLists = savedViewList;

    s.lights = savedLights;
    s.fogs = savedFogs;
    s.modelClips = savedMclips;
    s.altAppearances = savedAltApps;

    s.lastSharedGroup = savedLastSharedGroup;
    s.switchTargets = savedSwitchTargets;
    s.switchStates = savedSwitchStates;

    s.childSwitchLinks = savedChildSwitchLinks;
    s.parentSwitchLink = savedParentSwitchLink;
    s.childTransformLinks = savedChildTransformLinks;
    s.parentTransformLink = savedParentTransformLink;

    s.transformTargets = savedTransformTargets;
    s.hashkeyIndex = savedHashkeyIndex;
    /*
    // XXXX : port this
            for (int i=0; i < children.size(); i++) {
                if ((childContains[i][0] & ILLEGAL_LEAF_MASK) != 0) {
                    throw new IllegalSharingException(J3dI18N.getString("SharedGroupRetained0"));            }
            }
    */
  }