Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*
*/
package org.scijava.java3d;
import java.util.ArrayList;
/**
* SetLiveState is used to encapsulate all state needed when a branch
* group is added to the scene graph
*/
class SetLiveState extends Object {
// The VirtualUniverse for this branch group
VirtualUniverse universe = null;
// The Locale for this Branch Graph
Locale locale = null;
// The transforms used to update state
Transform3D[][] currentTransforms = new Transform3D[1][];
int[][] currentTransformsIndex = new int[1][];
// The keys used when dealing with SharedGroups
HashKey[] keys = null;
// flags for detecting what we are under
boolean inSharedGroup = false;
boolean inBackgroundGroup = false;
boolean inViewSpecificGroup = false;
/**
* The list of nodes added/removed during setLive/clearLive
*/
ArrayList nodeList = new ArrayList();
/**
* List of nodes that are viewScoped. Note that all nodes
* except Shape3D nodes can be in viewScopedNodeList, shape3D
* nodes will always be in the nodeList regardless of scoped
* or not. Also, only renderbin and renderingEnv structure is
* interested in viewScopedNodeList
*/
ArrayList viewScopedNodeList = null;
/**
* Parallel list to viewScopedNodeList containing a list of views
* that the viewScopedNode is scoped to
*/
ArrayList> scopedNodesViewList = null;
// Threads to notify after setLive/clearLive
int notifyThreads = 0;
// The current list of leaf nodes for transform targets
Targets[] transformTargets = null;
// List of transform level, one per shared path
int transformLevels[] = new int[]{-1};
// List of scoped lights
ArrayList> lights = null;
// List of scoped fogs
ArrayList> fogs = null;
// List of scoped modelClips
ArrayList> modelClips = null;
// List of scoped alt app
ArrayList> altAppearances = null;
// List of viewes scoped to this Group, for all subclasses
// of group, except ViewSpecificGroup its a pointer to closest
// ViewSpecificGroup parent
// viewList for this node, if inSharedGroup is
// false then only viewList(0) is valid
ArrayList> viewLists = null;
ArrayList changedViewGroup = null;
ArrayList> changedViewList = null;
int[] keyList = null;
// The current bitmask of types in transformTragets
//int transformTargetThreads = 0;
ArrayList orderedPaths = null;
ArrayList ogList = new ArrayList(5);
ArrayList ogChildIdList = new ArrayList(5);
ArrayList ogOrderedIdList = new ArrayList(5);
// ogCIOList contains a list of OG with affected child index order.
ArrayList ogCIOList = new ArrayList(5);
// ogCIOTableList contains a list of affected child index order.
ArrayList ogCIOTableList = new ArrayList(5);
/**
* List of BranchGroup from this node to the root of tree This is used by
* BranchGroupRetained to construct BranchGroup lists for picking.
*
* @see NodeRetained.branchGroupPaths
*/
ArrayList branchGroupPaths = null;
ArrayList parentBranchGroupPaths = null;
/**
* List of Pickable flags, one for each share path.
* This flag is true when all the NodeRetained.pickable is true
* along the path except current node.
*/
boolean pickable[] = new boolean[]{true};
/**
* List of collidable flags, one for each share path.
* This flag is true when all the NodeRetained.pickable is true
* along the path except current node.
*/
boolean collidable[] = new boolean[]{true};
// reference count use in set/clear Live to remember how
// many references of the original branch that attach()/detach()
int refCount = 1;
// background node whose geometry branch contains this node
BackgroundRetained geometryBackground = null;
// behavior nodes
ArrayList behaviorNodes = new ArrayList(1);
// The current list of child transform group nodes or link nodes
// under a transform group
ArrayList childTransformLinks = null;
// closest parent which is a TransformGroupRetained or sharedGroupRetained
GroupRetained parentTransformLink = null;
// switch Level, start from -1, increment by one for each SwitchNode
// encounter in a branch, one per key
int switchLevels[] = new int[]{-1};
// closest switch parent, one per key
SwitchRetained closestSwitchParents[] = new SwitchRetained[]{null};
// the child id from the closest switch parent, one per key
int closestSwitchIndices[] = new int[]{-1};
// The current list of leaf nodes for switch targets
Targets[] switchTargets = null;
// The current list of closest child switch nodes or
// link nodes under a switch node
ArrayList childSwitchLinks = null;
// closest parent which is a SwitchRetained or sharedGroupRetained
GroupRetained parentSwitchLink = null;
SharedGroupRetained lastSharedGroup = null;
int traverseFlags = 0;
// Use for set live.
Transform3D[][] localToVworld = null;
int[][] localToVworldIndex = null;
HashKey[] localToVworldKeys = null;
// cached hashkey index to eliminate duplicate hash key index search
// currently used by Switch, can be extended for other node types
int[] hashkeyIndex = null;
ArrayList switchStates = null;
SetLiveState(VirtualUniverse u) {
universe = u;
}
void reset(Locale l) {
locale = l;
clear();
}
void clear() {
inSharedGroup = false;
inBackgroundGroup = false;
inViewSpecificGroup = false;
nodeList.clear();
viewScopedNodeList = null;
scopedNodesViewList = null;
notifyThreads = 0;
transformTargets = null;
lights = null;
fogs = null;
modelClips = null;
altAppearances = null;
viewLists = null;
changedViewGroup = null;
changedViewList = null;
keyList = null;
behaviorNodes.clear();
traverseFlags = 0;
ogList.clear();
ogChildIdList.clear();
ogOrderedIdList.clear();
ogCIOList.clear();
ogCIOTableList.clear();
pickable = new boolean[]{true};
collidable = new boolean[]{true};
refCount = 1;
geometryBackground = null;
transformLevels = new int[]{-1};
childTransformLinks = null;
parentTransformLink = null;
switchTargets = null;
switchLevels = new int[]{-1};
switchStates = null;
closestSwitchIndices = new int[]{-1};
closestSwitchParents = new SwitchRetained[]{null};
childSwitchLinks = null;
parentSwitchLink = null;
lastSharedGroup = null;
keys = null;
currentTransforms = new Transform3D[1][];
currentTransformsIndex = new int[1][];
localToVworld = null;
localToVworldIndex = null;
localToVworldKeys = null;
// XXXX: optimization for targetThreads computation, require
// cleanup in GroupRetained.doSetLive()
//transformTargetThreads = 0;
hashkeyIndex = null;
// Fix for issue 75
parentBranchGroupPaths = null;
branchGroupPaths = null;
orderedPaths = null;
}
}