From 95d53d1941d55428ab2a53450203eb7617182dea Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Mon, 16 Apr 2012 19:31:03 +0000 Subject: [PATCH] Implemented support for bulk heads. Move setting Length from BodyComponent to RocketComponent (since that is where length is defined). Added Materials handling to StructuralComponent. Added OuterDiameter and InnerDiameter to RadiusRingComponent. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@562 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../rocketcomponent/BodyComponent.java | 4 --- .../openrocket/rocketcomponent/Bulkhead.java | 7 ++++++ .../rocketcomponent/RadiusRingComponent.java | 17 +++++++++++++ .../rocketcomponent/RocketComponent.java | 3 +++ .../rocketcomponent/StructuralComponent.java | 25 +++++++++++++++++++ 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/BodyComponent.java b/core/src/net/sf/openrocket/rocketcomponent/BodyComponent.java index 17ce7db1..6f4d7dbe 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/BodyComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/BodyComponent.java @@ -52,10 +52,6 @@ public abstract class BodyComponent extends ExternalComponent { @Override protected void loadFromPreset(ComponentPreset preset) { - if ( preset.has(ComponentPreset.LENGTH) ) { - this.setLength(preset.get(ComponentPreset.LENGTH)); - } - super.loadFromPreset(preset); } diff --git a/core/src/net/sf/openrocket/rocketcomponent/Bulkhead.java b/core/src/net/sf/openrocket/rocketcomponent/Bulkhead.java index 24a1552f..f638f09f 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Bulkhead.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Bulkhead.java @@ -1,6 +1,8 @@ package net.sf.openrocket.rocketcomponent; import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.preset.ComponentPreset; +import net.sf.openrocket.preset.ComponentPreset.Type; import net.sf.openrocket.startup.Application; @@ -12,6 +14,11 @@ public class Bulkhead extends RadiusRingComponent { setLength(0.002); } + @Override + public Type getPresetType() { + return ComponentPreset.Type.BULK_HEAD; + } + @Override public double getInnerRadius() { return 0; diff --git a/core/src/net/sf/openrocket/rocketcomponent/RadiusRingComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RadiusRingComponent.java index 46a35143..e7984621 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RadiusRingComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RadiusRingComponent.java @@ -1,5 +1,6 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; @@ -16,6 +17,22 @@ public abstract class RadiusRingComponent extends RingComponent implements Coaxi protected double outerRadius = 0; protected double innerRadius = 0; + @Override + protected void loadFromPreset(ComponentPreset preset) { + super.loadFromPreset(preset); + if ( preset.has(ComponentPreset.OUTER_DIAMETER)) { + this.outerRadius = preset.get(ComponentPreset.OUTER_DIAMETER) / 2.0; + this.outerRadiusAutomatic = false; + } + this.innerRadiusAutomatic = false; + if ( preset.has(ComponentPreset.INNER_DIAMETER)) { + this.innerRadius = preset.get(ComponentPreset.INNER_DIAMETER) / 2.0; + } + + fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); + + } + @Override public double getOuterRadius() { if (outerRadiusAutomatic && getParent() instanceof RadialParent) { diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index 7e5e03e8..7db79d32 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -745,6 +745,9 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @param preset the preset to load from */ protected void loadFromPreset(ComponentPreset preset) { + if ( preset.has(ComponentPreset.LENGTH) ) { + this.length = preset.get(ComponentPreset.LENGTH); + } } diff --git a/core/src/net/sf/openrocket/rocketcomponent/StructuralComponent.java b/core/src/net/sf/openrocket/rocketcomponent/StructuralComponent.java index d37af27e..a224c9e5 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/StructuralComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/StructuralComponent.java @@ -1,6 +1,7 @@ package net.sf.openrocket.rocketcomponent; import net.sf.openrocket.material.Material; +import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.startup.Application; public abstract class StructuralComponent extends InternalComponent { @@ -12,6 +13,30 @@ public abstract class StructuralComponent extends InternalComponent { material = Application.getPreferences().getDefaultComponentMaterial(this.getClass(), Material.Type.BULK); } + @Override + protected void loadFromPreset(ComponentPreset preset) { + super.loadFromPreset(preset); + if ( preset.has(ComponentPreset.MATERIAL ) ) { + Material mat = preset.get(ComponentPreset.MATERIAL); + if ( mat != null ) { + this.material = mat; + } /* + TODO - + else if (c.isMassOverridden()) { + double mass = c.getOverrideMass(); + double volume = getComponentVolume(); + double density; + if (volume > 0.00001) { + density = mass / volume; + } else { + density = 1000; + } + mat = Material.newMaterial(Type.BULK, mat.getName(), density, true); + setMaterial(mat); + } + */ + } + } public final Material getMaterial() { return material; -- 2.30.2