DGP - Fix to non-bulk densities
This commit is contained in:
parent
c2b5dd705f
commit
84533440d3
@ -57,7 +57,7 @@ public abstract class BaseHandler<C extends RocketComponent> extends ElementHand
|
|||||||
mass = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
mass = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
||||||
}
|
}
|
||||||
if ("Density".equals(element)) {
|
if ("Density".equals(element)) {
|
||||||
density = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_DENSITY);
|
density = Math.max(0d, Double.parseDouble(content) / getDensityConversion());
|
||||||
}
|
}
|
||||||
if ("KnownCG".equals(element)) {
|
if ("KnownCG".equals(element)) {
|
||||||
cg = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
|
cg = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
|
||||||
@ -163,6 +163,23 @@ public abstract class BaseHandler<C extends RocketComponent> extends ElementHand
|
|||||||
return Material.newMaterial(type, "RS: " + name, density, true);
|
return Material.newMaterial(type, "RS: " + name, density, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the appropriate density conversion for different types of materials.
|
||||||
|
*
|
||||||
|
* @return a conversion value that is assumed to be in Rocksim Units / OpenRocket Units
|
||||||
|
*/
|
||||||
|
private double getDensityConversion() {
|
||||||
|
switch (getMaterialType()) {
|
||||||
|
case LINE:
|
||||||
|
return RocksimHandler.ROCKSIM_TO_OPENROCKET_LINE_DENSITY;
|
||||||
|
case SURFACE:
|
||||||
|
return RocksimHandler.ROCKSIM_TO_OPENROCKET_SURFACE_DENSITY;
|
||||||
|
case BULK:
|
||||||
|
default:
|
||||||
|
return RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the material onto an instance of RocketComponent. This is done because only some subtypes of RocketComponent
|
* Set the material onto an instance of RocketComponent. This is done because only some subtypes of RocketComponent
|
||||||
* have the setMaterial method. Unfortunately the supertype cannot be used.
|
* have the setMaterial method. Unfortunately the supertype cannot be used.
|
||||||
|
@ -220,7 +220,7 @@ class FinSetHandler extends ElementHandler {
|
|||||||
mass = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
mass = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
||||||
}
|
}
|
||||||
if ("Density".equals(element)) {
|
if ("Density".equals(element)) {
|
||||||
density = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_DENSITY);
|
density = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY);
|
||||||
}
|
}
|
||||||
if ("KnownCG".equals(element)) {
|
if ("KnownCG".equals(element)) {
|
||||||
cg = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
cg = Math.max(0d, Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
|
||||||
|
@ -82,7 +82,7 @@ class ParachuteHandler extends PositionDependentHandler<Parachute> {
|
|||||||
warnings.add("Parachute spill holes are not supported. Ignoring.");
|
warnings.add("Parachute spill holes are not supported. Ignoring.");
|
||||||
}
|
}
|
||||||
if ("ShroudLineMassPerMM".equals(element)) {
|
if ("ShroudLineMassPerMM".equals(element)) {
|
||||||
shroudLineDensity = Double.parseDouble(content) * 10d/ RocksimHandler.ROCKSIM_TO_OPENROCKET_DENSITY;
|
shroudLineDensity = Double.parseDouble(content) / RocksimHandler.ROCKSIM_TO_OPENROCKET_LINE_DENSITY;
|
||||||
}
|
}
|
||||||
if ("ShroudLineMaterial".equals(element)) {
|
if ("ShroudLineMaterial".equals(element)) {
|
||||||
chute.setLineMaterial(BaseHandler.createCustomMaterial(Material.Type.LINE, content, shroudLineDensity));
|
chute.setLineMaterial(BaseHandler.createCustomMaterial(Material.Type.LINE, content, shroudLineDensity));
|
||||||
|
@ -36,9 +36,19 @@ public class RocksimHandler extends ElementHandler {
|
|||||||
public static final int ROCKSIM_TO_OPENROCKET_MASS = 1000;
|
public static final int ROCKSIM_TO_OPENROCKET_MASS = 1000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Density conversion. Rocksim is in milligrams/cubic centimeter, OpenRocket in grams/cubic centimeter.
|
* Bulk Density conversion. Rocksim is in kilograms/cubic meter, OpenRocket in kilograms/cubic meter.
|
||||||
*/
|
*/
|
||||||
public static final int ROCKSIM_TO_OPENROCKET_DENSITY = 1;
|
public static final int ROCKSIM_TO_OPENROCKET_BULK_DENSITY = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Surface Density conversion. Rocksim is in grams/sq centimeter, OpenRocket in kilograms/sq meter. 1000/(100*100) = 1/10
|
||||||
|
*/
|
||||||
|
public static final double ROCKSIM_TO_OPENROCKET_SURFACE_DENSITY = 1/10d;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Line Density conversion. Rocksim is in kilograms/meter, OpenRocket in kilograms/meter.
|
||||||
|
*/
|
||||||
|
public static final int ROCKSIM_TO_OPENROCKET_LINE_DENSITY = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Radius conversion. Rocksim is always in diameters, OpenRocket mostly in radius.
|
* Radius conversion. Rocksim is always in diameters, OpenRocket mostly in radius.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user