Also load material to doc mats when setting material

This commit is contained in:
SiboVG 2024-08-08 18:47:55 +02:00
parent e5f0ff9322
commit de61ffe174
5 changed files with 18 additions and 6 deletions

View File

@ -527,7 +527,7 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
if (value instanceof MaterialSerializationProxy) { if (value instanceof MaterialSerializationProxy) {
MaterialSerializationProxy m = (MaterialSerializationProxy) value; MaterialSerializationProxy m = (MaterialSerializationProxy) value;
value = Material.newMaterial(Material.Type.valueOf(m.type), m.name, m.density, value = Material.newMaterial(Material.Type.valueOf(m.type), m.name, m.density,
MaterialGroup.loadFromDatabaseString(m.group), m.userDefined); MaterialGroup.loadFromDatabaseString(m.group), m.userDefined, true);
} }
if (TYPE.getName().equals(keyName)) { if (TYPE.getName().equals(keyName)) {
this.properties.put(TYPE, (ComponentPreset.Type) value); this.properties.put(TYPE, (ComponentPreset.Type) value);

View File

@ -152,6 +152,9 @@ public abstract class ExternalComponent extends RocketComponent {
if (material.equals(mat)) if (material.equals(mat))
return; return;
material = mat; material = mat;
if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(mat);
}
clearPreset(); clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
} }
@ -193,7 +196,7 @@ public abstract class ExternalComponent extends RocketComponent {
Material mat = preset.get(ComponentPreset.MATERIAL); Material mat = preset.get(ComponentPreset.MATERIAL);
if (mat != null) { if (mat != null) {
material = mat; material = mat;
if (getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(mat); rocket.getDocument().getDocumentPreferences().addMaterial(mat);
} }
} /* } /*

View File

@ -133,6 +133,9 @@ public class Parachute extends RecoveryDevice {
if (mat.equals(lineMaterial)) if (mat.equals(lineMaterial))
return; return;
this.lineMaterial = mat; this.lineMaterial = mat;
if (lineMaterial.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(this.lineMaterial);
}
if (getLineCount() != 0) { if (getLineCount() != 0) {
clearPreset(); clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
@ -224,7 +227,7 @@ public class Parachute extends RecoveryDevice {
int count = lineMaterialEmpty.length(); int count = lineMaterialEmpty.length();
if (count > 12 ) { if (count > 12 ) {
this.lineMaterial = preset.get(ComponentPreset.LINE_MATERIAL); this.lineMaterial = preset.get(ComponentPreset.LINE_MATERIAL);
if (getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { if (lineMaterial.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(this.lineMaterial); rocket.getDocument().getDocumentPreferences().addMaterial(this.lineMaterial);
} }
} else { } else {

View File

@ -103,6 +103,9 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu
if (mat.equals(material)) if (mat.equals(material))
return; return;
this.material = (Material.Surface) mat; this.material = (Material.Surface) mat;
if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(this.material);
}
clearPreset(); clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
} }
@ -144,8 +147,8 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu
if (count > 12 ) { if (count > 12 ) {
Material m = preset.get(ComponentPreset.MATERIAL); Material m = preset.get(ComponentPreset.MATERIAL);
this.material = (Material.Surface) m; this.material = (Material.Surface) m;
if (getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(m); rocket.getDocument().getDocumentPreferences().addMaterial(this.material);
} }
} else { } else {
this.material = defaultMaterial; this.material = defaultMaterial;

View File

@ -23,7 +23,7 @@ public abstract class StructuralComponent extends InternalComponent {
Material mat = preset.get(ComponentPreset.MATERIAL); Material mat = preset.get(ComponentPreset.MATERIAL);
if (mat != null) { if (mat != null) {
this.material = mat; this.material = mat;
if (getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(mat); rocket.getDocument().getDocumentPreferences().addMaterial(mat);
} }
} /* } /*
@ -62,6 +62,9 @@ public abstract class StructuralComponent extends InternalComponent {
if (mat.equals(material)) if (mat.equals(material))
return; return;
this.material = mat; this.material = mat;
if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) {
rocket.getDocument().getDocumentPreferences().addMaterial(mat);
}
clearPreset(); clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
} }