From 50f0eca3e6b118c410911da417bb6f61362ea37b Mon Sep 17 00:00:00 2001 From: shadowislord Date: Sun, 22 Feb 2015 15:42:48 -0500 Subject: [PATCH] Skeletal Animation: remove shared mesh support - shared meshes in J3O / OgreXML are automatically de-shared on import, so this functionality is no longer used in the engine --- .../com/jme3/animation/SkeletonControl.java | 35 +++---------------- .../main/java/com/jme3/scene/Geometry.java | 1 + 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java b/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java index abde5dfe9..d5ef31939 100644 --- a/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java +++ b/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java @@ -206,43 +206,18 @@ public class SkeletonControl extends AbstractControl implements Cloneable { } private void findTargets(Node node) { - Mesh sharedMesh = null; - for (Spatial child : node.getChildren()) { if (child instanceof Geometry) { Geometry geom = (Geometry) child; - - // is this geometry using a shared mesh? - Mesh childSharedMesh = geom.getUserData(UserData.JME_SHAREDMESH); - - if (childSharedMesh != null) { - // Don’t bother with non-animated shared meshes - if (childSharedMesh.isAnimated()) { - // child is using shared mesh, - // so animate the shared mesh but ignore child - if (sharedMesh == null) { - sharedMesh = childSharedMesh; - } else if (sharedMesh != childSharedMesh) { - throw new IllegalStateException("Two conflicting shared meshes for " + node); - } - materials.add(geom.getMaterial()); - } - } else { - Mesh mesh = geom.getMesh(); - if (mesh.isAnimated()) { - targets.add(mesh); - materials.add(geom.getMaterial()); - } + Mesh mesh = geom.getMesh(); + if (mesh.isAnimated()) { + targets.add(mesh); + materials.add(geom.getMaterial()); } } else if (child instanceof Node) { findTargets((Node) child); } } - - if (sharedMesh != null) { - targets.add(sharedMesh); - } - } @Override @@ -263,7 +238,7 @@ public class SkeletonControl extends AbstractControl implements Cloneable { softwareSkinUpdate(mesh, offsetMatrices); } } - + private void controlRenderHardware() { offsetMatrices = skeleton.computeSkinningMatrices(); for (Material m : materials) { diff --git a/jme3-core/src/main/java/com/jme3/scene/Geometry.java b/jme3-core/src/main/java/com/jme3/scene/Geometry.java index f56e71a57..89f37ec9d 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Geometry.java +++ b/jme3-core/src/main/java/com/jme3/scene/Geometry.java @@ -580,6 +580,7 @@ public class Geometry extends Spatial { Mesh sharedMesh = getUserData(UserData.JME_SHAREDMESH); if (sharedMesh != null) { getMesh().extractVertexData(sharedMesh); + setUserData(UserData.JME_SHAREDMESH, null); } } }