diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tesseract/TesseractUI.java | 4 | ||||
-rw-r--r-- | src/tesseract/menuitems/DonutMenuItem.java | 2 | ||||
-rw-r--r-- | src/tesseract/menuitems/SurfBoardMenuItem.java | 95 | ||||
-rw-r--r-- | src/tesseract/newmenu/MenuItem.java | 1 | ||||
-rw-r--r-- | src/tesseract/objects/Ellipsoid.java | 2 |
5 files changed, 102 insertions, 2 deletions
diff --git a/src/tesseract/TesseractUI.java b/src/tesseract/TesseractUI.java index 9fd91b9..fed3939 100644 --- a/src/tesseract/TesseractUI.java +++ b/src/tesseract/TesseractUI.java @@ -41,6 +41,7 @@ import tesseract.menuitems.IcosahedronMenuItem; import tesseract.menuitems.ParticleEmitterMenuItem; import tesseract.menuitems.ParticleMenuItem; import tesseract.menuitems.PlanarPolygonMenuItem; +import tesseract.menuitems.SurfBoardMenuItem; import tesseract.objects.Box; import tesseract.objects.ChainLink2; import tesseract.objects.PhysicalObject; @@ -132,7 +133,8 @@ public class TesseractUI extends JFrame { new EllipsoidMenuItem(myWorld), new IcosahedronMenuItem(myWorld), new ChainLinkMenuItem(myWorld), - new DonutMenuItem(myWorld) + new DonutMenuItem(myWorld), + new SurfBoardMenuItem(myWorld) }; createMenu(); setupCanvas(); diff --git a/src/tesseract/menuitems/DonutMenuItem.java b/src/tesseract/menuitems/DonutMenuItem.java index 990e0fd..8a52875 100644 --- a/src/tesseract/menuitems/DonutMenuItem.java +++ b/src/tesseract/menuitems/DonutMenuItem.java @@ -27,7 +27,7 @@ public class DonutMenuItem extends TesseractMenuItem { private float scale = 1f;
private float sliceRadius = .06f; //inside whole
- private int sliceDivisions = 50;
+ private int sliceDivisions = 25;
private float arcRadius = .08f; //outside whole
private int arcDivisions = 30;
diff --git a/src/tesseract/menuitems/SurfBoardMenuItem.java b/src/tesseract/menuitems/SurfBoardMenuItem.java new file mode 100644 index 0000000..34d5d1f --- /dev/null +++ b/src/tesseract/menuitems/SurfBoardMenuItem.java @@ -0,0 +1,95 @@ +package tesseract.menuitems;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.media.j3d.Appearance;
+import javax.media.j3d.ColoringAttributes;
+import javax.media.j3d.Material;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.vecmath.Color3f;
+import javax.vecmath.Vector3f;
+
+import com.sun.j3d.utils.geometry.Sphere;
+
+import tesseract.World;
+import tesseract.objects.Ellipsoid;
+import tesseract.objects.PlanarPolygon;
+
+/**
+ * Ellipsoid Menu Item.
+ *
+ * @author Steve Bradshaw
+ */
+public class SurfBoardMenuItem extends TesseractMenuItem {
+
+ /**
+ * Serial ID.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructor for the menu item.
+ *
+ * @param theWorld The world into which we add.
+ */
+ public SurfBoardMenuItem(final World theWorld) {
+ super(theWorld, "SurfBoard");
+ }
+
+ /**
+ * Action handler.
+ *
+ * @param arg0 Unused event info.
+ */
+ public void actionPerformed(final ActionEvent arg0) {
+
+ createParameterMenu();
+
+ //If the default button is checked, the frame will close.
+ final JCheckBox defaultButton = getDefaultButton();
+ final JFrame params = getParamFrame();
+ //final JButton enterButton = getEnterButton();
+
+ defaultButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent ev) {
+ if (defaultButton.isSelected()) {
+ Appearance eApp = new Appearance();
+ Material eggMat = new Material();
+ eggMat.setDiffuseColor(0f, .5f, 1f);
+ eApp.setMaterial(eggMat);
+ eApp.setColoringAttributes(new ColoringAttributes(0f, 1f, 1f, ColoringAttributes.ALLOW_COLOR_WRITE));
+ myWorld.addObject(new Ellipsoid(getPosition(), 1, 0.05f, new Sphere().getPrimitiveFlags(), 40, eApp, 0.2f, 4.0f));
+ params.dispose();
+ }
+ }
+ });
+
+ /*enterButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent event) {
+ String string = getPositionField().getText();
+ Vector3f pos = parseVector(string);
+ setPosition(pos);
+
+ String string2 = getRadiusField().getText();
+ float radius = Float.parseFloat(string2);
+ setRadius(radius);
+
+ String string3 = getMassField().getText();
+ float mass = Float.parseFloat(string3);
+ setMass(mass);
+
+ if (event.getSource() == enterButton) {
+ myWorld.addObject(new Ellipsoid(getPosition(), getRadius()));
+ params.dispose();
+ }
+ }
+ });*/
+
+ }
+}
diff --git a/src/tesseract/newmenu/MenuItem.java b/src/tesseract/newmenu/MenuItem.java index 96db2b4..7324b7f 100644 --- a/src/tesseract/newmenu/MenuItem.java +++ b/src/tesseract/newmenu/MenuItem.java @@ -61,6 +61,7 @@ public abstract class MenuItem extends JMenuItem implements ActionListener{ public MenuItem() {};
+
public MenuItem (Map <String, Object> theParams, World theWorld) {
myFrame = new JFrame();
myPanel = new JPanel(new GridLayout(myParameters.keySet().size(), 2));
diff --git a/src/tesseract/objects/Ellipsoid.java b/src/tesseract/objects/Ellipsoid.java index 25c924e..46bd88a 100644 --- a/src/tesseract/objects/Ellipsoid.java +++ b/src/tesseract/objects/Ellipsoid.java @@ -139,6 +139,8 @@ public class Ellipsoid extends PhysicalObject { Transform3D tmp = new Transform3D();
tmp.set(new Matrix3f(1.0f, 0.0f, 0.0f, 0.0f, b, 0.0f, 0.0f, 0.0f, c));
TransformGroup tg = new TransformGroup(tmp);
+ tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
+ tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
tg.addChild(sphere);
return tg;
|