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);
 }