parseAnimationChannel method
Map<String, dynamic>
parseAnimationChannel(
- XmlElement xml
)
Implementation
Map<String,dynamic> parseAnimationChannel(XmlElement xml ) {
final Map<String,dynamic> data = {};
final String target = xml.getAttribute( 'target' )!;
List<String> parts = target.split( '/' );
final id = parts.removeAt(0);
String sid = parts.removeAt(0);
// check selection syntax
final arraySyntax = sid.contains( '(' );
final memberSyntax = sid.contains( '.' );
if ( memberSyntax ) {
parts = sid.split( '.' );
sid = parts.removeAt(0);
data['member'] = parts.removeAt(0);
} else if ( arraySyntax ) {
// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.
final indiceStrings = sid.split( '(' );
final indices = [];
sid = indiceStrings.removeAt(0);
for (int i = 0; i < indices.length; i ++ ) {
indices[ i ] = int.parse( indiceStrings[ i ].replaceAll(')', '' ));
}
data['indices'] = indices;
}
data['id'] = id;
data['sid'] = sid;
data['arraySyntax'] = arraySyntax;
data['memberSyntax'] = memberSyntax;
data['sampler'] = parseId( xml.getAttribute( 'source' )! );
return data;
}