Implemented support for bulk heads. Move setting Length from BodyComponent to Rocket...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 16 Apr 2012 19:31:03 +0000 (19:31 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 16 Apr 2012 19:31:03 +0000 (19:31 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@562 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/rocketcomponent/BodyComponent.java
core/src/net/sf/openrocket/rocketcomponent/Bulkhead.java
core/src/net/sf/openrocket/rocketcomponent/RadiusRingComponent.java
core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java
core/src/net/sf/openrocket/rocketcomponent/StructuralComponent.java

index 17ce7db170000d14f817aea72a93500695d00945..6f4d7dbe4a9df41d89ee933e8f9c1fd65e9942f0 100644 (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);
        }
        
index 24a1552ffd24460a36b2f54441d7a0828a9fded7..f638f09f2122691dbcf80967dcf4006add810bfa 100644 (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;
index 46a35143900afddd218c2cda1d29facf7139f4c7..e7984621ed8b0d98a533aa9035f26808ef64254c 100644 (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) {
index 7e5e03e8c62e72c31fcdba92e0e24df7c888897b..7db79d321a4460796f75017a1070288826827500 100644 (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);
+               }
        }
        
        
index d37af27e5744829cddc44a9a8a108d5bc986838b..a224c9e59d95d1730cb0d86ce18646a3035d9c41 100644 (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;