org.scijava.java3d.SceneGraphObjectRetained Maven / Gradle / Ivy
/*
* Copyright 1997-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;
/**
* SceneGraphObjectRetained is a superclass, which has things that
* are common to all retained scene graph component objects.
*/
abstract class SceneGraphObjectRetained extends IndexedObject
implements Cloneable {
// The object which created this retained mode object
SceneGraphObject source;
// This boolean is true when the object is in a Background BranchGroup
boolean inBackgroundGroup = false;
// This boolean is true when the object is in the update list
boolean onUpdateList = false;
// A flag to indicate if the node is in setLive, note that
// since the live is set to true only at the end, this flag
// is need for scoping to mark the nodes that are inSetLive
boolean inSetLive = false;
// A flag used in compile to indicate if this node needs to go
// through the second pass
final static int DONT_MERGE = 0;
final static int MERGE = 1;
final static int MERGE_DONE = 2;
int mergeFlag = 0;
/**
* Caches the source object that created this retained mode object.
* @param source the object which created this retained mode object.
*/
void setSource(SceneGraphObject source) {
this.source = source;
}
/**
* Returns the cached source object that created this retained mode
* object.
* @return the object which created this retained mode object.
*/
SceneGraphObject getSource() {
return this.source;
}
void markAsLive() {
this.source.setLive();
inSetLive = false;
}
void setLive(boolean inBackgroundGroup) {
doSetLive(inBackgroundGroup);
markAsLive();
}
boolean isInSetLive() {
return inSetLive;
}
/**
* Makes the internal node live.
*/
void doSetLive(boolean inBackgroundGroup) {
inSetLive = true;
this.inBackgroundGroup = inBackgroundGroup;
}
void setLive(SetLiveState s) {
doSetLive(s);
markAsLive();
}
/**
* Makes the internal node live.
*/
void doSetLive(SetLiveState s) {
inSetLive = true;
inBackgroundGroup = s.inBackgroundGroup;
}
/**
* Makes the internal node not live
*/
void clearLive(VirtualUniverse univ, int index,
boolean sharedGroup, HashKey [] keys) {
inBackgroundGroup = false;
this.source.clearLive();
}
/**
* Makes the internal node not live
*/
void clearLive() {
inBackgroundGroup = false;
this.source.clearLive();
}
/**
* This marks this object as compiled.
*/
void setCompiled() {
this.source.setCompiled();
}
/**
* This is the default compile() method, which just marks the sgo as
* compiled.
*/
void compile(CompileState compState) {
setCompiled();
}
void merge(CompileState compState) {
}
void mergeTransform(TransformGroupRetained xform) {
}
void traverse(boolean sameLevel, int level) {
System.err.println();
for (int i = 0; i < level; i++) {
System.err.print(".");
}
System.err.print(this);
}
/**
* true if component can't be read or written after compile or setlive()
*/
boolean isStatic() {
return source.capabilityBitsEmpty();
}
@Override
protected Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
}
void handleFrequencyChange(int bit) {
}
@Override
VirtualUniverse getVirtualUniverse() {
return null;
}
}