parseKinematicsJointParameter method

Map<String, dynamic> parseKinematicsJointParameter(
  1. XmlElement xml
)

Implementation

Map<String,dynamic> parseKinematicsJointParameter(XmlElement xml ) {
  final Map<String,dynamic> data = {
    'sid': xml.getAttribute( 'sid' ),
    'name': xml.getAttribute( 'name' ) ?? '',
    'axis': Vector3(),
    'limits': {
      'min': 0.0,
      'max': 0.0
    },
    'type': xml.name.local,
    'static': false,
    'zeroPosition': 0,
    'middlePosition': 0
  };

  for (final child in xml.descendantElements) {
    switch ( child.name.local ) {
      case 'axis':
        final array = parseFloats( child.innerText );
        (data['axis'] as Vector3).copyFromArray( array );
        break;
      case 'limits':
        final max = child.getElement( 'max' )!;
        final min = child.getElement( 'min' )!;

        data['limits']['max'] = double.parse( max.innerText );
        data['limits']['min'] = double.parse( min.innerText );
        break;
    }
  }

  if ( data['limits']['min'] >= data['limits']['max'] ) {
    data['static'] = true;
  }

  data['middlePosition'] = ( data['limits']['min'] + data['limits']['max'] ) / 2.0;

  return data;
}