diff --git a/engine/nbproject/project.properties b/engine/nbproject/project.properties index 2923f7567..811e47f6b 100644 --- a/engine/nbproject/project.properties +++ b/engine/nbproject/project.properties @@ -52,7 +52,7 @@ javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir}:\ ${libs.junit_4.classpath} -javadoc.additionalparam=-public +javadoc.additionalparam=-public javadoc.author=false javadoc.encoding=${source.encoding} javadoc.noindex=false @@ -86,7 +86,7 @@ platform.active=default_platform run.classpath=\ ${javac.classpath}:\ ${build.classes.dir} -run.jvmargs=-Xbatch -XX:CICompilerCount=1 +run.jvmargs=-Xms30m -Xmx30m -XX:MaxDirectMemorySize=256M run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} diff --git a/engine/src/core-data/Common/MatDefs/Misc/Sky.frag b/engine/src/core-data/Common/MatDefs/Misc/Sky.frag index 7c334f91a..3e36e0af5 100644 --- a/engine/src/core-data/Common/MatDefs/Misc/Sky.frag +++ b/engine/src/core-data/Common/MatDefs/Misc/Sky.frag @@ -1,6 +1,6 @@ #import "Common/ShaderLib/Optics.glsllib" -uniform ENVMAP m_Texture2; +uniform ENVMAP m_Texture; varying vec3 direction; diff --git a/engine/src/core/com/jme3/light/PointLight.java b/engine/src/core/com/jme3/light/PointLight.java index abd33f63e..8858060bb 100644 --- a/engine/src/core/com/jme3/light/PointLight.java +++ b/engine/src/core/com/jme3/light/PointLight.java @@ -1,141 +1,140 @@ -/* - * Copyright (c) 2009-2010 jMonkeyEngine - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.jme3.light; - -import com.jme3.bounding.BoundingVolume; -import com.jme3.export.JmeExporter; -import com.jme3.export.JmeImporter; -import com.jme3.export.InputCapsule; -import com.jme3.export.OutputCapsule; -import com.jme3.math.Vector3f; -import com.jme3.scene.Spatial; -import java.io.IOException; - -/** - * Represents a point light. - * A point light emits light from a given position into all directions in space. - * E.g a lamp or a bright effect. Point light positions are in world space. - *

