Support material group loading from preset

This commit is contained in:
SiboVG 2024-08-07 14:52:11 +02:00
parent e3ce3ac7dd
commit 65116fcb58

View File

@ -18,6 +18,7 @@ import java.util.Map;
import java.util.Map.Entry;
import info.openrocket.core.material.Material;
import info.openrocket.core.material.MaterialGroup;
import info.openrocket.core.motor.Manufacturer;
import info.openrocket.core.rocketcomponent.ExternalComponent.Finish;
import info.openrocket.core.rocketcomponent.Transition.Shape;
@ -452,6 +453,9 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
} else if (key.getType() == Material.class) {
double d = ((Material) value).getDensity();
os.writeDouble(d);
} else if (key.getType() == MaterialGroup.class) {
String s = ((MaterialGroup) value).getDatabaseString();
os.writeBytes(s);
} else if (key.getType() == Shape.class) {
// this is ugly to use the ordinal but what else?
int i = ((Shape) value).ordinal();
@ -478,6 +482,7 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
String type;
boolean userDefined;
Double density;
String group;
}
private void writeObject(ObjectOutputStream oos) throws IOException {
@ -496,6 +501,7 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
m.type = material.getType().name();
m.density = material.getDensity();
m.userDefined = material.isUserDefined();
m.group = material.getGroup().getDatabaseString();
value = m;
}
@ -520,7 +526,8 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
if (value instanceof MaterialSerializationProxy) {
MaterialSerializationProxy m = (MaterialSerializationProxy) value;
value = Material.newMaterial(Material.Type.valueOf(m.type), m.name, m.density, m.userDefined);
value = Material.newMaterial(Material.Type.valueOf(m.type), m.name, m.density,
MaterialGroup.loadFromDatabaseString(m.group), m.userDefined);
}
if (TYPE.getName().equals(keyName)) {
this.properties.put(TYPE, (ComponentPreset.Type) value);