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; }
@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")); } } */ }