private Bone recreateBoneStructure(Bone sourceRoot) { Bone targetRoot = getBone(sourceRoot.getName()); List<Bone> children = sourceRoot.getChildren(); for (int i = 0; i < children.size(); i++) { Bone sourceChild = children.get(i); // find my version of the child Bone targetChild = getBone(sourceChild.getName()); targetRoot.addChild(targetChild); recreateBoneStructure(sourceChild); } return targetRoot; }
/** * Special-purpose copy constructor. * <p> * Shallow copies bind pose data from the source skeleton, does not * copy any other data. * * @param source The source Skeleton to copy from */ public Skeleton(Skeleton source) { Bone[] sourceList = source.boneList; boneList = new Bone[sourceList.length]; for (int i = 0; i < sourceList.length; i++) { boneList[i] = new Bone(sourceList[i]); } rootBones = new Bone[source.rootBones.length]; for (int i = 0; i < rootBones.length; i++) { rootBones[i] = recreateBoneStructure(source.rootBones[i]); } createSkinningMatrices(); for (int i = rootBones.length - 1; i >= 0; i--) { rootBones[i].update(); } }
private Bone recreateBoneStructure(Bone sourceRoot) { Bone targetRoot = getBone(sourceRoot.getName()); List<Bone> children = sourceRoot.getChildren(); for (int i = 0; i < children.size(); i++) { Bone sourceChild = children.get(i); // find my version of the child Bone targetChild = getBone(sourceChild.getName()); targetRoot.addChild(targetChild); recreateBoneStructure(sourceChild); } return targetRoot; }
private Bone recreateBoneStructure(Bone sourceRoot) { Bone targetRoot = getBone(sourceRoot.getName()); List<Bone> children = sourceRoot.getChildren(); for (int i = 0; i < children.size(); i++) { Bone sourceChild = children.get(i); // find my version of the child Bone targetChild = getBone(sourceChild.getName()); targetRoot.addChild(targetChild); recreateBoneStructure(sourceChild); } return targetRoot; }
/** * Special-purpose copy constructor. * <p> * Shallow copies bind pose data from the source skeleton, does not * copy any other data. * * @param source The source Skeleton to copy from */ public Skeleton(Skeleton source) { Bone[] sourceList = source.boneList; boneList = new Bone[sourceList.length]; for (int i = 0; i < sourceList.length; i++) { boneList[i] = new Bone(sourceList[i]); } rootBones = new Bone[source.rootBones.length]; for (int i = 0; i < rootBones.length; i++) { rootBones[i] = recreateBoneStructure(source.rootBones[i]); } createSkinningMatrices(); for (int i = rootBones.length - 1; i >= 0; i--) { rootBones[i].update(); } }
/** * Special-purpose copy constructor. * <p> * Shallow copies bind pose data from the source skeleton, does not * copy any other data. * * @param source The source Skeleton to copy from */ public Skeleton(Skeleton source) { Bone[] sourceList = source.boneList; boneList = new Bone[sourceList.length]; for (int i = 0; i < sourceList.length; i++) { boneList[i] = new Bone(sourceList[i]); } rootBones = new Bone[source.rootBones.length]; for (int i = 0; i < rootBones.length; i++) { rootBones[i] = recreateBoneStructure(source.rootBones[i]); } createSkinningMatrices(); for (int i = rootBones.length - 1; i >= 0; i--) { rootBones[i].update(); } }