parse method
Implementation
Future<ColladaData?> parse() async{
if (text.isEmpty) {
return ColladaData(scene: Scene());
}
// metadata
final version = collada.getAttribute( 'version' );
console.info( 'ColladaLoader: File version $version');
parseLibrary( collada, 'library_animations', 'animation', parseAnimation );
parseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );
parseLibrary( collada, 'library_controllers', 'controller', parseController );
parseLibrary( collada, 'library_images', 'image', parseImage );
parseLibrary( collada, 'library_effects', 'effect', parseEffect );
parseLibrary( collada, 'library_materials', 'material', parseMaterial );
parseLibrary( collada, 'library_cameras', 'camera', parseCamera );
parseLibrary( collada, 'library_lights', 'light', parseLight );
parseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );
parseLibrary( collada, 'library_nodes', 'node', parseNode );
parseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );
parseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );
parseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );
parseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );
await buildLibrary( library['animations']!, buildAnimation );
await buildLibrary( library['clips']!, buildAnimationClip );
await buildLibrary( library['controllers']!, buildController );
await buildLibrary( library['images']!, buildImage );
await buildLibrary( library['effects']!, buildEffect );
await buildLibrary( library['materials']!, buildMaterial );
await buildLibrary( library['cameras']!, buildCamera );
await buildLibrary( library['lights']!, buildLight );
await buildLibrary( library['geometries']!, buildGeometry );
await buildLibrary( library['visualScenes']!, buildVisualScene );
await setupAnimations();
await setupKinematics();
final AnimationObject scene = await parseScene( collada.getElement( 'scene' )!);
scene.animations = animations;
if ( asset['upAxis'] == 'Z_UP' ) {
console.warning( 'ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289.' );
scene.rotation.set( - math.pi / 2, 0.0, 0.0 );
}
scene.scale.scale( asset['unit'] );
return ColladaData(
animations: animations,
kinematics: kinematics,
library: library,
scene: scene
);
}