159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/* 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * To change this template, choose Tools | Templates and open the template in 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the editor. 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage jme3test.batching; 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.app.SimpleApplication; 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.input.KeyInput; 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.input.controls.ActionListener; 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.input.controls.KeyTrigger; 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material; 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.ColorRGBA; 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.FastMath; 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Quaternion; 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Vector3f; 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.post.FilterPostProcessor; 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.post.filters.BloomFilter; 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.*; 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.debug.Arrow; 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Box; 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.system.AppSettings; 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.system.NanoTimer; 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.ArrayList; 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.Random; 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class TestBatchNodeCluster extends SimpleApplication { 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public static void main(String[] args) { 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TestBatchNodeCluster app = new TestBatchNodeCluster(); 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta settingst = new AppSettings(true); 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //settingst.setFrameRate(75); 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta settingst.setResolution(640, 480); 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta settingst.setVSync(false); 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta settingst.setFullscreen(false); 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta app.setSettings(settingst); 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta app.setShowSettings(false); 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta app.start(); 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private ActionListener al = new ActionListener() { 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void onAction(String name, boolean isPressed, float tpf) { 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (name.equals("Start Game")) { 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// randomGenerator(); 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta }; 4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected Random rand = new Random(); 4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int maxCubes = 2000; 4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int startAt = 0; 5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected static int xPositions = 0, yPositions = 0, zPositions = 0; 5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int returner = 0; 5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected ArrayList<Integer> xPosition = new ArrayList<Integer>(); 5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected ArrayList<Integer> yPosition = new ArrayList<Integer>(); 5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected ArrayList<Integer> zPosition = new ArrayList<Integer>(); 5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int xLimitf = 60, xLimits = -60, yLimitf = 60, yLimits = -20, zLimitf = 60, zLimits = -60; 5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int circ = 8;//increases by 8 every time. 5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int dynamic = 4; 5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected static AppSettings settingst; 5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected boolean isTrue = true; 6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private int lineLength = 50; 6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected BatchNode batchNode; 6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material mat1; 6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material mat2; 6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material mat3; 6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material mat4; 6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Node terrain; 6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //protected 6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// protected Geometry player; 6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleInitApp() { 7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta timer = new NanoTimer(); 7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batchNode = new SimpleBatchNode("BatchNode"); 7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta xPosition.add(0); 7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta yPosition.add(0); 7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta zPosition.add(0); 8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat1.setColor("Color", ColorRGBA.White); 8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat1.setColor("GlowColor", ColorRGBA.Blue.mult(10)); 8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat2.setColor("Color", ColorRGBA.White); 8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat2.setColor("GlowColor", ColorRGBA.Red.mult(10)); 8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat3 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat3.setColor("Color", ColorRGBA.White); 9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat3.setColor("GlowColor", ColorRGBA.Yellow.mult(10)); 9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat4 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat4.setColor("Color", ColorRGBA.White); 9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mat4.setColor("GlowColor", ColorRGBA.Orange.mult(10)); 9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta randomGenerator(); 9859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //rootNode.attachChild(SkyFactory.createSky( 10059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // assetManager, "Textures/SKY02.zip", false)); 10159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta inputManager.addMapping("Start Game", new KeyTrigger(KeyInput.KEY_J)); 10259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta inputManager.addListener(al, new String[]{"Start Game"}); 10359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cam.setLocation(new Vector3f(-34.403286f, 126.65158f, 434.791f)); 10659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cam.setRotation(new Quaternion(0.022630932f, 0.9749435f, -0.18736298f, 0.11776358f)); 10759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batchNode.batch(); 11059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 11159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 11259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta terrain = new Node("terrain"); 11359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta terrain.setLocalTranslation(50, 0, 50); 11459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta terrain.attachChild(batchNode); 11559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 11659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta flyCam.setMoveSpeed(100); 11759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta rootNode.attachChild(terrain); 11859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Vector3f pos = new Vector3f(-40, 0, -40); 11959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batchNode.setLocalTranslation(pos); 12059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Arrow a = new Arrow(new Vector3f(0, 50, 0)); 12359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Geometry g = new Geometry("a", a); 12459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta g.setLocalTranslation(terrain.getLocalTranslation()); 12559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 12659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta m.setColor("Color", ColorRGBA.Blue); 12759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta g.setMaterial(m); 12859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta FilterPostProcessor fpp = new FilterPostProcessor(assetManager); 13259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta fpp.addFilter(new BloomFilter(BloomFilter.GlowMode.Objects)); 13359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// SSAOFilter ssao = new SSAOFilter(8.630104f,22.970434f,2.9299977f,0.2999997f); 13459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// fpp.addFilter(ssao); 13559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta viewPort.addProcessor(fpp); 13659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // viewPort.setBackgroundColor(ColorRGBA.DarkGray); 13759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 13859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void randomGenerator() { 14059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta for (int i = startAt; i < maxCubes - 1; i++) { 14159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta randomize(); 14259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Geometry box = new Geometry("Box" + i, new Box(Vector3f.ZERO, 1, 1, 1)); 14359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setLocalTranslation(new Vector3f(xPosition.get(xPosition.size() - 1), 14459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta yPosition.get(yPosition.size() - 1), 14559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta zPosition.get(zPosition.size() - 1))); 14659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batchNode.attachChild(box); 14759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (i < 500) { 14859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setMaterial(mat1); 14959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (i < 1000) { 15059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 15159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setMaterial(mat2); 15259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (i < 1500) { 15359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 15459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setMaterial(mat3); 15559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 15659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 15759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setMaterial(mat4); 15859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 15959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 16059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 16159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 16259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 16359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// public BatchNode randomBatch() { 16459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// 16559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// int randomn = rand.nextInt(4); 16659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// if (randomn == 0) { 16759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// return blue; 16859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } else if (randomn == 1) { 16959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// return brown; 17059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } else if (randomn == 2) { 17159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// return pink; 17259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } else if (randomn == 3) { 17359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// return orange; 17459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } 17559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// return null; 17659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } 17759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public ColorRGBA randomColor() { 17859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta ColorRGBA color = ColorRGBA.Black; 17959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int randomn = rand.nextInt(4); 18059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (randomn == 0) { 18159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta color = ColorRGBA.Orange; 18259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (randomn == 1) { 18359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta color = ColorRGBA.Blue; 18459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (randomn == 2) { 18559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta color = ColorRGBA.Brown; 18659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (randomn == 3) { 18759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta color = ColorRGBA.Magenta; 18859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 18959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return color; 19059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 19159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 19259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void randomize() { 19359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int xpos = xPosition.get(xPosition.size() - 1); 19459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int ypos = yPosition.get(yPosition.size() - 1); 19559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int zpos = zPosition.get(zPosition.size() - 1); 19659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int x = 0; 19759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int y = 0; 19859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int z = 0; 19959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta boolean unTrue = true; 20059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta while (unTrue) { 20159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta unTrue = false; 20259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta boolean xChanged = false; 20359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta x = 0; 20459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = 0; 20559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta z = 0; 20659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (xpos >= lineLength * 2) { 20759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta x = 2; 20859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta xChanged = true; 20959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 21059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta x = xPosition.get(xPosition.size() - 1) + 2; 21159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 21259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (xChanged) { 21359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //y = yPosition.get(yPosition.size() - lineLength) + 2; 21459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 21559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = rand.nextInt(3); 21659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (yPosition.size() > lineLength) { 21759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (yPosition.size() > 51) { 21859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (y == 0 && ypos < yLimitf && getym(lineLength) > ypos - 2) { 21959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 22059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && ypos > yLimits && getym(lineLength) < ypos + 2) { 22159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 22259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 2 && getym(lineLength) > ypos - 2 && getym(lineLength) < ypos + 2) { 22359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos; 22459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 22559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (ypos >= yLimitf) { 22659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 22759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (ypos <= yLimits) { 22859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 22959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 0 && getym(lineLength) >= ypos - 4) { 23059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 23159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 0 && getym(lineLength) >= ypos - 2) { 23259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos; 23359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && getym(lineLength) >= ypos + 4) { 23459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 23559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && getym(lineLength) >= ypos + 2) { 23659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos; 23759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 2 && getym(lineLength) <= ypos - 2) { 23859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 23959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 2 && getym(lineLength) >= ypos + 2) { 24059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 24159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 24259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta System.out.println("wtf"); 24359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 24459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 24559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (yPosition.size() == lineLength) { 24659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (y == 0 && ypos < yLimitf) { 24759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = getym(lineLength) + 2; 24859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && ypos > yLimits) { 24959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = getym(lineLength) - 2; 25059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 25159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 25259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 25359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (y == 0 && ypos < yLimitf) { 25459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 25559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && ypos > yLimits) { 25659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 25759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 2) { 25859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos; 25959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 0 && ypos >= yLimitf) { 26059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos - 2; 26159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (y == 1 && ypos <= yLimits) { 26259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta y = ypos + 2; 26359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 26459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 26559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 26659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (xChanged) { 26759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta z = zpos + 2; 26859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 26959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta z = zpos; 27059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 27159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// for (int i = 0; i < xPosition.size(); i++) 27259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// { 27359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// if (x - xPosition.get(i) <= 1 && x - xPosition.get(i) >= -1 && 27459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// y - yPosition.get(i) <= 1 && y - yPosition.get(i) >= -1 27559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// &&z - zPosition.get(i) <= 1 && z - zPosition.get(i) >= 27659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// -1) 27759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// { 27859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// unTrue = true; 27959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } 28059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// } 28159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 28259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta xPosition.add(x); 28359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta yPosition.add(y); 28459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta zPosition.add(z); 28559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 28659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 28759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getxm(int i) { 28859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return xPosition.get(xPosition.size() - i); 28959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 29059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 29159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getym(int i) { 29259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return yPosition.get(yPosition.size() - i); 29359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 29459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 29559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getzm(int i) { 29659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return zPosition.get(zPosition.size() - i); 29759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 29859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 29959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getx(int i) { 30059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return xPosition.get(i); 30159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 30259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 30359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int gety(int i) { 30459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return yPosition.get(i); 30559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 30659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 30759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getz(int i) { 30859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return zPosition.get(i); 30959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 31059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta long nbFrames = 0; 31159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta long cullTime = 0; 31259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float time = 0; 31359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Vector3f lookAtPos = new Vector3f(0, 0, 0); 31459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float xpos = 0; 31559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Spatial box; 31659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 31759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 31859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleUpdate(float tpf) { 31959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta time += tpf; 32059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int random = rand.nextInt(2000); 32159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float mult1 = 1.0f; 32259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float mult2 = 1.0f; 32359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (random < 500) { 32459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult1 = 1.0f; 32559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult2 = 1.0f; 32659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (random < 1000) { 32759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult1 = -1.0f; 32859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult2 = 1.0f; 32959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (random < 1500) { 33059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult1 = 1.0f; 33159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult2 = -1.0f; 33259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (random <= 2000) { 33359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult1 = -1.0f; 33459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta mult2 = -1.0f; 33559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 33659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box = batchNode.getChild("Box" + random); 33759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (box != null) { 33859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Vector3f v = box.getLocalTranslation(); 33959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta box.setLocalTranslation(v.x + FastMath.sin(time * mult1) * 20, v.y + (FastMath.sin(time * mult1) * FastMath.cos(time * mult1) * 20), v.z + FastMath.cos(time * mult2) * 20); 34059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 34159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta terrain.setLocalRotation(new Quaternion().fromAngleAxis(time, Vector3f.UNIT_Y)); 34259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 34359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 34459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 34559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 346