Przeglądaj źródła

Update SkinningControlTest.java

Wyatt Gillette 2 miesięcy temu
rodzic
commit
1b74bcd0ed

+ 34 - 9
jme3-core/src/test/java/com/jme3/anim/SkinningControlTest.java

@@ -3,12 +3,16 @@ package com.jme3.anim;
 import com.jme3.anim.util.AnimMigrationUtils;
 import com.jme3.asset.AssetManager;
 import com.jme3.asset.DesktopAssetManager;
+import com.jme3.export.binary.BinaryExporter;
 import com.jme3.material.MatParamOverride;
 import com.jme3.scene.Spatial;
 import com.jme3.util.SafeArrayList;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @author capdevon
  */
@@ -18,14 +22,27 @@ public class SkinningControlTest {
     public void testSkinningControl() {
         AssetManager assetManager = new DesktopAssetManager(true);
 
-        Spatial model = assetManager.loadModel("Models/Sinbad/Sinbad.mesh.xml");
-        AnimMigrationUtils.migrate(model);
+        List<String> assets = Arrays.asList(
+                "Models/Jaime/Jaime.j3o",
+                "Models/Oto/Oto.mesh.xml",
+                "Models/Sinbad/Sinbad.mesh.xml",
+                "Models/Elephant/Elephant.mesh.xml");
+
+        for (String asset : assets) {
+            Spatial model = assetManager.loadModel(asset);
+            AnimMigrationUtils.migrate(model);
+
+            SkinningControl sc = model.getControl(SkinningControl.class);
+            model.removeControl(sc);
+            model.addControl(sc);
+
+            validateSkinningControl(sc);
 
-        SkinningControl sc = model.getControl(SkinningControl.class);
-        model.removeControl(sc);
-        model.addControl(sc);
+            Spatial copy = BinaryExporter.saveAndLoad(assetManager, model);
+            SkinningControl scCopy = copy.getControl(SkinningControl.class);
 
-        validateSkinningControl(sc);
+            validateSkinningControl(scCopy);
+        }
     }
 
     private void validateSkinningControl(SkinningControl sc) {
@@ -33,15 +50,23 @@ public class SkinningControlTest {
         SafeArrayList<MatParamOverride> mpos = sc.getSpatial().getLocalMatParamOverrides();
         Assert.assertEquals(2, mpos.size());
 
+        int numberOfBones = 0;
+        int boneMatrices = 0;
         for (MatParamOverride mpo : mpos) {
             Assert.assertTrue(mpo.isEnabled());
             Assert.assertNull(mpo.getValue());
+
+            if (mpo.getName().equals("NumberOfBones")) {
+                numberOfBones++;
+            } else if (mpo.getName().equals("BoneMatrices")) {
+                boneMatrices++;
+            }
         }
 
+        Assert.assertEquals(1, numberOfBones);
+        Assert.assertEquals(1, boneMatrices);
+
         Assert.assertTrue(sc.isHardwareSkinningPreferred());
         Assert.assertFalse(sc.isHardwareSkinningUsed());
-
-        Assert.assertNotNull(sc.getTargets());
-        Assert.assertEquals(7, sc.getTargets().length);
     }
 }