void clearLive(SetLiveState s) { Targets[] savedTransformTargets = null; savedTransformTargets = s.transformTargets; // no need to gather targets from tg in clear live s.transformTargets = null; super.clearLive(s); // restore setLiveState from it's local variables. // removeNodeData has altered these variables. s.localToVworld = localToVworld; s.localToVworldIndex = localToVworldIndex; s.transformTargets = savedTransformTargets; synchronized (this) { // synchronized with TransformStructure if (inSharedGroup) { if (transformLevels != null) { maxTransformLevel = transformLevels[0]; for (int i = 1; i < transformLevels.length; i++) { if (transformLevels[i] > maxTransformLevel) { maxTransformLevel = transformLevels[i]; } } } else { maxTransformLevel = -1; } if (s.switchTargets != null) { for (int i = 0; i < s.switchTargets.length; i++) { if (s.switchTargets[i] != null) { s.switchTargets[i].addNode(this, Targets.GRP_TARGETS); } } } } else { maxTransformLevel = -1; if (s.switchTargets != null && s.switchTargets[0] != null) { s.switchTargets[0].addNode(this, Targets.GRP_TARGETS); } } } // XXXX: recontruct targetThreads }
void clearLive(SetLiveState s) { 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(); } // XXXX: This is a hack since removeNodeData is called before // children are clearLives int[] tempIndex = null; // Don't keep the indices if everything will be cleared if (inSharedGroup && (s.keys.length != localToVworld.length)) { tempIndex = new int[s.keys.length]; for (int i = 0; i < s.keys.length; i++) { tempIndex[i] = s.keys[i].equals(localToVworldKeys, 0, localToVworldKeys.length); } } super.clearLive(s); // Do this after children clearlive since part of the viewLists may get cleared // during removeNodeData // If the last SharedGroup is being cleared if ((!inSharedGroup) || (localToVworld == null)) { viewLists.clear(); } else { // Must be in reverse, to preserve right indexing. for (int i = tempIndex.length - 1; i >= 0; i--) { if (tempIndex[i] >= 0) { viewLists.remove(tempIndex[i]); } } } s.viewLists = savedViewList; }
@Override void clearLive(SetLiveState s) { int i, j, k, index; Transform3D savedLocalToVworld[][] = s.localToVworld; int savedLocalToVworldIndex[][] = s.localToVworldIndex; HashKey savedLocalToVworldKeys[] = s.localToVworldKeys; ArrayList<OrderedPath> savedOrderedPaths = s.orderedPaths; ArrayList<ArrayList<View>> savedViewLists = 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; Targets[] savedSwitchTargets = s.switchTargets; Targets[] savedTransformTargets = s.transformTargets; // no need to gather targets from sg in clear live s.transformTargets = null; s.switchTargets = null; // XXXX: This is a hack since removeNodeData is called before // children are clearLives int[] tempIndex = null; // Don't keep the indices if everything will be cleared if (s.keys.length != localToVworld.length) { tempIndex = new int[s.keys.length]; for (i = s.keys.length - 1; i >= 0; i--) { tempIndex[i] = s.keys[i].equals(localToVworldKeys, 0, localToVworldKeys.length); } } super.clearLive(s); // Do this after children clearlive since part of the viewLists may get cleared // during removeNodeData if (refCount <= 0) { viewLists.clear(); } else { // Must be in reverse, to preserve right indexing. for (i = tempIndex.length - 1; i >= 0; i--) { if (tempIndex[i] >= 0) { viewLists.remove(tempIndex[i]); } } } // restore setLiveState from it's local variables. // removeNodeData has altered these variables. s.localToVworld = savedLocalToVworld; s.localToVworldIndex = savedLocalToVworldIndex; s.localToVworldKeys = savedLocalToVworldKeys; s.orderedPaths = savedOrderedPaths; s.viewLists = savedViewLists; s.lights = savedLights; s.fogs = savedFogs; s.modelClips = savedMclips; s.altAppearances = savedAltApps; s.transformTargets = savedTransformTargets; s.switchTargets = savedSwitchTargets; }