From de61ffe174fcd232230672f6d06fb3a0f5f3f254 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 8 Aug 2024 18:47:55 +0200 Subject: [PATCH] Also load material to doc mats when setting material --- .../java/info/openrocket/core/preset/ComponentPreset.java | 2 +- .../openrocket/core/rocketcomponent/ExternalComponent.java | 5 ++++- .../info/openrocket/core/rocketcomponent/Parachute.java | 5 ++++- .../openrocket/core/rocketcomponent/RecoveryDevice.java | 7 +++++-- .../core/rocketcomponent/StructuralComponent.java | 5 ++++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/info/openrocket/core/preset/ComponentPreset.java b/core/src/main/java/info/openrocket/core/preset/ComponentPreset.java index 690f46ecb..dbcca940b 100644 --- a/core/src/main/java/info/openrocket/core/preset/ComponentPreset.java +++ b/core/src/main/java/info/openrocket/core/preset/ComponentPreset.java @@ -527,7 +527,7 @@ public class ComponentPreset implements Comparable, Serializabl if (value instanceof MaterialSerializationProxy) { MaterialSerializationProxy m = (MaterialSerializationProxy) value; 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)) { this.properties.put(TYPE, (ComponentPreset.Type) value); diff --git a/core/src/main/java/info/openrocket/core/rocketcomponent/ExternalComponent.java b/core/src/main/java/info/openrocket/core/rocketcomponent/ExternalComponent.java index e223847c0..8f40417d7 100644 --- a/core/src/main/java/info/openrocket/core/rocketcomponent/ExternalComponent.java +++ b/core/src/main/java/info/openrocket/core/rocketcomponent/ExternalComponent.java @@ -152,6 +152,9 @@ public abstract class ExternalComponent extends RocketComponent { if (material.equals(mat)) return; material = mat; + if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { + rocket.getDocument().getDocumentPreferences().addMaterial(mat); + } clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } @@ -193,7 +196,7 @@ public abstract class ExternalComponent extends RocketComponent { Material mat = preset.get(ComponentPreset.MATERIAL); if (mat != null) { 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); } } /* diff --git a/core/src/main/java/info/openrocket/core/rocketcomponent/Parachute.java b/core/src/main/java/info/openrocket/core/rocketcomponent/Parachute.java index 9a7d05920..accc76f4c 100644 --- a/core/src/main/java/info/openrocket/core/rocketcomponent/Parachute.java +++ b/core/src/main/java/info/openrocket/core/rocketcomponent/Parachute.java @@ -133,6 +133,9 @@ public class Parachute extends RecoveryDevice { if (mat.equals(lineMaterial)) return; this.lineMaterial = mat; + if (lineMaterial.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { + rocket.getDocument().getDocumentPreferences().addMaterial(this.lineMaterial); + } if (getLineCount() != 0) { clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); @@ -224,7 +227,7 @@ public class Parachute extends RecoveryDevice { int count = lineMaterialEmpty.length(); if (count > 12 ) { 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); } } else { diff --git a/core/src/main/java/info/openrocket/core/rocketcomponent/RecoveryDevice.java b/core/src/main/java/info/openrocket/core/rocketcomponent/RecoveryDevice.java index 4375f90e7..26cd1991f 100644 --- a/core/src/main/java/info/openrocket/core/rocketcomponent/RecoveryDevice.java +++ b/core/src/main/java/info/openrocket/core/rocketcomponent/RecoveryDevice.java @@ -103,6 +103,9 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu if (mat.equals(material)) return; this.material = (Material.Surface) mat; + if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { + rocket.getDocument().getDocumentPreferences().addMaterial(this.material); + } clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } @@ -144,8 +147,8 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu if (count > 12 ) { Material m = preset.get(ComponentPreset.MATERIAL); this.material = (Material.Surface) m; - if (getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { - rocket.getDocument().getDocumentPreferences().addMaterial(m); + if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { + rocket.getDocument().getDocumentPreferences().addMaterial(this.material); } } else { this.material = defaultMaterial; diff --git a/core/src/main/java/info/openrocket/core/rocketcomponent/StructuralComponent.java b/core/src/main/java/info/openrocket/core/rocketcomponent/StructuralComponent.java index a043d1a8a..c6cc97f09 100644 --- a/core/src/main/java/info/openrocket/core/rocketcomponent/StructuralComponent.java +++ b/core/src/main/java/info/openrocket/core/rocketcomponent/StructuralComponent.java @@ -23,7 +23,7 @@ public abstract class StructuralComponent extends InternalComponent { Material mat = preset.get(ComponentPreset.MATERIAL); if (mat != null) { 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); } } /* @@ -62,6 +62,9 @@ public abstract class StructuralComponent extends InternalComponent { if (mat.equals(material)) return; this.material = mat; + if (material.isDocumentMaterial() && getRoot() instanceof Rocket rocket && rocket.getDocument() != null) { + rocket.getDocument().getDocumentPreferences().addMaterial(mat); + } clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); }