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.

This commit is contained in:
Kevin Ruland 2012-04-16 19:31:03 +00:00
parent d1c83cb9b4
commit 5d6da040b2
5 changed files with 52 additions and 4 deletions

View File

@ -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);
}

View File

@ -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;

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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;