* Remove use of instance variable in BIHTree, instead use TempVars

experimental
shadowislord 11 years ago
parent e637cd0b7a
commit 67f402df75
  1. 8
      jme3-core/src/main/java/com/jme3/collision/bih/BIHTree.java
  2. 2
      jme3-core/src/main/java/com/jme3/util/TempVars.java

@ -68,7 +68,7 @@ public class BIHTree implements CollisionData {
private float[] pointData;
private int[] triIndices;
private transient CollisionResults boundResults = new CollisionResults();
// private transient CollisionResults boundResults = new CollisionResults();
private transient float[] bihSwapTmp;
private static final TriangleAxisComparator[] comparators = new TriangleAxisComparator[]
@ -398,6 +398,9 @@ public class BIHTree implements CollisionData {
BoundingVolume worldBound,
CollisionResults results) {
TempVars vars = TempVars.get();
try {
CollisionResults boundResults = vars.collisionResults;
boundResults.clear();
worldBound.collideWith(r, boundResults);
if (boundResults.size() > 0) {
@ -425,6 +428,9 @@ public class BIHTree implements CollisionData {
return root.intersectWhere(r, worldMatrix, this, tMin, tMax, results);
}
return 0;
} finally {
vars.release();
}
}
private int collideWithBoundingVolume(BoundingVolume bv,

@ -33,6 +33,7 @@ package com.jme3.util;
import com.jme3.bounding.BoundingBox;
import com.jme3.bounding.BoundingVolume;
import com.jme3.collision.CollisionResults;
import com.jme3.collision.bih.BIHNode.BIHStackData;
import com.jme3.math.*;
import com.jme3.scene.Spatial;
@ -222,6 +223,7 @@ public class TempVars {
/**
* BIHTree
*/
public final CollisionResults collisionResults = new CollisionResults();
public final float[] bihSwapTmp = new float[9];
public final ArrayList<BIHStackData> bihStack = new ArrayList<BIHStackData>();
}

Loading…
Cancel
Save