aboutsummaryrefslogtreecommitdiffstats
path: root/src/javax/media/j3d/SceneGraphObjectRetained.java
diff options
context:
space:
mode:
authorJulien Gouesse <[email protected]>2015-11-19 20:45:53 +0100
committerJulien Gouesse <[email protected]>2015-11-19 20:45:53 +0100
commita18c3b0789bfc24b49dbaf41c2390159bc683afc (patch)
treeb5236ff2570178de356eab569225108948eb4d30 /src/javax/media/j3d/SceneGraphObjectRetained.java
parent264608060948a634b53a13ee96ed07527eb07340 (diff)
parent7a2e20caac9db6f789a7b3fab344b9758af45335 (diff)
Gets Harvey's changes
Diffstat (limited to 'src/javax/media/j3d/SceneGraphObjectRetained.java')
-rw-r--r--src/javax/media/j3d/SceneGraphObjectRetained.java184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/javax/media/j3d/SceneGraphObjectRetained.java b/src/javax/media/j3d/SceneGraphObjectRetained.java
new file mode 100644
index 0000000..09000a7
--- /dev/null
+++ b/src/javax/media/j3d/SceneGraphObjectRetained.java
@@ -0,0 +1,184 @@
+/*
+ * 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 javax.media.j3d;
+
+
+/**
+ * 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;
+ }
+
+}