Selaa lähdekoodia

DynamicBones: fix dynamic with scaled objects

lviguier 2 kuukautta sitten
vanhempi
commit
8dd00073f0
1 muutettua tiedostoa jossa 3 lisäystä ja 2 poistoa
  1. 3 2
      h3d/scene/Skin.hx

+ 3 - 2
h3d/scene/Skin.hx

@@ -199,7 +199,8 @@ class DynamicJointData extends JointData {
 		// Slackness (length keeper)
 		var dirToParent = (newWorldPos - skin.jointsData[j.parent.index].currentAbsPose.getPosition()).normalized();
 		var lengthToParent = relPos.getPosition().length();
-		expectedPos.load(skin.jointsData[j.parent.index].currentAbsPose.getPosition() + dirToParent * lengthToParent);
+		var scale = skin.jointsData[j.parent.index].currentAbsPose.getScale(); //! Non uniform scale won't work
+		expectedPos.load(skin.jointsData[j.parent.index].currentAbsPose.getPosition() + (dirToParent * lengthToParent * scale.x));
 		newWorldPos.lerp(expectedPos, newWorldPos, j.slackness);
 
 		// Apply lock axis
@@ -488,7 +489,7 @@ class Skin extends MultiMaterial {
 		if ( prevJointsFrame == hxd.Timer.frameCount )
 			return;
 		prevJointsFrame = hxd.Timer.frameCount;
-		
+
 		if ( prevPalette == null ) {
 			prevPalette = [];
 			for ( _ in 0...currentPalette.length )