buildTransformList method

dynamic buildTransformList(
  1. XmlElement node
)

Implementation

buildTransformList(XmlElement node ) {
  final transforms = [];
  final elements = collada.xpath( '//node[@id="${node.getAttribute('id')}"]' ).toString().split('\n');
  for (final child in elements) {
    final data = child.split('>')..removeLast();
    final names = data.first.replaceAll('<', '').split(' ');
    final name = names.first.trim();
    final String? sid = names.length > 1 && names[1].contains('sid')?names[1].replaceAll('"', '').replaceAll('sid=', ""):null;
    final innerText = data.last.split('</').first.trim();
    var array, vector;
    switch ( name) {
      case 'matrix':
        array = parseFloats( innerText );
        final matrix = Matrix4.identity().copyFromArray( array ).transpose();
        transforms.add( {
          'sid': sid,
          'type': name,
          'obj': matrix
        } );
        break;
      case 'translate':
      case 'scale':
        array = parseFloats( innerText );
        vector = Vector3().copyFromArray( array );
        transforms.add( {
          'sid': sid,
          'type': name,
          'obj': vector
        } );
        break;
      case 'rotate':
        array = parseFloats( innerText );
        vector = Vector3().copyFromArray( array );
        final angle = MathUtils.degToRad( array[ 3 ] );
        transforms.add( {
          'sid': sid,
          'type': name,
          'obj': vector,
          'angle': angle
        } );
        break;
    }
  }

  return transforms;
}