From 9956d4ad5f1b9680a0a5e2c7da0cd0ea68f26737 Mon Sep 17 00:00:00 2001 From: Phillip Date: Mon, 14 Mar 2011 17:48:13 +0000 Subject: Added FireableEmitter (DO NOT KNOW HOW TO ATTACH TO TANK YET) --- .../objects/emitters/FireableEmitter.java | 42 ++++++++++++++++++++++ .../objects/remote/RemoteObjectMenuItem.java | 2 -- src/tesseract/objects/remote/TankMenuItem.java | 1 - src/tesseract/objects/tank/Body.java | 11 +++++- src/tesseract/objects/tank/Tank.java | 3 ++ 5 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/tesseract/objects/emitters/FireableEmitter.java (limited to 'src/tesseract/objects') diff --git a/src/tesseract/objects/emitters/FireableEmitter.java b/src/tesseract/objects/emitters/FireableEmitter.java new file mode 100644 index 0000000..881e436 --- /dev/null +++ b/src/tesseract/objects/emitters/FireableEmitter.java @@ -0,0 +1,42 @@ +package tesseract.objects.emitters; + +import java.util.LinkedList; +import java.util.List; + +import javax.vecmath.Color3f; +import javax.vecmath.Vector3f; + +import tesseract.objects.Particle; +import tesseract.objects.PhysicalObject; + +public class FireableEmitter extends PhysicalObject { + Color3f myColor; + + public FireableEmitter(Vector3f position, Vector3f direction, Color3f color) { + super(position, Float.POSITIVE_INFINITY); + myColor = color; + } + + public void moveMe (Vector3f newPosition) { + position = newPosition; + } + + /** + * Update State and maybe generate a new object. + * + * @param duration The length of time that has passed. + * @return A list of new objects to add to the world. + */ + public List spawnChildren() { + List children = super.spawnChildren(0f); + + if (children == null) { + children = new LinkedList(); + } + + children.add(new Particle(this.position, myColor)); + + return children; + } + +} diff --git a/src/tesseract/objects/remote/RemoteObjectMenuItem.java b/src/tesseract/objects/remote/RemoteObjectMenuItem.java index 49b8be6..15aa903 100644 --- a/src/tesseract/objects/remote/RemoteObjectMenuItem.java +++ b/src/tesseract/objects/remote/RemoteObjectMenuItem.java @@ -5,8 +5,6 @@ import java.awt.event.ActionListener; import javax.swing.JMenuItem; -import tesseract.World; - public abstract class RemoteObjectMenuItem extends JMenuItem { protected RemoteObjectMenuItem(final String theLabel, final RemoteObjectMenu theMenu) { diff --git a/src/tesseract/objects/remote/TankMenuItem.java b/src/tesseract/objects/remote/TankMenuItem.java index 4e18a9c..85a2d64 100644 --- a/src/tesseract/objects/remote/TankMenuItem.java +++ b/src/tesseract/objects/remote/TankMenuItem.java @@ -2,7 +2,6 @@ package tesseract.objects.remote; import javax.vecmath.Vector3f; -import tesseract.World; import tesseract.objects.tank.Tank; public class TankMenuItem extends RemoteObjectMenuItem { diff --git a/src/tesseract/objects/tank/Body.java b/src/tesseract/objects/tank/Body.java index ff0e56d..3562fd2 100644 --- a/src/tesseract/objects/tank/Body.java +++ b/src/tesseract/objects/tank/Body.java @@ -13,6 +13,8 @@ import javax.media.j3d.TransformGroup; import javax.vecmath.Color3f; import javax.vecmath.Vector3f; +import tesseract.objects.emitters.FireableEmitter; + import com.sun.j3d.utils.geometry.Box; @@ -32,9 +34,11 @@ public class Body { private TransformGroup turret; private TransformGroup barrel; private Vector3f[] vectors; + private FireableEmitter shooter; public Body(Color trackColor, Color bodyColor, float theScale, Color turretColor) { + shooter = new FireableEmitter(new Vector3f(), new Vector3f(), new Color3f(1f, 0f, 0f)); body = new TransformGroup(); turret = new TransformGroup(); barrel = new TransformGroup(); @@ -98,6 +102,7 @@ public class Body { Transform3D mg = new Transform3D(); mg.rotZ(Math.PI / 2); mg.setTranslation(new Vector3f(1.4f * theScale, .25f * theScale, 0)); + shooter.moveMe(new Vector3f(1.4f * theScale, .25f * theScale, 0)); gunTG.setTransform(mg); Transform3D rotateGun = new Transform3D(); rotateGun.rotY(Math.PI / 2); @@ -126,5 +131,9 @@ public class Body { public Vector3f getFacing() { return vectors[0]; - } + } + + public FireableEmitter getShooter() { + return shooter; + } } diff --git a/src/tesseract/objects/tank/Tank.java b/src/tesseract/objects/tank/Tank.java index 059efa5..570d1bd 100644 --- a/src/tesseract/objects/tank/Tank.java +++ b/src/tesseract/objects/tank/Tank.java @@ -147,6 +147,9 @@ public class Tank extends RemoteObject { barrelElevation--; } break; + case KeyEvent.VK_SPACE: + tank.getShooter().spawnChildren(); + break; } } -- cgit v1.2.3