diff options
author | Harvey Harrison <[email protected]> | 2015-04-19 21:02:06 -0700 |
---|---|---|
committer | Harvey Harrison <[email protected]> | 2015-04-19 21:02:06 -0700 |
commit | 7a2e20caac9db6f789a7b3fab344b9758af45335 (patch) | |
tree | b5236ff2570178de356eab569225108948eb4d30 /src/javax/media/j3d/OrderedBin.java | |
parent | f76ce302c4bb2a9f03bbee571ec5d05c29633023 (diff) |
j3dcore: flatten the directory structure a bit
Signed-off-by: Harvey Harrison <[email protected]>
Diffstat (limited to 'src/javax/media/j3d/OrderedBin.java')
-rw-r--r-- | src/javax/media/j3d/OrderedBin.java | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/javax/media/j3d/OrderedBin.java b/src/javax/media/j3d/OrderedBin.java new file mode 100644 index 0000000..545a56d --- /dev/null +++ b/src/javax/media/j3d/OrderedBin.java @@ -0,0 +1,123 @@ +/* + * Copyright 1999-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 javax.media.j3d; + +import java.util.ArrayList; + +/** + * An OrderedBin contains an array of OrderedCollection, each represents + * a child of the OrderedGroup + */ +class OrderedBin extends Object { +// ArrayList of orderedCollection, one for each child of the orderedGroup +ArrayList<OrderedCollection> orderedCollections = new ArrayList<OrderedCollection>(); + + // orderedGroup source + OrderedGroupRetained source; + OrderedChildInfo childInfoList= null; + OrderedChildInfo lastChildInfo = null; + + boolean onUpdateList = false; + +// Value of already existing orderedCollection +ArrayList<Integer> setOCForCI = new ArrayList<Integer>(); +ArrayList<OrderedCollection> valueOfSetOCForCI = new ArrayList<OrderedCollection>(); + +// Value of orderedCollection based on oi, these arrays +// have size > 0 only during update_view; +ArrayList<Integer> setOCForOI = new ArrayList<Integer>(); +ArrayList<OrderedCollection> valueOfSetOCForOI = new ArrayList<OrderedCollection>(); + + OrderedBin(int nchildren, OrderedGroupRetained src){ + int i; + for (i=0; i< nchildren; i++) { + orderedCollections.add(null); + } + source = src; + } + + void addRemoveOrderedCollection() { + int i, index; + + // Add the setValues first, since they reflect already existing + // orderedCollection + for (i = 0; i < setOCForCI.size(); i++) { + index = setOCForCI.get(i).intValue(); + OrderedCollection oc = valueOfSetOCForCI.get(i); + orderedCollections.set(index, oc); + } + + setOCForCI.clear(); + valueOfSetOCForCI.clear(); + + while (childInfoList != null) { + if (childInfoList.type == OrderedChildInfo.ADD) { + orderedCollections.add(childInfoList.childId, childInfoList.value); + } + else if (childInfoList.type == OrderedChildInfo.REMOVE) { + orderedCollections.remove(childInfoList.childId); + } + childInfoList = childInfoList.next; + } + + // Now update the sets based on oi, since the og.orderedChildIdTable reflects + // the childIds for the next frame, use the table to set the oc at the + // correct place + for (i = 0; i < setOCForOI.size(); i++) { + index = setOCForOI.get(i).intValue(); + OrderedCollection oc = valueOfSetOCForOI.get(i); + int ci = source.orderedChildIdTable[index]; + orderedCollections.set(ci, oc); + } + setOCForOI.clear(); + valueOfSetOCForOI.clear(); + + onUpdateList = false; + lastChildInfo = null; + + + } + void addChildInfo(OrderedChildInfo cinfo) { + // Add this cinfo at the end + if (childInfoList == null) { + childInfoList = cinfo; + lastChildInfo = cinfo; + } + else { + // Add at the end + cinfo.prev = lastChildInfo; + lastChildInfo.next = cinfo; + cinfo.next = null; + // Update this to be the last child + lastChildInfo = cinfo; + } + + } + +} + + |