1 package net.sf.openrocket.rocketcomponent;
3 import net.sf.openrocket.material.Material;
4 import net.sf.openrocket.util.BugException;
5 import net.sf.openrocket.util.MathUtil;
6 import net.sf.openrocket.util.Prefs;
8 public class ShockCord extends MassObject {
10 private Material material;
11 private double cordLength;
14 material = Prefs.getDefaultComponentMaterial(ShockCord.class, Material.Type.LINE);
20 public Material getMaterial() {
24 public void setMaterial(Material m) {
25 if (m.getType() != Material.Type.LINE)
26 throw new BugException("Attempting to set non-linear material.");
27 if (material.equals(m))
30 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
34 public double getCordLength() {
38 public void setCordLength(double length) {
39 length = MathUtil.max(length, 0);
40 if (MathUtil.equals(length, this.length))
42 this.cordLength = length;
43 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
49 public double getComponentMass() {
50 return material.getDensity() * cordLength;
54 public String getComponentName() {
59 public boolean allowsChildren() {
64 public boolean isCompatible(Class<? extends RocketComponent> type) {