summaryrefslogtreecommitdiff
path: root/src/tesseract/generators
diff options
context:
space:
mode:
Diffstat (limited to 'src/tesseract/generators')
-rw-r--r--src/tesseract/generators/GeneratorsMenu.java29
-rw-r--r--src/tesseract/generators/MenuItem.java38
-rw-r--r--src/tesseract/generators/ParticleField.java37
-rw-r--r--src/tesseract/generators/SphereField.java43
4 files changed, 147 insertions, 0 deletions
diff --git a/src/tesseract/generators/GeneratorsMenu.java b/src/tesseract/generators/GeneratorsMenu.java
new file mode 100644
index 0000000..0256d8b
--- /dev/null
+++ b/src/tesseract/generators/GeneratorsMenu.java
@@ -0,0 +1,29 @@
+package tesseract.generators;
+
+import javax.swing.JMenu;
+
+import tesseract.World;
+
+/**
+ * A generator menu.
+ *
+ * @author jesse
+ */
+public class GeneratorsMenu extends JMenu {
+
+ /**
+ * Serial UID.
+ */
+ private static final long serialVersionUID = 8994598391451363374L;
+
+ /**
+ * Constructor.
+ */
+ public GeneratorsMenu(final World theWorld) {
+ super("Generators");
+
+ // Build the menu of generators.
+ //add(new SphereField(theWorld));
+ add(new ParticleField(theWorld));
+ }
+}
diff --git a/src/tesseract/generators/MenuItem.java b/src/tesseract/generators/MenuItem.java
new file mode 100644
index 0000000..2990cea
--- /dev/null
+++ b/src/tesseract/generators/MenuItem.java
@@ -0,0 +1,38 @@
+package tesseract.generators;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JMenuItem;
+
+import tesseract.World;
+
+/**
+ * Parent class for generator menus.
+ *
+ * @author jesse
+ */
+public abstract class MenuItem extends JMenuItem {
+
+ /**
+ * Serial UID.
+ */
+ private static final long serialVersionUID = 5591914377175098868L;
+
+ protected MenuItem(final String label, final World theWorld) {
+ super(label);
+
+ addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ generate(theWorld);
+ }
+ });
+ }
+
+ /**
+ * Generate.
+ *
+ * @param World the world to put it in.
+ */
+ public abstract void generate(final World theWorld);
+}
diff --git a/src/tesseract/generators/ParticleField.java b/src/tesseract/generators/ParticleField.java
new file mode 100644
index 0000000..80e5e1d
--- /dev/null
+++ b/src/tesseract/generators/ParticleField.java
@@ -0,0 +1,37 @@
+package tesseract.generators;
+
+import javax.vecmath.Vector3f;
+
+import tesseract.World;
+import tesseract.objects.Particle;
+import tesseract.objects.Sphere;
+
+/**
+ * Generate a field of random particles.
+ *
+ * @author jesse
+ */
+public class ParticleField extends MenuItem {
+
+ private static final int FIELD_SIZE = 100;
+
+ public ParticleField(World theWorld) {
+ super("Particle Field", theWorld);
+ }
+
+ /**
+ * Generate the field.
+ *
+ * @param theWorld Where to put them
+ */
+ public void generate(final World theWorld) {
+ for (int i = 0; i < FIELD_SIZE; i++) {
+ Vector3f position = new Vector3f((float) Math.random() - 0.5f,
+ (float) Math.random() - 0.5f, (float) Math.random() - 0.5f);
+
+ Particle p = new Particle(position, null);
+
+ theWorld.addObject(p);
+ }
+ }
+}
diff --git a/src/tesseract/generators/SphereField.java b/src/tesseract/generators/SphereField.java
new file mode 100644
index 0000000..1bc57ae
--- /dev/null
+++ b/src/tesseract/generators/SphereField.java
@@ -0,0 +1,43 @@
+package tesseract.generators;
+
+import javax.vecmath.Vector3f;
+
+import tesseract.World;
+import tesseract.objects.PhysicalObject;
+import tesseract.objects.Sphere;
+
+/**
+ * Generate a sphere field.
+ *
+ * @author jesse
+ */
+public class SphereField extends MenuItem {
+
+ private static final int FIELD_SIZE = 4;
+
+ private static final float SPHERE_SIZE = 0.15f;
+
+ public SphereField(World theWorld) {
+ super("Sphere Field", theWorld);
+ }
+
+ /**
+ * Generate the field.
+ *
+ * @param theWorld Where to put them
+ */
+ public void generate(final World theWorld) {
+ final float start = 1.1f * 0.5f * FIELD_SIZE * SPHERE_SIZE;
+
+ for (float x = -start; x <= +start; x += SPHERE_SIZE * 1.1f) {
+ for (float y = -start; y <= +start; y += SPHERE_SIZE * 1.1f) {
+ for (float z = -start; z <= +start; z += SPHERE_SIZE * 1.1f) {
+ PhysicalObject s = new Sphere(SPHERE_SIZE, new Vector3f(x, y, z));
+ theWorld.addObject(s);
+
+ }
+ }
+
+ }
+ }
+}