static void nashornCompiledScript(String code) throws ScriptException, NoSuchMethodException { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("nashorn"); CompiledScript compiled = ((Compilable) engine).compile(code); Object result = null; ScriptContext context = new SimpleScriptContext(); Bindings engineScope = context.getBindings(ScriptContext.ENGINE_SCOPE); long total = 0; for (int i = 0; i < RUNS; ++i) { long start = System.nanoTime(); for (int j = 0; j < BATCH; ++j) { engineScope.put("value", "12345678"); result = compiled.eval(context); } long stop = System.nanoTime(); System.out.println( "Run " + (i * BATCH + 1) + "-" + ((i + 1) * BATCH) + ": " + Math.round((stop - start) / BATCH / 1000) + " us"); total += (stop - start); } System.out.println("Average run: " + Math.round(total / RUNS / BATCH / 1000) + " us"); System.out.println( "Data is " + ((Invocable) engine).invokeMethod(result, "toString").toString()); }
public ScriptExecutor(ScriptExecutionRequest request) { this.request = request; ScriptEngineManager factory = new ScriptEngineManager(); engine = factory.getEngineByName(request.format); engine.put("output", request.output); /** */ if (request.script == null || request.script.equals("") == true) { /** Default root is the the resource folder of the current project. */ String root = "src/main/resources/library/"; if (System.getProperty("hbird.scriptlibrary") != null) { root = System.getProperty("hbird.scriptlibrary"); if (root.endsWith("/") == false) { root += "/"; } } File file = new File(root + request.name + ".js"); if (file.exists() == false) { LOG.error("Failed to find script file '" + file.getAbsolutePath() + "'."); LOG.error( "Use the runtime system property '-Dhbird.scriptlibrary=[path]' to point to the script library. Script will not be evaluated."); } else { try { request.script = FileUtils.readFileToString(file); } catch (IOException e) { e.printStackTrace(); } } } }
static void nashornCompiledScriptReturningFunction(String code, String library) throws ScriptException, NoSuchMethodException { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("nashorn"); ScriptContext libraryContext = new SimpleScriptContext(); ScriptContext privateContext = new SimpleScriptContext(); ScriptObjectMirror errorFunc = (ScriptObjectMirror) ((Compilable) engine).compile(library).eval(libraryContext); ScriptObjectMirror func = (ScriptObjectMirror) ((Compilable) engine).compile(code).eval(privateContext); Object result = null; long total = 0; for (int i = 0; i < RUNS; ++i) { long start = System.nanoTime(); for (int j = 0; j < BATCH; ++j) { result = func.call(null, "12345678", errorFunc); } long stop = System.nanoTime(); System.out.println( "Run " + (i * BATCH + 1) + "-" + ((i + 1) * BATCH) + ": " + Math.round((stop - start) / BATCH / 1000) + " us"); total += (stop - start); } System.out.println("Average run: " + Math.round(total / RUNS / BATCH / 1000) + " us"); System.out.println("Data is " + result.toString()); }
static void nashornInvokeMethod(String code) throws ScriptException, NoSuchMethodException { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("nashorn"); engine.eval(code); Invocable inv = (Invocable) engine; JSObject propertiesDict = (JSObject) engine.get("properties"); Object result = null; Object property; long total = 0; for (int i = 0; i < RUNS; ++i) { long start = System.nanoTime(); for (int j = 0; j < BATCH; ++j) { property = propertiesDict.getMember("ssn"); result = inv.invokeMethod(property, "clean", "12345678"); } long stop = System.nanoTime(); System.out.println( "Run " + (i * BATCH + 1) + "-" + ((i + 1) * BATCH) + ": " + Math.round((stop - start) / BATCH / 1000) + " us"); total += (stop - start); } System.out.println("Average run: " + Math.round(total / RUNS / BATCH / 1000) + " us"); System.out.println( "Data is " + ((Invocable) engine).invokeMethod(result, "toString").toString()); }
/* Utility functions for the binding classes */ protected static ScriptEngine createScriptEngine(String language) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(language); ScriptContext scriptContext = engine.getContext(); Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE); scriptContext.setBindings(new JSFBindings(bindings), ScriptContext.ENGINE_SCOPE); return engine; }
public void run(String arg) { ImageWindow iw = WindowManager.getCurrentWindow(); pw = jutils.getPW4SelCopy(iw); String title = pw.getTitle(); float[][] yvals = pw.getYValues(); float[][] xvals = pw.getXValues(); int length = yvals[0].length; if (pw.getShowErrors()) errs = pw.getErrors(0, false); int[] colors = pw.getColors(); colors[0] = 0; ScriptEngineManager manager = new ScriptEngineManager(); engine = manager.getEngineByName("js"); ce = (Compilable) engine; // hitcounter=0; c2 = 0.0f; iterations = 0; checkc2 = false; double[] stats = new double[3]; tempx = new float[length]; tempdata = new float[length]; System.arraycopy(xvals[0], 0, tempx, 0, length); System.arraycopy(yvals[0], 0, tempdata, 0, length); pw.addPoints(tempx, new float[tempx.length], false); series = pw.getNpts().length - 1; double[] params = new double[10]; int[] fixes = {0, 0, 0, 1, 1, 1, 1, 1, 1, 1}; init_options(params, fixes); if (!init_functions()) { return; } while (showoptions(params, fixes)) { NLLSfit_v2 fitclass; if (checkc2) { fitclass = new NLLSfit_v2(this, 0); } else { fitclass = new NLLSfit_v2(this, 0.0001, 50, 0.1); } float[] fit = fitclass.fitdata(params, fixes, constraints, yvals[0], weights, stats, true); pw.updateSeries(fit, series, false); c2 = (float) stats[1]; iterations = (int) stats[0]; } IJ.log("Chi Squared = " + (float) stats[1]); IJ.log("Iterations = " + (int) stats[0]); for (int i = 0; i < 10; i++) { IJ.log("P" + (i + 1) + " = " + (float) params[i] + " fixed = " + fixes[i]); } IJ.log("AIC = " + (float) stats[2]); // IJ.log("hits = "+hitcounter); set_options(params, fixes); }
public static void main(String[] args) throws Exception { // create a ScriptEngineManager ScriptEngineManager m = new ScriptEngineManager(); // get an instance of JavaScript script engine ScriptEngine engine = m.getEngineByName("js"); // expose the current script engine as a global variable engine.put("engine", engine); // evaluate few scripts that are bundled in "resources" eval(engine, "conc.js"); eval(engine, "gui.js"); eval(engine, "scriptpad.js"); eval(engine, "mm.js"); }
@EventHandler public void onPacketProcess(PacketProcessEvent event) { // System.out.println("Packet received: " + event.getPacket().getId() // + " (" + event.getPacket() + ")"); Packet packet = event.getPacket(); switch (packet.getId()) { case 0: connectionHandler.sendPacket(new Packet0KeepAlive(new Random().nextInt())); break; case 3: String message = ((Packet3Chat) packet).message; message = removeColors(message); System.out.println("[" + bot.getSession().getUsername() + "] " + message); String testMessage = "[MineCaptcha] To be unmuted answer this question: What is "; String testMessage2 = "Please type '"; String testMessage3 = "' to continue sending messages/commands"; if (message.contains(testMessage)) { try { String captcha = message.split(Pattern.quote(testMessage))[1].split("[ \\?]")[0]; ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("JavaScript"); String solved = engine.eval(captcha).toString(); solved = solved.split("\\.")[0]; connectionHandler.sendPacket(new Packet3Chat(solved)); } catch (Exception exception) { exception.printStackTrace(); } } else if (message.contains(testMessage2) && message.contains(testMessage3)) { try { String captcha = message.split(Pattern.quote(testMessage2))[1].split(Pattern.quote(testMessage3))[0]; connectionHandler.sendPacket(new Packet3Chat(captcha)); } catch (Exception exception) { exception.printStackTrace(); } } else if (message.startsWith("Please register with \"/register")) { String password = ""; for (int i = 0; i < 10 + random.nextInt(6); i++) password += alphas[random.nextInt(alphas.length)]; bot.say("/register " + password + " " + password); } else if (message.startsWith("/uc ")) { connectionHandler.sendPacket(new Packet3Chat(message)); } else if ((message.contains("do the crime") && message.contains("do the time")) || message.contains("You have been muted")) { connectionHandler.sendPacket(new Packet3Chat("\247Leaving!")); } else if (message.contains(owner + " has requested to teleport to you.")) { connectionHandler.sendPacket(new Packet3Chat("/tpaccept")); } else if (message.contains(owner)) { if (message.contains("Go ")) { spamMessage = message.substring(message.indexOf("Go ") + "Go ".length()); } else if (message.contains("Stop")) { spamMessage = null; bot.getTaskManager().stopAll(); } else if (message.contains("Die")) { die = true; } else if (message.contains("Say ")) { connectionHandler.sendPacket( new Packet3Chat(message.substring(message.indexOf("Say ") + "Say ".length()))); } else if (message.contains("Leave")) { connectionHandler.sendPacket(new Packet255KickDisconnect("Quit")); } else if (message.contains("Tool")) { MainPlayerEntity player = bot.getPlayer(); if (player == null) return; PlayerInventory inventory = player.getInventory(); inventory.setCurrentHeldSlot( Integer.parseInt( message.substring(message.indexOf("Tool ") + "Tool ".length()).split(" ")[0])); } else if (message.contains("DropId ")) { MainPlayerEntity player = bot.getPlayer(); PlayerInventory inventory = player.getInventory(); String substring = message.substring(message.indexOf("DropId ") + "DropId ".length()).split(" ")[0]; int id = Integer.parseInt(substring); for (int slot = 0; slot < 40; slot++) { ItemStack item = inventory.getItemAt(slot); if (item != null && item.getId() == id) { inventory.selectItemAt(slot, true); inventory.dropSelectedItem(); } } inventory.close(); } else if (message.contains("Drop")) { MainPlayerEntity player = bot.getPlayer(); PlayerInventory inventory = player.getInventory(); if (message.contains("Drop ")) { String substring = message.substring(message.indexOf("Drop ") + "Drop ".length()).split(" ")[0]; try { int slot = Integer.parseInt(substring); if (slot < 0 || slot >= 40) return; if (inventory.getItemAt(slot) != null) { inventory.selectItemAt(slot, true); inventory.dropSelectedItem(); } return; } catch (NumberFormatException e) { } } for (int slot = 0; slot < 40; slot++) { if (inventory.getItemAt(slot) != null) { inventory.selectItemAt(slot, true); inventory.dropSelectedItem(); } } inventory.close(); } else if (message.contains("Switch ")) { MainPlayerEntity player = bot.getPlayer(); PlayerInventory inventory = player.getInventory(); String substring = message.substring(message.indexOf("Switch ") + "Switch ".length()); try { int slot1 = Integer.parseInt(substring.split(" ")[0]); int slot2 = Integer.parseInt(substring.split(" ")[1]); if (slot1 < 0 || slot1 >= 45 || slot2 < 0 || slot2 >= 45) return; inventory.selectItemAt(slot1); inventory.selectItemAt(slot2); inventory.selectItemAt(slot1); } catch (NumberFormatException e) { } // inventory.close(); } else if (message.contains("Equip")) { MainPlayerEntity player = bot.getPlayer(); PlayerInventory inventory = player.getInventory(); boolean helmet = inventory.getArmorAt(0) != null; boolean chestplate = inventory.getArmorAt(1) != null; boolean leggings = inventory.getArmorAt(2) != null; boolean boots = inventory.getArmorAt(3) != null; boolean changed = false; for (int i = 0; i < 36; i++) { ItemStack item = inventory.getItemAt(i); if (item == null) continue; int armorSlot; int id = item.getId(); if (!helmet && (id == 86 || id == 298 || id == 302 || id == 306 || id == 310 || id == 314)) { armorSlot = 0; helmet = true; } else if (!chestplate && (id == 299 || id == 303 || id == 307 || id == 311 || id == 315)) { armorSlot = 1; chestplate = true; } else if (!leggings && (id == 300 || id == 304 || id == 308 || id == 312 || id == 316)) { armorSlot = 2; leggings = true; } else if (!boots && (id == 301 || id == 305 || id == 309 || id == 313 || id == 317)) { armorSlot = 3; boots = true; } else if (helmet && chestplate && leggings && boots) break; else continue; inventory.selectItemAt(i); inventory.selectArmorAt(armorSlot); changed = true; } if (!changed) { for (int i = 0; i < 36; i++) { ItemStack item = inventory.getItemAt(i); if (item != null) continue; int armorSlot; if (helmet) { armorSlot = 0; helmet = false; } else if (chestplate) { armorSlot = 1; chestplate = false; } else if (leggings) { armorSlot = 2; leggings = false; } else if (boots) { armorSlot = 3; boots = false; } else if (!helmet && !chestplate && !leggings && !boots) break; else continue; inventory.selectArmorAt(armorSlot); inventory.selectItemAt(i); } } inventory.close(); bot.say("Equipped armor."); } else if (message.contains("Owner ")) { String name = message.substring(message.indexOf("Owner ") + "Owner ".length()).split(" ")[0]; owner = name; bot.say("Set owner to " + name); } } else if (message.contains("You are not member of any faction.") && spamMessage != null && createFaction) { String msg = "/f create "; for (int i = 0; i < 7 + random.nextInt(3); i++) msg += alphas[random.nextInt(alphas.length)]; bot.say(msg); } if (message.matches("[\\*]*SPQR [\\w]{1,16} invited you to SPQR")) { bot.say("/f join SPQR"); bot.say("\247asdf"); } break; case 8: Packet8UpdateHealth updateHealth = (Packet8UpdateHealth) packet; if (updateHealth.healthMP <= 0) connectionHandler.sendPacket(new Packet205ClientCommand(1)); break; case 9: TaskManager taskManager = bot.getTaskManager(); taskManager.stopAll(); break; } }
public class GemCollector extends BaseGame { private final INPUT_ACTION_TYPE ON_PRESS_ONLY = IInputManager.INPUT_ACTION_TYPE.ON_PRESS_ONLY; private final INPUT_ACTION_TYPE REPEAT_WHILE_DOWN = IInputManager.INPUT_ACTION_TYPE.REPEAT_WHILE_DOWN; private boolean gameOver = false; private boolean player1Won = false; private boolean playerHit = false; private float playerScale = .35f; private Matrix3D playerInitM; private int player1Score = 0; private int player1HP = 3; CubeBullet player1Bullet; private HUDString player1ScoreString; private HUDString player1HPString; private HUDString player1GameOverString; private MyTerrain tb = new MyTerrain(); private TerrainBlock worldMap; private Plane ground; private Plane backWall; private Plane frontWall; private Plane leftWall; private Plane rightWall; private SkyBox skybox; private IPhysicsEngine physicsEngine; private IPhysicsObject groundPlaneP; private IPhysicsObject player; private IPhysicsObject truckP; private IPhysicsObject truckPArray[] = new IPhysicsObject[5]; private IPhysicsObject carP; private IPhysicsObject carPArray[] = new IPhysicsObject[5]; private IPhysicsObject npcPhys[] = new IPhysicsObject[25]; private int npcCount = 0; private Arrow arrow; private TriMesh cubeList[] = new TriMesh[5]; private TriMesh cylinderList[] = new TriMesh[5]; private MyPyramid pyramidList[] = new MyPyramid[5]; // private TriMesh player1; private IDisplaySystem display; private ICamera camera1; private Camera3PMouseKeyboard cam1Controller; private Camera3Pcontroller cam1GPController; private IEventManager eventMgr; private IRenderer renderer; public IAudioManager audioMgr; public Sound backgroundMusic, splatSound; public AudioResource resource1; private Group group1; private Group group2; private MySpinController spinController; private NPCcontroller npcMaster; private GameClient gameClient; private String serverAddr; private int serverPort; private ProtocolType serverProtocol; private boolean scriptCheck = true; ScriptEngineManager factory = new ScriptEngineManager(); private ScriptEngine engine = factory.getEngineByName("js"); private OBJLoader objLoader = new OBJLoader(); private TextureState chickenTextureState; private Group model; private Model3DTriMesh player1; private boolean isGPOn; private String playerModel; private boolean isFsemOn = false; // TODO Add these values to script float ballMass = 1.0f; float up[] = {0, 1, 0}; public GemCollector(String serverAddr, int serverPort) { super(); this.serverAddr = serverAddr; this.serverPort = serverPort; this.serverProtocol = ProtocolType.TCP; playerModel = "green_chicken"; } public GemCollector(String serverAddr, int serverPort, boolean fsem, int playerColor) { super(); this.serverAddr = serverAddr; this.serverPort = serverPort; this.serverProtocol = ProtocolType.TCP; isFsemOn = fsem; switch (playerColor) { case 1: playerModel = "white_chicken"; break; case 2: playerModel = "blue_chicken"; break; case 3: playerModel = "green_chicken"; break; case 4: playerModel = "purple_chicken"; break; default: playerModel = "white_chicken"; break; } } public TriMesh getAvatar() { return player1; } public void initGame() { try { this.gameClient = new GameClient(InetAddress.getByName(serverAddr), serverPort, serverProtocol, this); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (gameClient != null) { gameClient.sendJoinMessage(); } display = getDisplaySystem(); eventMgr = EventManager.getInstance(); display.setTitle("Super Duper Gem Collector X"); renderer = getDisplaySystem().getRenderer(); if (scriptCheck) { initPhysics(); initSkyBox(); initTerrain(); initGameObjects(); initPlayers(); initScript(); initInput(); initEvents(); initAudio(); } else { initPhysics(); initSkyBox(); initTerrain(); initGameObjects(); initPlayers(); initWorldAxis(); initInput(); initEvents(); initAudio(); } // HUD player1ScoreString = new HUDString("Score= " + player1Score); player1ScoreString.setLocation(0.9, 0.05); player1ScoreString.setColor(Color.GREEN); camera1.addToHUD(player1ScoreString); player1HPString = new HUDString("HP: " + player1HP); camera1.addToHUD(player1HPString); player1GameOverString = new HUDString(""); player1GameOverString.setLocation(.5, .5); camera1.addToHUD(player1GameOverString); } private void initScript() { String scriptName = "src" + File.separator + "jscripts" + File.separator + "CreateWorld.js"; List<ScriptEngineFactory> list = factory.getEngineFactories(); File scriptFile = new File(scriptName); try { FileReader fileReader = new FileReader(scriptFile); engine.eval(fileReader); fileReader.close(); } catch (FileNotFoundException e1) { System.out.println(scriptName + " not found " + e1); } catch (IOException e2) { System.out.println("IO issue detected " + scriptName + e2); } catch (ScriptException e3) { System.out.println("ScriptException in " + scriptName + e3); } catch (NullPointerException e4) { System.out.println("Null pointer in" + scriptName + e4); } addGameWorldObject((SceneNode) engine.get("worldAxis")); } public void start() { super.start(); } private void initPhysics() { String engine = "sage.physics.JBullet.JBulletPhysicsEngine"; physicsEngine = PhysicsEngineFactory.createPhysicsEngine(engine); physicsEngine.initSystem(); float[] gravity = {0, -10f, 0}; physicsEngine.setGravity(gravity); } protected void initSystem() { IDisplaySystem display = createDisplaySystem(); setDisplaySystem(display); IInputManager inputManager = new InputManager(); setInputManager(inputManager); ArrayList<SceneNode> gameWorld = new ArrayList<SceneNode>(); setGameWorld(gameWorld); } private IDisplaySystem createDisplaySystem() { IDisplaySystem display = new MyDisplaySystem(800, 600, 32, 60, false, "sage.renderer.jogl.JOGLRenderer"); System.out.print("\nWaiting for display creation"); int count = 0; while (!display.isCreated()) { try { Thread.sleep(10); } catch (InterruptedException e) { throw new RuntimeException("Diplay creation interrupted"); } count++; System.out.print("+"); if (count % 80 == 0) { System.out.println(); } if (count > 2000) { throw new RuntimeException("Unable to create display"); } } System.out.println("\nDone"); return display; } private void initPlayers() { File file = new File(File.pathSeparator); System.out.println(file.getAbsolutePath()); OgreXMLParser loader = new OgreXMLParser(); try { model = loader.loadModel( "src/animated_objects/Cube.mesh.xml", "src/animated_objects/chicken.material", "src/animated_objects/Cube.skeleton.xml"); model.updateGeometricState(0, true); java.util.Iterator<SceneNode> modelIterator = model.iterator(); player1 = (Model3DTriMesh) modelIterator.next(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } Texture chickenTexture = TextureManager.loadTexture2D("src/animated_objects/green_chicken.jpg"); chickenTexture.setApplyMode(sage.texture.Texture.ApplyMode.Replace); chickenTextureState = (TextureState) display.getRenderer().createRenderState(RenderState.RenderStateType.Texture); chickenTextureState.setTexture(chickenTexture, 0); chickenTextureState.setEnabled(true); player1.setRenderState(chickenTextureState); player1.updateRenderStates(); player = physicsEngine.addSphereObject( physicsEngine.nextUID(), ballMass, player1.getWorldTransform().getValues(), 1.0f); player.setBounciness(0.0f); player1.setPhysicsObject(player); player1.scale(.35f, .35f, .35f); addGameWorldObject(player1); // player1.translate(133f, 13f, 123f); playerInitM = new Matrix3D(); playerInitM.concatenate((Matrix3D) player1.getLocalTranslation().clone()); playerInitM.concatenate((Matrix3D) player1.getLocalRotation().clone()); playerInitM.concatenate((Matrix3D) player1.getLocalScale().clone()); camera1 = new JOGLCamera(renderer); camera1.setPerspectiveFrustum(60, 1, 1, 1000); camera1.setViewport(0.0, 1.0, 0.0, 1); } public void initPlayerLocation(Vector3D loc) { player1.translate((float) loc.getX(), (float) loc.getY(), (float) loc.getZ()); // player1.translate(133f, 13f, 123f); } private void initSkyBox() { skybox = new SkyBox("SkyBox", 20.0f, 20.0f, 20.0f); Texture nTexture = TextureManager.loadTexture2D("src/Textures/SkyBox/northSkybox.bmp"); Texture sTexture = TextureManager.loadTexture2D("src/Textures/SkyBox/southSkybox.bmp"); Texture eTexture = TextureManager.loadTexture2D("src/Textures/SkyBox/eastSkybox.bmp"); Texture wTexture = TextureManager.loadTexture2D("src/Textures/SkyBox/westSkybox.bmp"); Texture uTexture = TextureManager.loadTexture2D("src/Textures/SkyBox/upSkybox.bmp"); skybox.setTexture(SkyBox.Face.North, nTexture); skybox.setTexture(SkyBox.Face.South, sTexture); skybox.setTexture(SkyBox.Face.East, eTexture); skybox.setTexture(SkyBox.Face.West, wTexture); skybox.setTexture(SkyBox.Face.Up, uTexture); addGameWorldObject(skybox); } private void initTerrain() { worldMap = tb.initTerrain(display); // worldMap.setCullMode(CULL_MODE.NEVER); // worldMap.updateLocalBound(); // worldMap.setShowBound(true); groundPlaneP = physicsEngine.addStaticPlaneObject( physicsEngine.nextUID(), worldMap.getWorldTransform().getValues(), up, 12.0f); groundPlaneP.setBounciness(1.0f); worldMap.setPhysicsObject(groundPlaneP); addGameWorldObject(worldMap); } private void initGameObjects() { // group1 = new Group(); // group2 = new Group(); // group1.addChild(group2); arrow = new Arrow(); addGameWorldObject(arrow); Matrix3D tempM; TriMesh otherCube; Random rand = new Random(); for (int i = 0; i < cubeList.length; i++) { otherCube = objLoader.loadModel("src/Models/car.obj"); tempM = otherCube.getLocalTranslation(); if (i > 10) { tempM.translate(rand.nextInt(30) * 1, 30, rand.nextInt(30) * 1); } tempM.translate(rand.nextInt(30) + 1, 30, rand.nextInt(30) + 1); otherCube.setLocalTranslation(tempM); otherCube.updateWorldBound(); otherCube.updateGeometricState(1.0f, true); float angVeloc[] = {rand.nextInt(10), rand.nextInt(10), rand.nextInt(10)}; carPArray[i] = physicsEngine.addSphereObject( physicsEngine.nextUID(), ballMass, otherCube.getWorldTransform().getValues(), 1.0f); carPArray[i].setBounciness(1.0f); carPArray[i].setAngularVelocity(angVeloc); otherCube.setPhysicsObject(carPArray[i]); addGameWorldObject(otherCube); // group2.addChild(otherCube); cubeList[i] = otherCube; } TriMesh otherCylinder; for (int i = 0; i < cylinderList.length; i++) { otherCylinder = objLoader.loadModel("src/Models/truck.obj"); tempM = otherCylinder.getLocalTranslation(); // if(i > 10){ // tempM.translate(rand.nextInt(30)*1, 30, rand.nextInt(30)*1); // } tempM.translate(rand.nextInt(90), 90, rand.nextInt(90)); otherCylinder.setLocalTranslation(tempM); otherCylinder.updateWorldBound(); truckPArray[i] = physicsEngine.addSphereObject( physicsEngine.nextUID(), ballMass, otherCylinder.getWorldTransform().getValues(), 1.0f); truckPArray[i].setBounciness(0.5f); otherCylinder.setPhysicsObject(truckPArray[i]); addGameWorldObject(otherCylinder); // group2.addChild(otherCylinder); cylinderList[i] = otherCylinder; } MyPyramid otherPyramid; for (int i = 0; i < pyramidList.length; i++) { otherPyramid = new MyPyramid(); tempM = otherPyramid.getLocalTranslation(); // if(i > 10){ // tempM.translate(rand.nextInt(30)*-1, 0, rand.nextInt(45)*-1); // } // tempM.translate(rand.nextInt(30), 0, rand.nextInt(45)*-1); if (i > 10) { tempM.translate(rand.nextInt(30) * 1, 30, rand.nextInt(30) * 1); } tempM.translate(rand.nextInt(30) + 1, 30, rand.nextInt(30) + 1); otherPyramid.setLocalTranslation(tempM); otherPyramid.updateWorldBound(); addGameWorldObject(otherPyramid); // group2.addChild(otherPyramid); pyramidList[i] = otherPyramid; } // MyTranslateController transController = new MyTranslateController(); // spinController = new MySpinController(); // group1.addController(transController); // transController.addControlledNode(group1); // group2.addController(spinController); // spinController.addControlledNode(group2); // ballP = physicsEngine.addSphereObject(physicsEngine.nextUID(), // ballMass, group1.getWorldTransform().getValues(),1.0f); // ballP.setBounciness(1.0f); // group1.setPhysicsObject(ballP); // addGameWorldObject(group1); super.update(0); } // Adds world axis to the game public void initWorldAxis() { Point3D origin = new Point3D(0, 0, 0); Point3D xEnd = new Point3D(100, 0, 0); Point3D yEnd = new Point3D(0, 100, 0); Point3D zEnd = new Point3D(0, 0, 100); Line xAxis = new Line(origin, xEnd, Color.red, 2); Line yAxis = new Line(origin, yEnd, Color.green, 2); Line zAxis = new Line(origin, zEnd, Color.blue, 2); addGameWorldObject(xAxis); addGameWorldObject(yAxis); addGameWorldObject(zAxis); } public void initAudio() { audioMgr = AudioManagerFactory.createAudioManager("sage.audio.joal.JOALAudioManager"); if (!audioMgr.initialize()) { System.out.println("Audio Manager failed to initialize!"); return; } resource1 = audioMgr.createAudioResource( "src/sounds/Kai_Engel_-_07_-_February.wav", AudioResourceType.AUDIO_SAMPLE); // resource1 = audioMgr.createAudioResource("src/12345.wav", // AudioResourceType.AUDIO_SAMPLE); // System.out.println(resource1.getIsLoaded()); // System.out.println(resource1.getAudioFormat()); // System.out.println(resource1.getFileName()); // System.out.println(resource1.getAudioType()); backgroundMusic = new Sound(resource1, SoundType.SOUND_EFFECT, 100, true); backgroundMusic.initialize(audioMgr); backgroundMusic.setMaxDistance(50.0f); backgroundMusic.setMinDistance(3.0f); backgroundMusic.setRollOff(5.0f); backgroundMusic.setLocation(new Point3D(player1.getWorldTranslation().getCol(3))); setEarParameters(); // musicSound.play(); backgroundMusic.play(); resource1 = audioMgr.createAudioResource( "src/sounds/Splat-SoundBible.wav", AudioResourceType.AUDIO_SAMPLE); splatSound = new Sound(resource1, SoundType.SOUND_EFFECT, 100, true); splatSound.initialize(audioMgr); splatSound.setMaxDistance(50.0f); splatSound.setMinDistance(3.0f); splatSound.setRollOff(5.0f); splatSound.setLocation(new Point3D(player1.getWorldTranslation().getCol(3))); } public void setEarParameters() { Matrix3D avDir = (Matrix3D) (player1.getWorldRotation().clone()); float camAz; if (!isGPOn) { camAz = cam1Controller.getAzimuth(); } else { camAz = cam1GPController.getAzimuth(); } avDir.rotateY(180.0f - camAz); Vector3D camDir = new Vector3D(0, 0, 1); camDir = camDir.mult(avDir); audioMgr.getEar().setLocation(camera1.getLocation()); audioMgr.getEar().setOrientation(camDir, new Vector3D(0, 1, 0)); } // Initializes controls public void initInput() { IInputManager im = getInputManager(); String gpName = im.getFirstGamepadName(); String kbName = im.getKeyboardName(); IAction quitGame = new QuitGameAction(this); MoveFowardAction mvFoward = new MoveFowardAction(player1, worldMap); MoveBackwardAction mvBackward = new MoveBackwardAction(player1, worldMap); StrafeLeftAction strafeLeftAction = new StrafeLeftAction(player1, worldMap); StrafeRightAction strafeRightAction = new StrafeRightAction(player1, worldMap); YawPosAction yawPosAction = new YawPosAction(player1); YawNegAction yawNegAction = new YawNegAction(player1); PitchPosAction pitchPosAction = new PitchPosAction(player1); PitchNegAction pitchNegAction = new PitchNegAction(player1); im.associateAction(kbName, Identifier.Key.W, mvFoward, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.S, mvBackward, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.A, strafeLeftAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.D, strafeRightAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.LEFT, yawPosAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.RIGHT, yawNegAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.UP, pitchPosAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.DOWN, pitchNegAction, REPEAT_WHILE_DOWN); im.associateAction(kbName, Identifier.Key.ESCAPE, quitGame, ON_PRESS_ONLY); if (gpName != null) { MoveOnYAxisAction moveOnY = new MoveOnYAxisAction(player1, worldMap); MoveOnXAxisAction moveOnX = new MoveOnXAxisAction(player1, worldMap); im.associateAction(gpName, Identifier.Axis.Y, moveOnY, REPEAT_WHILE_DOWN); im.associateAction(gpName, Identifier.Axis.X, moveOnX, REPEAT_WHILE_DOWN); im.associateAction(gpName, Identifier.Button._1, quitGame, ON_PRESS_ONLY); cam1GPController = new Camera3Pcontroller(camera1, player1, im, gpName); isGPOn = true; } else { String mouseName = im.getMouseName(); cam1Controller = new Camera3PMouseKeyboard(camera1, player1, im, mouseName); isGPOn = false; } } private void initEvents() { eventMgr.addListener(ground, CrashEvent.class); eventMgr.addListener(backWall, CrashEvent.class); eventMgr.addListener(frontWall, CrashEvent.class); eventMgr.addListener(leftWall, CrashEvent.class); eventMgr.addListener(rightWall, CrashEvent.class); } public void update(float elapsedTimeMS) { super.update(elapsedTimeMS); player1.updateAnimation(elapsedTimeMS); if (!isGPOn) { cam1Controller.update(elapsedTimeMS); } else { cam1GPController.update(elapsedTimeMS); } if (gameClient != null) { gameClient.sendUpdate(getPlayerPosition()); gameClient.processPackets(); } physicsEngine.update(20.0f); Matrix3D mat; Vector3D translateVec; for (SceneNode s : getGameWorld()) { if (s.getPhysicsObject() != null) { if (s.getWorldBound().intersects(player1.getWorldBound()) && (s.getName().equals("src/Models/car.obj") || s.getName().equals("src/Models/truck.obj"))) { playerHit = true; s.setLocalTranslation(new Matrix3D()); s.translate(0, 10, 0); } if (s.getName().equals(player1.getName())) { mat = s.getLocalTranslation(); translateVec = mat.getCol(3); s.getLocalTranslation().setCol(3, translateVec); } else { mat = new Matrix3D(s.getPhysicsObject().getTransform()); translateVec = mat.getCol(3); s.getLocalTranslation().setCol(3, translateVec); } } else if (s instanceof TriMesh && s.getWorldBound().intersects(player1.getWorldBound()) && (s.getName().equals("src/Models/car.obj") || s.getName().equals("src/Models/truck.obj"))) { playerHit = true; } } player1ScoreString.setText("Score = " + player1Score); player1HPString.setText("HP: " + player1HP); Matrix3D camTranslation = new Matrix3D(); camTranslation.translate( camera1.getLocation().getX(), camera1.getLocation().getY(), camera1.getLocation().getZ()); skybox.setLocalTranslation(camTranslation); if (playerHit) { splatSound.play(100, false); player1.translate(133f, 13f, 123f); playerHit = false; } if (gameOver) { player1GameOverString.setText("LOOOOOOOSER!"); } else if (!player1Won) { if (checkWin()) { gameClient.sendWonMessage(); player1Won = true; player1GameOverString.setText("WINNER!"); } } } private void p1Scored() { player1Score++; // spinController.spin(); } protected void render() { renderer.setCamera(camera1); super.render(); } protected void shutdown() { super.shutdown(); backgroundMusic.release(audioMgr); splatSound.release(audioMgr); resource1.unload(); audioMgr.shutdown(); if (gameClient != null) { gameClient.sendByeMessage(); try { gameClient.shutdown(); } catch (IOException e) { e.printStackTrace(); } } display.close(); } public void addGhost(SceneNode ghost) { System.out.println("ghost added"); ghost.updateWorldBound(); addGameWorldObject(ghost); } public void addNPC(SceneNode npc) { npcPhys[npcCount] = physicsEngine.addSphereObject( physicsEngine.nextUID(), ballMass, npc.getWorldTransform().getValues(), 1.0f); npcPhys[npcCount].setBounciness(0.0f); npc.setPhysicsObject(npcPhys[npcCount]); npc.updateWorldBound(); npcCount++; addGameWorldObject(npc); } public void removeGhost(SceneNode ghost) { removeGameWorldObject(ghost); } public void setIsConnected(boolean b) { // TODO Auto-generated method stub } public Matrix3D getPlayerPosition() { Matrix3D playerM = new Matrix3D(); playerM.concatenate(player1.getLocalTranslation()); playerM.concatenate(player1.getLocalRotation()); return playerM; } private boolean checkWin() { if (player1.getLocalTranslation().getCol(3).getX() >= 365) { return true; } else { return false; } } public void setGameOver(boolean state) { shutdown(); } }