int equals(HashKey localToVworldKeys[], int start, int end) { int mid; mid = start +((end - start)/ 2); if(localToVworldKeys[mid] != null) { int test = equals(localToVworldKeys[mid]); if((test < 0) && (start != mid)) return equals(localToVworldKeys, start, mid); else if((test > 0) && (start != mid)) return equals(localToVworldKeys, mid, end); else if(test == 0) return mid; else return -1; } // A null haskey encountered. return -2; }
Shape3DRetained getMirrorShape(HashKey key) { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if (i>=0) { return (Shape3DRetained) mirrorShape3D.get(i); } // Not possible throw new RuntimeException("Shape3DRetained: MirrorShape Not found!"); }
Shape3DRetained getMirrorShape(HashKey key) { if (key == null) { return mirrorShape3D.get(0); } else { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if (i>=0) { return mirrorShape3D.get(i); } } // Not possible throw new RuntimeException("Shape3DRetained: MirrorShape Not found!"); }
@Override void getMirrorObjects(ArrayList leafList, HashKey key) { if (key == null) { leafList.add(mirrorSounds[0]); } else { for (int i=0; i<numMirrorSounds; i++) { if (mirrorSounds[i].key.equals(key)) { leafList.add(mirrorSounds[i]); break; } } } }
@Override void getMirrorObjects(ArrayList leafList, HashKey key) { if (!inSharedGroup) { leafList.add(mirrorLights[0]); } else { for (int i=0; i<numMirrorLights; i++) { if (mirrorLights[i].key.equals(key)) { leafList.add(mirrorLights[i]); break; } } } } /**
void addAltApp(AlternateAppearanceRetained altApp, HashKey key) { if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<AlternateAppearanceRetained> l = altAppearances.get(hkIndex); if (l != null) { l.add(altApp); } } else { ArrayList<AlternateAppearanceRetained> l = altAppearances.get(0); l.add(altApp); } }
void addFog(FogRetained fog, HashKey key) { if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<FogRetained> l = fogs.get(hkIndex); if (l != null) { l.add(fog); } } else { ArrayList<FogRetained> l = fogs.get(0); l.add(fog); } }
void addModelClip(ModelClipRetained modelClip, HashKey key) { if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<ModelClipRetained> l = modelClips.get(hkIndex); if (l != null) { l.add(modelClip); } } else { ArrayList<ModelClipRetained> l = modelClips.get(0); l.add(modelClip); } } // Add a alt appearance to the list of alt appearance
void removeFog(FogRetained fog, HashKey key) { int index; if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<FogRetained> l = fogs.get(hkIndex); if (l != null) { index = l.indexOf(fog); l.remove(index); } } else { ArrayList<FogRetained> l = fogs.get(0); index = l.indexOf(fog); l.remove(index); } }
void addLight(LightRetained[] addlight, int numLgts, HashKey key) { if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<LightRetained> l = lights.get(hkIndex); if (l != null) { for (int i = 0; i < numLgts; i++) { l.add(addlight[i]); } } } else { ArrayList<LightRetained> l = lights.get(0); for (int i = 0; i < numLgts; i++) { l.add(addlight[i]); } } } // Add a fog to the list of fogs
Transform3D getCurrentChildLocalToVworld(HashKey key) { if (!inSharedGroup) { return childLocalToVworld[0][childLocalToVworldIndex[0][NodeRetained.CURRENT_LOCAL_TO_VWORLD]]; } else { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if(i>= 0) { return childLocalToVworld[i] [childLocalToVworldIndex[i][NodeRetained.CURRENT_LOCAL_TO_VWORLD]]; } } return new Transform3D(); }
Transform3D getCurrentLocalToVworld(HashKey key) { if (localToVworld != null) { if (!inSharedGroup) { return localToVworld[0][localToVworldIndex[0][CURRENT_LOCAL_TO_VWORLD]]; } else { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if(i>= 0) { return localToVworld[i][localToVworldIndex[i][CURRENT_LOCAL_TO_VWORLD]]; } } } return new Transform3D(); }
void removeModelClip(ModelClipRetained modelClip, HashKey key) { int index; if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<ModelClipRetained> l = modelClips.get(hkIndex); if (l != null) { index = l.indexOf(modelClip); l.remove(index); } } else { ArrayList<ModelClipRetained> l = modelClips.get(0); index = l.indexOf(modelClip); l.remove(index); } }
void removeAltApp(AlternateAppearanceRetained altApp, HashKey key) { int index; if (inSharedGroup) { int hkIndex = key.equals(localToVworldKeys, 0, localToVworldKeys.length); ArrayList<AlternateAppearanceRetained> l = altAppearances.get(hkIndex); if (l != null) { index = l.indexOf(altApp); l.remove(index); } } else { ArrayList<AlternateAppearanceRetained> l = altAppearances.get(0); index = l.indexOf(altApp); l.remove(index); } }
Transform3D getLastLocalToVworld(HashKey key) { if (localToVworld != null) { if (!inSharedGroup) { return localToVworld[0][localToVworldIndex[0][LAST_LOCAL_TO_VWORLD]]; } else { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if(i>= 0) { return localToVworld[i][localToVworldIndex[i][LAST_LOCAL_TO_VWORLD]]; } } } return new Transform3D(); }
/** * Get the last child localToVworld transform for a node */ Transform3D getLastChildLocalToVworld(HashKey key) { if (!inSharedGroup) { return childLocalToVworld[0][childLocalToVworldIndex[0][NodeRetained.LAST_LOCAL_TO_VWORLD]]; } else { int i = key.equals(localToVworldKeys, 0, localToVworldKeys.length); if(i>= 0) { return childLocalToVworld[i] [childLocalToVworldIndex[i][NodeRetained.LAST_LOCAL_TO_VWORLD]]; } } return new Transform3D(); }
@Override void updatePickable(HashKey keys[], boolean pick[]) { super.updatePickable(keys, pick); Shape3DRetained shape; if (!inSharedGroup) { shape = mirrorShape3D.get(0); shape.isPickable = pick[0]; } else { int size = mirrorShape3D.size(); for (int j=0; j< keys.length; j++) { for (int i=0; i < size; i++) { shape = mirrorShape3D.get(i); if (keys[j].equals(shape.key)) { shape.isPickable = pick[j]; break; } } } } }
@Override void updateCollidable(HashKey keys[], boolean collide[]) { super.updateCollidable(keys, collide); Shape3DRetained shape; if (!inSharedGroup) { shape = mirrorShape3D.get(0); shape.isCollidable = collide[0]; } else { int size = mirrorShape3D.size(); for (int j=0; j< keys.length; j++) { for (int i=0; i < size; i++) { shape = mirrorShape3D.get(i); if (keys[j].equals(shape.key)) { shape.isCollidable = collide[j]; break; } } } } }
@Override void updateCollidable(HashKey keys[], boolean collide[]) { super.updateCollidable(keys, collide); Shape3DRetained shape; if (!inSharedGroup) { shape = (Shape3DRetained) mirrorShape3D.get(0); shape.isCollidable = collide[0]; } else { int size = mirrorShape3D.size(); for (int j=0; j< keys.length; j++) { for (int i=0; i < size; i++) { shape = (Shape3DRetained) mirrorShape3D.get(i); if (keys[j].equals(shape.key)) { shape.isCollidable = collide[j]; break; } } } } }
@Override void setNodeData(SetLiveState s) { super.setNodeData(s); if (!inSharedGroup) { setAuxData(s, 0, 0); } else { // For inSharedGroup case. int j, hkIndex; 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."); } } } // Note s.orderedPaths is to be updated in GroupRetained.setLive // for each of its children }