⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewspecificgroupretained.java

📁 JAVA3D矩陈的相关类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		    /*		      for (int n = 0; n < addLeafList.size(); n++) {		      System.err.println("n = "+n+" addLeafList = "+addLeafList.get(n));		      }		      */		      		    J3dMessage message = new J3dMessage();		    message.type = J3dMessage.VIEWSPECIFICGROUP_CHANGED;		    message.threads = (J3dThread.UPDATE_RENDERING_ENVIRONMENT|				       J3dThread.UPDATE_RENDER |				       J3dThread.UPDATE_SOUND|				       J3dThread.SOUND_SCHEDULER);		    message.universe = universe;		    message.args[0] = mtype;		    message.args[1] = objAry;		    VirtualUniverse.mc.processMessage(message);		}	    }	}    }    void removeView(int index) {	int i;	View v = (View) apiViewList.remove(index);	if (source.isLive() && v != null) {	    // Gather all affected leaf nodes and send a message to	    // RenderingEnv and RenderBin	    if (inSharedGroup) {		ArrayList parentList;		for (int k = 0; k < localToVworldKeys.length; k++) {		    parentList = (ArrayList)parentLists.get(k);		    // If the parentList contains this view or if this is the		    // first VSG then ..		    if (parentList == null || parentList.contains(v)) {			Object[] objAry = new Object[4];			ArrayList removeVsgList = new ArrayList();			ArrayList removeLeafList = new ArrayList();			int[] removeKeyList = new int[10];		    			objAry[0] = v;			objAry[1] = removeVsgList;			objAry[2] = removeLeafList;			HashKey key = localToVworldKeys[k];		    			removeVsgList.add(this);			removeKeyList[0] = k;			objAry[3] =  super.processViewSpecificInfo(REMOVE_VIEW,						      (HashKey)key,v,						      removeVsgList, removeKeyList, removeLeafList);			J3dMessage message = new J3dMessage();			message.type = J3dMessage.VIEWSPECIFICGROUP_CHANGED;			message.threads = (J3dThread.UPDATE_RENDERING_ENVIRONMENT|					   J3dThread.UPDATE_RENDER |					   J3dThread.UPDATE_SOUND|					   J3dThread.SOUND_SCHEDULER);			message.universe = universe;			message.args[0] = new Integer(REMOVE_VIEW);			message.args[1] = objAry;			VirtualUniverse.mc.processMessage(message);		    }		}	    }	    else {		ArrayList parentList = (ArrayList)parentLists.get(0);				// If the parentList contains this view or if this is the		// first VSG then ..		if (parentList == null || parentList.contains(v)) {		    Object[] objAry = new Object[4];		    ArrayList removeVsgList = new ArrayList();		    ArrayList removeLeafList = new ArrayList();		    int[] removeKeyList = new int[10];		    objAry[0] = v;		    objAry[1] = removeVsgList;		    objAry[2] = removeLeafList;		    removeVsgList.add(this);		    removeKeyList[0] = 0;		    		    tempKey.reset();		    objAry[3] = super.processViewSpecificInfo(REMOVE_VIEW,						  (HashKey)tempKey, v,						  removeVsgList, removeKeyList, removeLeafList);		    /*		      for (int n = 0; n < removeKeyList.size(); n++) {		      System.err.println("n = "+n+" keyValue = "+removeKeyList.get(n));		      }		      */		    J3dMessage message = new J3dMessage();		    message.type = J3dMessage.VIEWSPECIFICGROUP_CHANGED;		    message.threads = (J3dThread.UPDATE_RENDERING_ENVIRONMENT|				       J3dThread.UPDATE_RENDER |				       J3dThread.UPDATE_SOUND|				       J3dThread.SOUND_SCHEDULER);		    message.universe = universe;		    message.args[0] = new Integer(REMOVE_VIEW);		    message.args[1] = objAry;		    VirtualUniverse.mc.processMessage(message);		}	    }	}    }    Enumeration getAllViews() {	Vector viewList = new Vector();	for (int i = 0; i < apiViewList.size(); i++) {	    viewList.add(apiViewList.get(i));	}	return viewList.elements();    }    int numViews() {	return apiViewList.size();    }    int indexOfView(View view) {	return apiViewList.indexOf(view);    }        void removeView(View view) {	removeView(apiViewList.indexOf(view));    }    void removeAllViews() {	int size = apiViewList.size();	for (int i = 0; i < size; i++) {	    removeView(0);	}    }        void compile(CompileState compState) {        super.compile(compState);        // don't remove this group node        mergeFlag = SceneGraphObjectRetained.DONT_MERGE;	// XXXX: complete this    }        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;	    }    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;    }    void removeNodeData(SetLiveState s) {        if((!inSharedGroup) || (s.keys.length == localToVworld.length)) {	    s.changedViewGroup.add(this);	    // Remove everything ..	    int size = s.changedViewGroup.size();	    if (s.keyList.length < size) {		int[] newKeyList = new int[s.keyList.length+20];		System.arraycopy(s.keyList, 0, newKeyList, 0, s.keyList.length);		s.keyList = newKeyList;		//		System.err.println("====> RemovedNodeData: Allocating Non-shared");	    }	    s.keyList[size -1] = -1;	    parentLists.clear();	}	// A path of the shared group is removed	else {	    int i, index;	    int size = s.changedViewGroup.size();	    if (s.keyList.length < size+1+s.keys.length) {		int[] newKeyList = new int[s.keyList.length+s.keys.length+20];		System.arraycopy(s.keyList, 0, newKeyList, 0, s.keyList.length);		s.keyList = newKeyList;		//		System.err.println("====> RemovedNodeData: Allocating Shared");	    }	    // Must be in reverse, to preserve right indexing.	    for (i = s.keys.length-1; i >= 0; i--) {		index = s.keys[i].equals(localToVworldKeys, 0, localToVworldKeys.length);		if(index >= 0) { 		    s.changedViewGroup.add(this);		    s.keyList[s.changedViewGroup.size() -1] = index;		    parentLists.remove(index);		}	    }	}	s.viewLists =viewLists;        super.removeNodeData(s);     }        void updateCachedInformation(int component, View view, int index ) {		ArrayList list = (ArrayList) cachedViewList.get(index);	/*	System.err.println("updateCachedInformation v = "+this+" index = "+index+" list = "+list+" cachedViewList.size() = "+cachedViewList.size());	for (int k = 0; k < cachedViewList.size(); k++) {	    System.err.println("v = "+this+" k = "+k+" v.cachedViewList.get(k) = "+cachedViewList.get(k));	}	*/	if ((component & ADD_VIEW) != 0) {	    list.add(view);	}	else if ((component & REMOVE_VIEW) != 0) {	    list.remove(view);	}	/*	System.err.println("After updateCachedInformation v = "+this+" index = "+index+" list = "+list+" cachedViewList.size() = "+cachedViewList.size());	for (int k = 0; k < cachedViewList.size(); k++) {	    System.err.println("v = "+this+" k = "+k+" v.cachedViewList.get(k) = "+cachedViewList.get(k));	}	*/    }    void setNodeData(SetLiveState s) {        super.setNodeData(s);        if (!inSharedGroup) {	    int size = s.changedViewGroup.size();	    if (s.keyList.length < size+1) {		int[] newKeyList = new int[s.keyList.length+20];		System.arraycopy(s.keyList, 0, newKeyList, 0, s.keyList.length);		s.keyList = newKeyList;		//		System.err.println("====> setNodeData: Allocating Non-shared");	    }            setAuxData(s, 0, 0);        } else {            // For inSharedGroup case.            int j, hkIndex;	    int size = s.changedViewGroup.size();	    if (s.keyList.length < size+1+s.keys.length) {		int[] newKeyList = new int[s.keyList.length+s.keys.length+20];		System.arraycopy(s.keyList, 0, newKeyList, 0, s.keyList.length);		s.keyList = newKeyList;		//		System.err.println("====> setNodeData: Allocating Shared");	    }	    for(j=0; j<s.keys.length; j++) {                hkIndex = s.keys[j].equals(localToVworldKeys, 0,                                                localToVworldKeys.length);                if(hkIndex >= 0) {                    setAuxData(s, j, hkIndex);                } else {                    MasterControl.getCoreLogger().severe("Can't Find matching hashKey in setNodeData.");                }            }        }	// Make the VSG's viewLists as the relavant one for its children	s.viewLists = viewLists;       }        void setAuxData(SetLiveState s, int index, int hkIndex) {	ArrayList vl;	ArrayList parentList = null;	int size = apiViewList.size();	if (s.viewLists != null) {	    //	    System.err.println("=====> VSG: = "+this+" hkIndex = "+hkIndex+" s.viewLists = "+s.viewLists);	    parentList = (ArrayList) s.viewLists.get(hkIndex);	    if (parentList != null) {		vl = new ArrayList();		for (int i = 0; i < size; i++) {		    Object obj1 = apiViewList.get(i);		    // Get the intersection of the parentlist and this vsg's api list		    for (int j = 0; j < parentList.size(); j++) {			if (obj1 == parentList.get(j)) {			    vl.add(obj1);			    break;			}		    }		}	    }	    else {		vl = new ArrayList();		// Only include the non null ones in the apiViewList		for (int i = 0; i < size; i++) {		    Object obj = apiViewList.get(i);		    if (obj != null) {			vl.add(obj);		    }		}	    }	}	else {	    vl = new ArrayList();	    // Only include the non null ones in the apiViewList	    for (int i = 0; i < size; i++) {		Object obj = apiViewList.get(i);		if (obj != null) {		    vl.add(obj);		}	    }	}	if (parentList != null) {	    parentLists.add(hkIndex, parentList.clone());	}	else {	    parentLists.add(hkIndex, null);	}	    	viewLists.add(hkIndex,vl);	s.changedViewGroup.add(this);	s.changedViewList.add(vl);	if (localToVworldKeys != null) {	    s.keyList[s.changedViewGroup.size() -1] = hkIndex;	}	else {	    s.keyList[s.changedViewGroup.size() -1] = 0;	}	    	    }}

⌨️ 快捷键说明

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