|
@@ -54,6 +54,7 @@ import com.jme3.texture.Image.Format;
|
|
import com.jme3.texture.Texture.WrapMode;
|
|
import com.jme3.texture.Texture.WrapMode;
|
|
import com.jme3.texture.Texture2D;
|
|
import com.jme3.texture.Texture2D;
|
|
import com.jme3.ui.Picture;
|
|
import com.jme3.ui.Picture;
|
|
|
|
+import com.jme3.util.TempVars;
|
|
|
|
|
|
/**
|
|
/**
|
|
*
|
|
*
|
|
@@ -179,7 +180,16 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
sceneCam.getFrustumRight(),
|
|
sceneCam.getFrustumRight(),
|
|
sceneCam.getFrustumTop(),
|
|
sceneCam.getFrustumTop(),
|
|
sceneCam.getFrustumBottom());
|
|
sceneCam.getFrustumBottom());
|
|
- reflectionCam.lookAt(targetLocation, Vector3f.UNIT_Y);
|
|
|
|
|
|
+ TempVars vars=TempVars.get();
|
|
|
|
+ vars.lock();
|
|
|
|
+ // tempVec and calcVect are just temporary vector3f objects
|
|
|
|
+ vars.vect1.set( sceneCam.getLocation() ).addLocal( sceneCam.getUp() );
|
|
|
|
+ float planeDistance = plane.pseudoDistance( vars.vect1 );
|
|
|
|
+ vars.vect2.set(plane.getNormal()).multLocal( planeDistance * 2.0f );
|
|
|
|
+ vars.vect3.set( vars.vect1.subtractLocal( vars.vect2 ) ).subtractLocal( loc ).normalizeLocal().negateLocal();
|
|
|
|
+ // now set the up vector
|
|
|
|
+ reflectionCam.lookAt(targetLocation, vars.vect3);
|
|
|
|
+ vars.unlock();
|
|
if (inv) {
|
|
if (inv) {
|
|
reflectionCam.setAxes(reflectionCam.getLeft().negateLocal(), reflectionCam.getUp(), reflectionCam.getDirection().negateLocal());
|
|
reflectionCam.setAxes(reflectionCam.getLeft().negateLocal(), reflectionCam.getUp(), reflectionCam.getDirection().negateLocal());
|
|
}
|
|
}
|