- * In addition to a position, point lights also have a radius which - * can be used to attenuate the influence of the light depending on the - * distance between the light and the effected object. - * - */ -public class PointLight extends Light { - - protected Vector3f position = new Vector3f(); - protected float radius = 0; - - @Override - public void computeLastDistance(Spatial owner) { - if (owner.getWorldBound() != null){ - BoundingVolume bv = owner.getWorldBound(); - lastDistance = bv.distanceSquaredTo(position); - System.out.println(lastDistance + ", " + owner); - }else{ - lastDistance = owner.getWorldTranslation().distanceSquared(position); - } - } - - /** - * Returns the world space position of the light. - * - * @return the world space position of the light. - * - * @see PointLight#setPosition(com.jme3.math.Vector3f) - */ - public Vector3f getPosition() { - return position; - } - - /** - * Set the world space position of the light. - * - * @param position the world space position of the light. - */ - public void setPosition(Vector3f position){ - this.position.set(position); - } - - /** - * Returns the radius of the light influence. A radius of 0 means - * the light has no attenuation. - * - * @return the radius of the light - */ - public float getRadius(){ - return radius; - } - - /** - * Set the radius of the light influence. - *

- * Setting a non-zero radius indicates the light should use attenuation. - * If a pixel's distance to this light's position - * is greater than the light's radius, then the pixel will not be - * effected by this light, if the distance is less than the radius, then - * the magnitude of the influence is equal to distance / radius. - * - * @param radius the radius of the light influence. - * - * @throws IllegalArgumentException If radius is negative - */ - public void setRadius(float radius){ - if (radius < 0) { - throw new IllegalArgumentException("Light radius cannot be negative"); - } - this.radius = radius; - } - - @Override - public Light.Type getType() { - return Light.Type.Point; - } - - @Override - public void write(JmeExporter ex) throws IOException { - super.write(ex); - OutputCapsule oc = ex.getCapsule(this); - oc.write(position, "position", null); - oc.write(radius, "radius", 0f); - } - - @Override - public void read(JmeImporter im) throws IOException { - super.read(im); - InputCapsule ic = im.getCapsule(this); - position = (Vector3f) ic.readSavable("position", null); - radius = ic.readFloat("radius", 0f); - } - -} +/* + * Copyright (c) 2009-2010 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.jme3.light; + +import com.jme3.bounding.BoundingVolume; +import com.jme3.export.JmeExporter; +import com.jme3.export.JmeImporter; +import com.jme3.export.InputCapsule; +import com.jme3.export.OutputCapsule; +import com.jme3.math.Vector3f; +import com.jme3.scene.Spatial; +import java.io.IOException; + +/** + * Represents a point light. + * A point light emits light from a given position into all directions in space. + * E.g a lamp or a bright effect. Point light positions are in world space. + *

+ * In addition to a position, point lights also have a radius which + * can be used to attenuate the influence of the light depending on the + * distance between the light and the effected object. + * + */ +public class PointLight extends Light { + + protected Vector3f position = new Vector3f(); + protected float radius = 0; + + @Override + public void computeLastDistance(Spatial owner) { + if (owner.getWorldBound() != null){ + BoundingVolume bv = owner.getWorldBound(); + lastDistance = bv.distanceSquaredTo(position); + }else{ + lastDistance = owner.getWorldTranslation().distanceSquared(position); + } + } + + /** + * Returns the world space position of the light. + * + * @return the world space position of the light. + * + * @see PointLight#setPosition(com.jme3.math.Vector3f) + */ + public Vector3f getPosition() { + return position; + } + + /** + * Set the world space position of the light. + * + * @param position the world space position of the light. + */ + public void setPosition(Vector3f position){ + this.position.set(position); + } + + /** + * Returns the radius of the light influence. A radius of 0 means + * the light has no attenuation. + * + * @return the radius of the light + */ + public float getRadius(){ + return radius; + } + + /** + * Set the radius of the light influence. + *

+ * Setting a non-zero radius indicates the light should use attenuation. + * If a pixel's distance to this light's position + * is greater than the light's radius, then the pixel will not be + * effected by this light, if the distance is less than the radius, then + * the magnitude of the influence is equal to distance / radius. + * + * @param radius the radius of the light influence. + * + * @throws IllegalArgumentException If radius is negative + */ + public void setRadius(float radius){ + if (radius < 0) { + throw new IllegalArgumentException("Light radius cannot be negative"); + } + this.radius = radius; + } + + @Override + public Light.Type getType() { + return Light.Type.Point; + } + + @Override + public void write(JmeExporter ex) throws IOException { + super.write(ex); + OutputCapsule oc = ex.getCapsule(this); + oc.write(position, "position", null); + oc.write(radius, "radius", 0f); + } + + @Override + public void read(JmeImporter im) throws IOException { + super.read(im); + InputCapsule ic = im.getCapsule(this); + position = (Vector3f) ic.readSavable("position", null); + radius = ic.readFloat("radius", 0f); + } + +} diff --git a/engine/src/core/com/jme3/util/TempVars.java b/engine/src/core/com/jme3/util/TempVars.java index e0a16b6cb..4f81f02a4 100644 --- a/engine/src/core/com/jme3/util/TempVars.java +++ b/engine/src/core/com/jme3/util/TempVars.java @@ -1,238 +1,221 @@ -/* - * Copyright (c) 2009-2010 jMonkeyEngine - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package com.jme3.util; - -import com.jme3.collision.bih.BIHNode.BIHStackData; -import com.jme3.math.Eigen3f; -import com.jme3.math.Matrix4f; -import com.jme3.math.Matrix3f; -import com.jme3.math.Plane; -import com.jme3.math.Quaternion; -import com.jme3.math.Triangle; -import com.jme3.math.Vector2f; -import com.jme3.math.Vector3f; -import com.jme3.scene.Spatial; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.util.ArrayList; - -/** - * Temporary variables assigned to each thread. Engine classes may access - * these temp variables with TempVars.get(), all retrieved TempVars - * instances must be returned via TempVars.release(). - * This returns an available instance of the TempVar class ensuring this - * particular instance is never used elsewhere in the mean time. - */ -public class TempVars { - - /** - * Allow X instances of TempVars in a single thread. - */ - private static final int STACK_SIZE = 5; - - /** - * TempVarsStack contains a stack of TempVars. - * Every time TempVars.get() is called, a new entry is added to the stack, - * and the index incremented. - * When TempVars.release() is called, the entry is checked against - * the current instance and then the index is decremented. - */ - private static class TempVarsStack { - int index = 0; - TempVars[] tempVars = new TempVars[STACK_SIZE]; - } - - /** - * ThreadLocal to store a TempVarsStack for each thread. - * This ensures each thread has a single TempVarsStack that is - * used only in method calls in that thread. - */ - private static final ThreadLocal varsLocal = new ThreadLocal() { - @Override - public TempVarsStack initialValue() { - return new TempVarsStack(); - } - }; - - private static final ThreadLocal tempVars = new ThreadLocal(){ - @Override - public TempVars initialValue() { - return new TempVars(); - } - }; - - /** - * This instance of TempVars has been retrieved but not released yet. - */ - private boolean isUsed = false; - - private TempVars() { - } - - public static TempVars get(){ - return tempVars.get(); - } - - public void release(){ - } - - /** - * Acquire an instance of the TempVar class. - * You have to release the instance after use by calling the - * release() method. - * If more than STACK_SIZE (currently 5) instances are requested - * in a single thread then an ArrayIndexOutOfBoundsException will be thrown. - * - * @return A TempVar instance - */ - /* - public static TempVars get() { - TempVarsStack stack = varsLocal.get(); - - TempVars instance = stack.tempVars[stack.index]; - - if (instance == null){ - // Create new - instance = new TempVars(); - - // Put it in there - stack.tempVars[stack.index] = instance; - } - - stack.index++; - - instance.isUsed = true; - - return instance; - } - */ - - /** - * Releases this instance of TempVars. - * Once released, the contents of the TempVars are undefined. - * The TempVars must be released in the opposite order that they are retrieved, - * e.g. Acquiring vars1, then acquiring vars2, vars2 MUST be released - * first otherwise an exception will be thrown. - */ - /* - public void release() { - if (!isUsed){ - throw new IllegalStateException("This instance of TempVars was already released!"); - } - - isUsed = false; - - TempVarsStack stack = varsLocal.get(); - - // Return it to the stack - stack.index--; - - // Check if it is actually there - if (stack.tempVars[stack.index] != this){ - throw new IllegalStateException("An instance of TempVars has not been released in a called method!"); - } - }*/ - - /** - * For interfacing with OpenGL in Renderer. - */ - public final IntBuffer intBuffer1 = BufferUtils.createIntBuffer(1); - public final IntBuffer intBuffer16 = BufferUtils.createIntBuffer(16); - public final FloatBuffer floatBuffer16 = BufferUtils.createFloatBuffer(16); - /** - * Skinning buffers - */ - public final float[] skinPositions = new float[512 * 3]; - public final float[] skinNormals = new float[512 * 3]; - /** - * Fetching triangle from mesh - */ - public final Triangle triangle = new Triangle(); - /** - * General vectors. - */ - public final Vector3f vect1 = new Vector3f(); - public final Vector3f vect2 = new Vector3f(); - public final Vector3f vect3 = new Vector3f(); - public final Vector3f vect4 = new Vector3f(); - public final Vector3f vect5 = new Vector3f(); - public final Vector3f vect6 = new Vector3f(); - public final Vector3f vect7 = new Vector3f(); - //seems the maximum number of vector used is 7 in com.jme3.bounding.java - public final Vector3f vect8 = new Vector3f(); - public final Vector3f vect9 = new Vector3f(); - public final Vector3f vect10 = new Vector3f(); - public final Vector3f[] tri = {new Vector3f(), - new Vector3f(), - new Vector3f()}; - /** - * 2D vector - */ - public final Vector2f vect2d = new Vector2f(); - public final Vector2f vect2d2 = new Vector2f(); - /** - * General matrices. - */ - public final Matrix3f tempMat3 = new Matrix3f(); - public final Matrix4f tempMat4 = new Matrix4f(); - /** - * General quaternions. - */ - public final Quaternion quat1 = new Quaternion(); - public final Quaternion quat2 = new Quaternion(); - /** - * Eigen - */ - public final Eigen3f eigen = new Eigen3f(); - /** - * Plane - */ - public final Plane plane = new Plane(); - /** - * BoundingBox ray collision - */ - public final float[] fWdU = new float[3]; - public final float[] fAWdU = new float[3]; - public final float[] fDdU = new float[3]; - public final float[] fADdU = new float[3]; - public final float[] fAWxDdU = new float[3]; - /** - * Maximum tree depth .. 32 levels?? - */ - public final Spatial[] spatialStack = new Spatial[32]; - public final float[] matrixWrite = new float[16]; - /** - * BIHTree - */ - public final float[] bihSwapTmp = new float[9]; - public final ArrayList bihStack = new ArrayList(); -} +/* + * Copyright (c) 2009-2010 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.util; + +import com.jme3.collision.bih.BIHNode.BIHStackData; +import com.jme3.math.Eigen3f; +import com.jme3.math.Matrix4f; +import com.jme3.math.Matrix3f; +import com.jme3.math.Plane; +import com.jme3.math.Quaternion; +import com.jme3.math.Triangle; +import com.jme3.math.Vector2f; +import com.jme3.math.Vector3f; +import com.jme3.scene.Spatial; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.ArrayList; + +/** + * Temporary variables assigned to each thread. Engine classes may access + * these temp variables with TempVars.get(), all retrieved TempVars + * instances must be returned via TempVars.release(). + * This returns an available instance of the TempVar class ensuring this + * particular instance is never used elsewhere in the mean time. + */ +public class TempVars { + + /** + * Allow X instances of TempVars in a single thread. + */ + private static final int STACK_SIZE = 5; + + /** + * TempVarsStack contains a stack of TempVars. + * Every time TempVars.get() is called, a new entry is added to the stack, + * and the index incremented. + * When TempVars.release() is called, the entry is checked against + * the current instance and then the index is decremented. + */ + private static class TempVarsStack { + int index = 0; + TempVars[] tempVars = new TempVars[STACK_SIZE]; + } + + /** + * ThreadLocal to store a TempVarsStack for each thread. + * This ensures each thread has a single TempVarsStack that is + * used only in method calls in that thread. + */ + private static final ThreadLocal varsLocal = new ThreadLocal() { + @Override + public TempVarsStack initialValue() { + return new TempVarsStack(); + } + }; + + /** + * This instance of TempVars has been retrieved but not released yet. + */ + private boolean isUsed = false; + + private TempVars() { + } + + /** + * Acquire an instance of the TempVar class. + * You have to release the instance after use by calling the + * release() method. + * If more than STACK_SIZE (currently 5) instances are requested + * in a single thread then an ArrayIndexOutOfBoundsException will be thrown. + * + * @return A TempVar instance + */ + public static TempVars get() { + TempVarsStack stack = varsLocal.get(); + + TempVars instance = stack.tempVars[stack.index]; + + if (instance == null){ + // Create new + instance = new TempVars(); + + // Put it in there + stack.tempVars[stack.index] = instance; + } + + stack.index++; + + instance.isUsed = true; + + return instance; + } + + /** + * Releases this instance of TempVars. + * Once released, the contents of the TempVars are undefined. + * The TempVars must be released in the opposite order that they are retrieved, + * e.g. Acquiring vars1, then acquiring vars2, vars2 MUST be released + * first otherwise an exception will be thrown. + */ + public void release() { + if (!isUsed){ + throw new IllegalStateException("This instance of TempVars was already released!"); + } + + isUsed = false; + + TempVarsStack stack = varsLocal.get(); + + // Return it to the stack + stack.index--; + + // Check if it is actually there + if (stack.tempVars[stack.index] != this){ + throw new IllegalStateException("An instance of TempVars has not been released in a called method!"); + } + } + + /** + * For interfacing with OpenGL in Renderer. + */ + public final IntBuffer intBuffer1 = BufferUtils.createIntBuffer(1); + public final IntBuffer intBuffer16 = BufferUtils.createIntBuffer(16); + public final FloatBuffer floatBuffer16 = BufferUtils.createFloatBuffer(16); + /** + * Skinning buffers + */ + public final float[] skinPositions = new float[512 * 3]; + public final float[] skinNormals = new float[512 * 3]; + /** + * Fetching triangle from mesh + */ + public final Triangle triangle = new Triangle(); + /** + * General vectors. + */ + public final Vector3f vect1 = new Vector3f(); + public final Vector3f vect2 = new Vector3f(); + public final Vector3f vect3 = new Vector3f(); + public final Vector3f vect4 = new Vector3f(); + public final Vector3f vect5 = new Vector3f(); + public final Vector3f vect6 = new Vector3f(); + public final Vector3f vect7 = new Vector3f(); + //seems the maximum number of vector used is 7 in com.jme3.bounding.java + public final Vector3f vect8 = new Vector3f(); + public final Vector3f vect9 = new Vector3f(); + public final Vector3f vect10 = new Vector3f(); + public final Vector3f[] tri = {new Vector3f(), + new Vector3f(), + new Vector3f()}; + /** + * 2D vector + */ + public final Vector2f vect2d = new Vector2f(); + public final Vector2f vect2d2 = new Vector2f(); + /** + * General matrices. + */ + public final Matrix3f tempMat3 = new Matrix3f(); + public final Matrix4f tempMat4 = new Matrix4f(); + /** + * General quaternions. + */ + public final Quaternion quat1 = new Quaternion(); + public final Quaternion quat2 = new Quaternion(); + /** + * Eigen + */ + public final Eigen3f eigen = new Eigen3f(); + /** + * Plane + */ + public final Plane plane = new Plane(); + /** + * BoundingBox ray collision + */ + public final float[] fWdU = new float[3]; + public final float[] fAWdU = new float[3]; + public final float[] fDdU = new float[3]; + public final float[] fADdU = new float[3]; + public final float[] fAWxDdU = new float[3]; + /** + * Maximum tree depth .. 32 levels?? + */ + public final Spatial[] spatialStack = new Spatial[32]; + public final float[] matrixWrite = new float[16]; + /** + * BIHTree + */ + public final float[] bihSwapTmp = new float[9]; + public final ArrayList bihStack = new ArrayList(); +}