orderedbin.java

来自「JAVA3D矩陈的相关类」· Java 代码 · 共 110 行

JAVA
110
字号
/* * $RCSfile: OrderedBin.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Use is subject to license terms. * * $Revision: 1.4 $ * $Date: 2007/02/09 17:18:13 $ * $State: Exp $ */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 orderedCollections = new ArrayList();        // orderedGroup source    OrderedGroupRetained source;    OrderedChildInfo childInfoList= null;    OrderedChildInfo lastChildInfo = null;    boolean onUpdateList = false;    // Value of already existing orderedCollection    ArrayList setOCForCI = new ArrayList();    ArrayList valueOfSetOCForCI = new ArrayList();    // Value of orderedCollection based on oi, these arrays    // have size > 0 only during update_view;    ArrayList setOCForOI = new ArrayList();    ArrayList valueOfSetOCForOI = new ArrayList();    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 = ((Integer)setOCForCI.get(i)).intValue();	    OrderedCollection oc = (OrderedCollection)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 = ((Integer)setOCForOI.get(i)).intValue();	    OrderedCollection oc = (OrderedCollection)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;	}    }    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?