Browse Source

work around instead of creating new animcomposer

rickard 3 years ago
parent
commit
ddca438840

+ 1 - 1
jme3-core/src/com/jme3/gde/core/assets/ExternalChangeScanner.java

@@ -144,7 +144,7 @@ public class ExternalChangeScanner implements AssetDataPropertyChangeListener,
                     + "{0}", assetDataObject.getName());
         }
     }
-
+    
     private void applyExternalData(final boolean onlyMeshData, 
             final boolean onlyAnimData) {
         final ProgressHandle handle = ProgressHandle.createHandle("Updating "

+ 7 - 5
jme3-core/src/com/jme3/gde/core/util/datatransfer/AnimationDataFromOriginal.java

@@ -8,6 +8,7 @@ import com.jme3.gde.core.scene.ApplicationLogHandler;
 import com.jme3.gde.core.util.TaggedSpatialFinder;
 import com.jme3.scene.SceneGraphVisitor;
 import com.jme3.scene.Spatial;
+import com.jme3.util.clone.Cloner;
 
 import java.util.Collection;
 import java.util.logging.Level;
@@ -68,7 +69,8 @@ public final class AnimationDataFromOriginal implements SpatialDataTransferInter
                                      final AnimComposer originalAnimComposer,
                                      final SkinningControl originalSkinningControl) {
 
-        final AnimComposer newControl = new AnimComposer();
+        final AnimComposer newControl =spatial.getControl(AnimComposer.class);
+        newControl.cloneFields(new Cloner(), originalAnimComposer);
         copyAnimClips(newControl, originalAnimComposer);
         if (spatial.getControl(AnimComposer.class) == null) {
             LOGGER.log(Level.INFO, "Adding AnimComposer for {0}",
@@ -106,10 +108,10 @@ public final class AnimationDataFromOriginal implements SpatialDataTransferInter
 
     private void removeAnimData(final Spatial root) {
         root.depthFirstTraversal(spatial -> {
-            final AnimComposer animControl = spatial.getControl(AnimComposer.class);
-            if (animControl != null) {
-                spatial.removeControl(animControl);
-            }
+//            final AnimComposer animControl = spatial.getControl(AnimComposer.class);
+//            if (animControl != null) {
+//                spatial.removeControl(animControl);
+//            }
             final SkinningControl skinningControl =
                     spatial.getControl(SkinningControl.class);
             if (skinningControl != null) {