From 2d465a3576a9662a5aa9ab4a941f257be0a8a257 Mon Sep 17 00:00:00 2001 From: bkuker Date: Tue, 24 Nov 2015 13:13:17 -0500 Subject: [PATCH] Simple rail button render --- .../defaults/DefaultAppearance.java | 4 ++- .../figure3d/geometry/ComponentRenderer.java | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java b/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java index 82c36c0dd..38806be53 100644 --- a/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java +++ b/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java @@ -15,6 +15,7 @@ import net.sf.openrocket.rocketcomponent.LaunchLug; import net.sf.openrocket.rocketcomponent.MassObject; import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.RadiusRingComponent; +import net.sf.openrocket.rocketcomponent.RailButton; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.TubeCoupler; @@ -94,7 +95,8 @@ public class DefaultAppearance { return HARDBOARD; if (c instanceof MassObject) return WADDING; - + if ( c instanceof RailButton ) + return getPlastic(new Color(255, 255, 220)); return Appearance.MISSING; } diff --git a/swing/src/net/sf/openrocket/gui/figure3d/geometry/ComponentRenderer.java b/swing/src/net/sf/openrocket/gui/figure3d/geometry/ComponentRenderer.java index 055cfc7a3..676dda8bb 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/geometry/ComponentRenderer.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/geometry/ComponentRenderer.java @@ -13,6 +13,7 @@ import net.sf.openrocket.rocketcomponent.BodyTube; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.LaunchLug; import net.sf.openrocket.rocketcomponent.MassObject; +import net.sf.openrocket.rocketcomponent.RailButton; import net.sf.openrocket.rocketcomponent.RingComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Transition; @@ -92,6 +93,8 @@ public class ComponentRenderer { renderTube(gl, (BodyTube) c, which); } else if (c instanceof LaunchLug) { renderLug(gl, (LaunchLug) c, which); + } else if ( c instanceof RailButton ){ + renderRailButton(gl, (RailButton) c, which); } else if (c instanceof RingComponent) { if (which == Surface.OUTSIDE) renderRing(gl, (RingComponent) c); @@ -268,7 +271,38 @@ public class ComponentRenderer { private void renderLug(GL2 gl, LaunchLug t, Surface which) { renderTube(gl, which, t.getOuterRadius(), t.getInnerRadius(), t.getLength()); } + + private void renderRailButton(GL2 gl, RailButton r, Surface which) { + if ( which == Surface.OUTSIDE ){ + //renderOther(gl, r); + final double or = r.getOuterDiameter() / 2.0; + final double ir = r.getInnerDiameter() / 2.0; + gl.glRotated(90, -1, 0, 0); + + //Inner Diameter + glu.gluCylinder(q, ir, ir, r.getTotalHeight(), LOD, 1); + + //Bottom Disc + glu.gluCylinder(q, or, or, r.getFlangeHeight(), LOD, 1); + glu.gluQuadricOrientation(q, GLU.GLU_INSIDE); + glu.gluDisk(q, 0, or, LOD, 2); + glu.gluQuadricOrientation(q, GLU.GLU_OUTSIDE); + gl.glTranslated(0,0,r.getFlangeHeight()); + glu.gluDisk(q, 0, or, LOD, 2); + + + //Upper Disc + gl.glTranslated(0,0,r.getTotalHeight() - r.getFlangeHeight() * 2.0); + glu.gluCylinder(q, or, or, r.getFlangeHeight(), LOD, 1); + glu.gluQuadricOrientation(q, GLU.GLU_INSIDE); + glu.gluDisk(q, 0, or, LOD, 2); + glu.gluQuadricOrientation(q, GLU.GLU_OUTSIDE); + gl.glTranslated(0,0,r.getFlangeHeight()); + glu.gluDisk(q, 0, or, LOD, 2); + } + } + private void renderTubeFins(GL2 gl, TubeFinSet fs, Surface which) { gl.glPushMatrix(); gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);