processNode method

void processNode(
  1. Map<int, ProcessedNode> processedNodes,
  2. AnimationState animation
)

Implementation

void processNode(
  Map<int, ProcessedNode> processedNodes,
  AnimationState animation,
) {
  final resultMatrix = Matrix4.identity();

  // parent
  final parentNodeIndex = this.parentNodeIndex;
  if (parentNodeIndex != null) {
    resultMatrix.multiply(processedNodes[parentNodeIndex]!.combinedTransform);
  }

  // local + animation
  final localTransform = animation.maybeTransform(nodeIndex, transform);
  resultMatrix.multiply(localTransform);

  final jointTransforms = computeJointsPerSurface(processedNodes);

  processedNodes[nodeIndex] = ProcessedNode(
    node: this,
    combinedTransform: resultMatrix,
    jointTransforms: jointTransforms,
  );
}