parse method

Future<ColladaData?> parse()

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
    );
}