From dba5b22dd4a913b5addff0558e861c6613156783 Mon Sep 17 00:00:00 2001 From: Steve Date: Sat, 19 Feb 2011 05:14:22 +0000 Subject: added surfBoard --- src/tesseract/TesseractUI.java | 4 +- src/tesseract/menuitems/DonutMenuItem.java | 2 +- src/tesseract/menuitems/SurfBoardMenuItem.java | 95 ++++++++++++++++++++++++++ src/tesseract/newmenu/MenuItem.java | 1 + src/tesseract/objects/Ellipsoid.java | 2 + 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/tesseract/menuitems/SurfBoardMenuItem.java (limited to 'src') 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 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; -- cgit v1.2.3