From 92800f61d3f7c3823d7f98e10ef3cfb746f7912d Mon Sep 17 00:00:00 2001 From: RainWarrior Date: Tue, 10 May 2016 10:46:04 +0300 Subject: [PATCH] Fixed joint animation application correctly. --- .../common/model/animation/Clips.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/minecraftforge/common/model/animation/Clips.java b/src/main/java/net/minecraftforge/common/model/animation/Clips.java index 8528b335c1..7955d8b884 100644 --- a/src/main/java/net/minecraftforge/common/model/animation/Clips.java +++ b/src/main/java/net/minecraftforge/common/model/animation/Clips.java @@ -282,15 +282,14 @@ public final class Clips return Optional.absent(); } IJoint joint = (IJoint)part.get(); + // TODO: Cache clip application? TRSRTransformation jointTransform = clip.apply(joint).apply(time).compose(joint.getInvBindPose()); - Optional parentTransform = Optional.absent(); - if(joint.getParent().isPresent()) + Optional parent = joint.getParent(); + while(parent.isPresent()) { - parentTransform = apply(Optional.of(joint.getParent().get())); - } - if(parentTransform.isPresent()) - { - jointTransform = parentTransform.get().compose(jointTransform); + TRSRTransformation parentTransform = clip.apply(parent.get()).apply(time); + jointTransform = parentTransform.compose(jointTransform); + parent = parent.get().getParent(); } return Optional.of(jointTransform); }