1 package net.sf.openrocket.rocketcomponent;
3 import net.sf.openrocket.material.Material;
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.startup.Application;
7 public abstract class StructuralComponent extends InternalComponent {
9 private Material material;
11 public StructuralComponent() {
13 material = Application.getPreferences().getDefaultComponentMaterial(this.getClass(), Material.Type.BULK);
17 protected void loadFromPreset(ComponentPreset preset) {
18 super.loadFromPreset(preset);
19 if ( preset.has(ComponentPreset.MATERIAL ) ) {
20 Material mat = preset.get(ComponentPreset.MATERIAL);
25 else if (c.isMassOverridden()) {
26 double mass = c.getOverrideMass();
27 double volume = getComponentVolume();
29 if (volume > 0.00001) {
30 density = mass / volume;
34 mat = Material.newMaterial(Type.BULK, mat.getName(), density, true);
41 public final Material getMaterial() {
45 public final void setMaterial(Material mat) {
46 if (mat.getType() != Material.Type.BULK) {
47 throw new IllegalArgumentException("Attempted to set non-bulk material "+mat);
49 if (mat.equals(material))
53 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);