public void Evaluate(float timeInSecond) { if (RefNode == null || AdditiveNode == null) { Bricks.Animation.Runtime.CGfxAnimationRuntime.ZeroPose(OutPose); return; } RefNode.Evaluate(timeInSecond); AdditiveNode.Evaluate(timeInSecond); Bricks.Animation.Runtime.CGfxAnimationRuntime.CopyPoseAndConvertRotationToMeshSpace(mAddPose, AdditiveNode.OutPose); Bricks.Animation.Runtime.CGfxAnimationRuntime.CopyPoseAndConvertRotationToMeshSpace(mRefPose, RefNode.OutPose); Bricks.Animation.Runtime.CGfxAnimationRuntime.MinusPose(OutPose, mRefPose, mAddPose); }
public void Evaluate(float timeInSecond) { BaseNode?.Evaluate(timeInSecond); AdditiveNode?.Evaluate(timeInSecond); if (AdditiveNode == null && BaseNode != null) { Bricks.Animation.Runtime.CGfxAnimationRuntime.CopyPose(OutPose, BaseNode.OutPose); return; } if (AdditiveNode != null && BaseNode == null) { Bricks.Animation.Runtime.CGfxAnimationRuntime.CopyPose(OutPose, AdditiveNode.OutPose); } Bricks.Animation.Runtime.CGfxAnimationRuntime.CopyPoseAndConvertRotationToMeshSpace(mMeshSpaceBasePose, BaseNode.OutPose); if (EvaluateAlpha != null) { Bricks.Animation.Runtime.CGfxAnimationRuntime.AddPose(OutPose, mMeshSpaceBasePose, AdditiveNode.OutPose, EvaluateAlpha.Invoke()); } else { Bricks.Animation.Runtime.CGfxAnimationRuntime.AddPose(OutPose, mMeshSpaceBasePose, AdditiveNode.OutPose, 1); } Bricks.Animation.Runtime.CGfxAnimationRuntime.ConvertRotationToLocalSpace(OutPose); }