From b20076f2484d9ab3582bcf97c9d6a4a253cc537e Mon Sep 17 00:00:00 2001 From: bkuker Date: Sun, 31 Mar 2013 11:45:01 -0400 Subject: [PATCH] Fix flash of paint without decals when switching between default and custom appearance --- .../appearance/AppearanceBuilder.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/core/src/net/sf/openrocket/appearance/AppearanceBuilder.java b/core/src/net/sf/openrocket/appearance/AppearanceBuilder.java index ccc53cf1a..e65dfdd84 100644 --- a/core/src/net/sf/openrocket/appearance/AppearanceBuilder.java +++ b/core/src/net/sf/openrocket/appearance/AppearanceBuilder.java @@ -37,7 +37,7 @@ public class AppearanceBuilder extends AbstractChangeSource { setAppearance(a); } - public void resetToDefaults() { + private void resetToDefaults() { paint = new Color(0, 0, 0); shine = 0; offsetU = offsetV = 0; @@ -48,21 +48,26 @@ public class AppearanceBuilder extends AbstractChangeSource { edgeMode = EdgeMode.REPEAT; } - public void setAppearance(Appearance a) { - resetToDefaults(); - if (a != null) { - setPaint(a.getPaint()); - setShine(a.getShine()); - Decal d = a.getTexture(); - if (d != null) { - setOffset(d.getOffset().x, d.getOffset().y); - setCenter(d.getCenter().x, d.getCenter().y); - setScaleUV(d.getScale().x, d.getScale().y); - setRotation(d.getRotation()); - setEdgeMode(d.getEdgeMode()); - setImage(d.getImage()); + public void setAppearance(final Appearance a) { + batch(new Runnable() { + @Override + public void run() { + resetToDefaults(); + if (a != null) { + setPaint(a.getPaint()); + setShine(a.getShine()); + Decal d = a.getTexture(); + if (d != null) { + setOffset(d.getOffset().x, d.getOffset().y); + setCenter(d.getCenter().x, d.getCenter().y); + setScaleUV(d.getScale().x, d.getScale().y); + setRotation(d.getRotation()); + setEdgeMode(d.getEdgeMode()); + setImage(d.getImage()); + } + } } - } + }); } public Appearance getAppearance() {