buildTransformList method
dynamic
buildTransformList(
- 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;
}