Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.jme3.app.SimpleApplication;
- import com.jme3.asset.plugins.ZipLocator;
- import com.jme3.bullet.BulletAppState;
- import com.jme3.bullet.collision.PhysicsCollisionEvent;
- import com.jme3.bullet.collision.shapes.CapsuleCollisionShape;
- import com.jme3.bullet.collision.shapes.CollisionShape;
- import com.jme3.bullet.control.CharacterControl;
- import com.jme3.bullet.control.RigidBodyControl;
- import com.jme3.bullet.util.CollisionShapeFactory;
- import com.jme3.input.KeyInput;
- import com.jme3.input.controls.ActionListener;
- import com.jme3.input.controls.KeyTrigger;
- import com.jme3.light.AmbientLight;
- import com.jme3.light.DirectionalLight;
- import com.jme3.math.ColorRGBA;
- import com.jme3.math.Vector3f;
- import com.jme3.scene.Node;
- import com.jme3.scene.Spatial;
- import com.jme3.*;
- import com.jme3.bullet.collision.PhysicsCollisionListener;
- import com.jme3.bullet.collision.PhysicsCollisionObject;
- import com.jme3.bullet.collision.PhysicsRayTestResult;
- import com.jme3.bullet.collision.shapes.BoxCollisionShape;
- import com.jme3.bullet.collision.shapes.CompoundCollisionShape;
- import com.jme3.collision.CollisionResults;
- import com.jme3.font.BitmapText;
- import com.jme3.material.Material;
- import com.jme3.math.FastMath;
- import com.jme3.math.Quaternion;
- import com.jme3.math.Ray;
- import com.jme3.scene.Geometry;
- import com.jme3.scene.shape.Box;
- import com.jme3.scene.shape.Cylinder;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- import java.util.Scanner;
- import jme3tools.optimize.GeometryBatchFactory;
- public class TrapFactory {
- private ArrayList<Node> traplist;
- private ArrayList<ArrayList<Spatial>> mapTrapList;
- private File file;
- private Material trapmat;
- private BulletAppState bulletAppState;
- private String TrapNodeName, TrapName, PlayerNodeName;
- private Node rootNode;
- public TrapFactory(ArrayList<Node> traplist1, Material mat, BulletAppState appstate, String trn, String tn, String pn, Node rootnode) {
- traplist = traplist1;
- mapTrapList = new ArrayList<ArrayList<Spatial>>();
- trapmat = mat;
- bulletAppState = appstate;
- TrapNodeName = trn;
- TrapName = tn;
- PlayerNodeName = pn;
- rootNode = rootnode;
- }
- public ArrayList<Node> gettraplist() {
- return traplist;
- }
- public ArrayList<ArrayList<Spatial>> parseFile(String filename) {
- Scanner sc = null;
- Scanner lc = null;
- if (!filename.equals("")) {
- file = new File(filename);
- }
- try {
- sc = new Scanner(file);
- lc = new Scanner(file);
- } catch (FileNotFoundException e) {
- System.out.println("FILE NOT FOUND");
- }
- int linecount = 0;
- while (lc.hasNextLine()) {
- String trash = lc.nextLine();
- linecount++;
- }
- ArrayList<Spatial> trapList = null;
- int counter = 0;
- while (sc.hasNextLine()) {
- ArrayList<String> stringList = new ArrayList<String>();
- String s = sc.nextLine();
- for (int i = 0; i < s.length(); i++) {
- char ch = s.charAt(i);
- String sh = Character.toString(ch);
- stringList.add(sh);
- }
- Node nottrashnode = new Node("nottrash!");
- trapList = new ArrayList<Spatial>();
- for (int i = 0; i < stringList.size(); i++) {
- if(stringList.get(i).equals("t")){
- trapList.add(nottrashnode);
- }else{
- trapList.add(makeTrapRepresentation());
- }
- }
- mapTrapList.add(trapList);
- counter++;
- }
- System.out.println();
- return mapTrapList;
- }
- private Node makeATrap() {
- TrapControl trapcontrol = new TrapControl(TrapNodeName, TrapName, PlayerNodeName);
- Node trapnode = new Node(TrapNodeName);
- Box box = new Box(Vector3f.ZERO, 3, 0.2f, 3);
- Geometry trap = new Geometry(TrapName, box);
- trap.setMaterial(trapmat);
- trap.setLocalTranslation(0, 1, 0);
- trapnode.attachChild(trap);
- //rootNode.attachChild(trapnode);
- RigidBodyControl myControl = new RigidBodyControl(0f);
- //myControl.setEnabled(true);
- trapnode.addControl(myControl);
- trapnode.addControl(trapcontrol);
- trapcontrol.setSpatial();
- bulletAppState.getPhysicsSpace().addCollisionListener(trapcontrol);
- bulletAppState.getPhysicsSpace().add(myControl);
- traplist.add(trapnode);
- return trapnode;
- }
- public Spatial makeTrapRepresentation() {
- Node n = new Node("trash");
- return n;
- }
- public void attachMapToNode(Node n) {
- for (int j = 0; j < mapTrapList.size(); j++) {
- for (int i = 0; i < mapTrapList.size(); i++) {
- if (!mapTrapList.get(j).get(i).getName().equals("trash")) {
- float sizing = 5f;//Add a way to get this from square class
- Node trapnode = makeATrap();
- trapnode.setLocalTranslation((sizing * i * 2), 1, (sizing * j * 2));
- trapnode.getControl(RigidBodyControl.class).setPhysicsLocation(new Vector3f((sizing * i * 2), 5, (sizing * j * 2)));
- n.attachChild(trapnode);
- }
- }
- }
- }
- public void checkForUsedTraps() {
- for (Node s : traplist) {
- if (!s.getControl(TrapControl.class).getarmed()) {
- s.getControl(RigidBodyControl.class).getPhysicsSpace().removeCollisionListener(s.getControl(TrapControl.class));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement