1 /* 2 Copyright (c) 2008-2009 NetAllied Systems GmbH 3 4 This file is part of COLLADASaxFrameworkLoader. 5 6 Licensed under the MIT Open Source License, 7 for details please see LICENSE file or the website 8 http://www.opensource.org/licenses/mit-license.php 9 */ 10 11 #include "COLLADASaxFWLStableHeaders.h" 12 #include "COLLADASaxFWLRootParser15.h" 13 #include "COLLADASaxFWLFileLoader.h" 14 #include "COLLADASaxFWLIExtraDataCallbackHandler.h" 15 16 #include "COLLADASaxFWLAssetLoader15.h" 17 #include "COLLADASaxFWLSceneLoader15.h" 18 #include "COLLADASaxFWLVisualSceneLoader15.h" 19 #include "COLLADASaxFWLLibraryNodesLoader15.h" 20 #include "COLLADASaxFWLLibraryMaterialsLoader15.h" 21 #include "COLLADASaxFWLLibraryEffectsLoader15.h" 22 #include "COLLADASaxFWLLibraryCamerasLoader15.h" 23 #include "COLLADASaxFWLLibraryLightsLoader15.h" 24 #include "COLLADASaxFWLLibraryImagesLoader15.h" 25 #include "COLLADASaxFWLLibraryAnimationClipsLoader15.h" 26 #include "COLLADASaxFWLLibraryAnimationsLoader15.h" 27 #include "COLLADASaxFWLLibraryControllersLoader15.h" 28 #include "COLLADASaxFWLMeshLoader15.h" 29 #include "COLLADASaxFWLGeometryLoader15.h" 30 #include "COLLADASaxFWLLibraryFormulasLoader15.h" 31 #include "COLLADASaxFWLLibraryJointsLoader15.h" 32 #include "COLLADASaxFWLLibraryKinematicsModelsLoader15.h" 33 #include "COLLADASaxFWLLibraryArticulatedSystemsLoader15.h" 34 #include "COLLADASaxFWLLibraryKinematicsScenesLoader15.h" 35 36 namespace COLLADASaxFWL 37 { 38 39 template<class Loader, class Loader15> 40 Loader* RootParser15::beginCommon( ) 41 { 42 mFileLoader->deleteFilePartLoader(); 43 Loader* loader = new Loader(mFileLoader); 44 Loader15* loader15 = new Loader15(loader); 45 loader->setParserImpl( loader15 ); 46 mFileLoader->setPartLoader(loader); 47 mFileLoader->setParser(loader15); 48 return loader; 49 } 50 51 template<class Loader, class Loader15> 52 Loader* RootParser15::beginCommonWithId( const char * id) 53 { 54 mFileLoader->deleteFilePartLoader(); 55 Loader* loader = new Loader(mFileLoader); 56 Loader15* loader15 = new Loader15(loader); 57 loader->setParserImpl( loader15 ); 58 mFileLoader->setPartLoader(loader); 59 mFileLoader->setParser(loader15); 60 mFileLoader->addToSidTree( id, 0); 61 return loader; 62 } 63 64 template<class Loader, class Loader15> 65 Loader* RootParser15::beginCommonCTorWithId( const char * id ) 66 { 67 mFileLoader->deleteFilePartLoader(); 68 Loader* loader = new Loader(mFileLoader, id); 69 Loader15* loader15 = new Loader15(loader); 70 loader->setParserImpl( loader15 ); 71 mFileLoader->setPartLoader(loader); 72 mFileLoader->setParser(loader15); 73 mFileLoader->addToSidTree( id, 0); 74 return loader; 75 } 76 77 78 //----------------------------- RootParser15(FileLoader * fileLoader)79 RootParser15::RootParser15( FileLoader* fileLoader ) 80 : mFileLoader ( fileLoader ) 81 { 82 83 } 84 85 //----------------------------- begin__asset()86 bool RootParser15::begin__asset() 87 { 88 SaxVirtualFunctionTest15(begin__asset()); 89 beginCommon<AssetLoader, AssetLoader15>(); 90 return true; 91 } 92 93 //------------------------------ begin__scene()94 bool RootParser15::begin__scene() 95 { 96 SaxVirtualFunctionTest15(begin__scene()); 97 beginCommon<SceneLoader, SceneLoader15>(); 98 return true; 99 } 100 101 //----------------------------- begin__visual_scene(const COLLADASaxFWL15::visual_scene__AttributeData & attributeData)102 bool RootParser15::begin__visual_scene( const COLLADASaxFWL15::visual_scene__AttributeData& attributeData ) 103 { 104 SaxVirtualFunctionTest15(begin__visual_scene(attributeData)); 105 beginCommonCTorWithId<VisualSceneLoader, VisualSceneLoader15>(attributeData.id); 106 return true; 107 } 108 109 //----------------------------- begin__geometry(const COLLADASaxFWL15::geometry__AttributeData & attributeData)110 bool RootParser15::begin__geometry( const COLLADASaxFWL15::geometry__AttributeData& attributeData ) 111 { 112 SaxVirtualFunctionTest15(begin__geometry(attributeData)); 113 GeometryLoader* geometryLoader = beginCommonWithId<GeometryLoader, GeometryLoader15>(attributeData.id); 114 if ( attributeData.name ) 115 geometryLoader->setGeometryName (attributeData.name); 116 if ( attributeData.id ) 117 geometryLoader->setGeometryId (attributeData.id); 118 return true; 119 } 120 121 //----------------------------- begin__library_nodes(const COLLADASaxFWL15::library_nodes__AttributeData & attributeData)122 bool RootParser15::begin__library_nodes( const COLLADASaxFWL15::library_nodes__AttributeData& attributeData ) 123 { 124 SaxVirtualFunctionTest15(begin__library_nodes(attributeData)); 125 beginCommonWithId<LibraryNodesLoader, LibraryNodesLoader15>(attributeData.id); 126 return true; 127 } 128 129 //----------------------------- begin__library_materials(const COLLADASaxFWL15::library_materials__AttributeData & attributeData)130 bool RootParser15::begin__library_materials( const COLLADASaxFWL15::library_materials__AttributeData& attributeData ) 131 { 132 SaxVirtualFunctionTest15(begin__library_materials(attributeData)); 133 beginCommonWithId<LibraryMaterialsLoader, LibraryMaterialsLoader15>(attributeData.id); 134 return true; 135 } 136 137 //----------------------------- begin__library_effects(const COLLADASaxFWL15::library_effects__AttributeData & attributeData)138 bool RootParser15::begin__library_effects( const COLLADASaxFWL15::library_effects__AttributeData& attributeData ) 139 { 140 SaxVirtualFunctionTest15(begin__library_effects(attributeData)); 141 beginCommonWithId<LibraryEffectsLoader, LibraryEffectsLoader15>(attributeData.id); 142 return true; 143 } 144 145 //----------------------------- begin__library_cameras(const COLLADASaxFWL15::library_cameras__AttributeData & attributeData)146 bool RootParser15::begin__library_cameras( const COLLADASaxFWL15::library_cameras__AttributeData& attributeData ) 147 { 148 SaxVirtualFunctionTest15(begin__library_cameras(attributeData)); 149 beginCommonWithId<LibraryCamerasLoader, LibraryCamerasLoader15>(attributeData.id); 150 return true; 151 } 152 153 //----------------------------- begin__library_lights(const COLLADASaxFWL15::library_lights__AttributeData & attributeData)154 bool RootParser15::begin__library_lights( const COLLADASaxFWL15::library_lights__AttributeData& attributeData ) 155 { 156 SaxVirtualFunctionTest15(begin__library_lights(attributeData)); 157 beginCommonWithId<LibraryLightsLoader, LibraryLightsLoader15>(attributeData.id); 158 return true; 159 } 160 161 //----------------------------- begin__library_images(const COLLADASaxFWL15::library_images__AttributeData & attributeData)162 bool RootParser15::begin__library_images( const COLLADASaxFWL15::library_images__AttributeData& attributeData ) 163 { 164 SaxVirtualFunctionTest15(begin__library_images(attributeData)); 165 beginCommonWithId<LibraryImagesLoader, LibraryImagesLoader15>(attributeData.id); 166 return true; 167 } 168 169 //----------------------------- begin__library_animation_clips(const COLLADASaxFWL15::library_animation_clips__AttributeData & attributeData)170 bool RootParser15::begin__library_animation_clips( const COLLADASaxFWL15::library_animation_clips__AttributeData& attributeData ) 171 { 172 SaxVirtualFunctionTest15(begin__library_animation_clips(attributeData)); 173 beginCommonWithId<LibraryAnimationClipsLoader, LibraryAnimationClipsLoader15>(attributeData.id); 174 return true; 175 } 176 177 //----------------------------- begin__library_animations(const COLLADASaxFWL15::library_animations__AttributeData & attributeData)178 bool RootParser15::begin__library_animations( const COLLADASaxFWL15::library_animations__AttributeData& attributeData ) 179 { 180 SaxVirtualFunctionTest15(begin__library_animations(attributeData)); 181 beginCommonWithId<LibraryAnimationsLoader, LibraryAnimationsLoader15>(attributeData.id); 182 return true; 183 } 184 185 //----------------------------- begin__library_controllers(const COLLADASaxFWL15::library_controllers__AttributeData & attributeData)186 bool RootParser15::begin__library_controllers( const COLLADASaxFWL15::library_controllers__AttributeData& attributeData ) 187 { 188 SaxVirtualFunctionTest15(begin__library_controllers(attributeData)); 189 beginCommonWithId<LibraryControllersLoader, LibraryControllersLoader15>(attributeData.id); 190 return true; 191 } 192 193 //----------------------------- begin__library_formulas(const COLLADASaxFWL15::library_formulas__AttributeData & attributeData)194 bool RootParser15::begin__library_formulas( const COLLADASaxFWL15::library_formulas__AttributeData& attributeData ) 195 { 196 SaxVirtualFunctionTest15(begin__library_formulas(attributeData)); 197 beginCommonWithId<LibraryFormulasLoader, LibraryFormulasLoader15>(attributeData.id); 198 return true; 199 } 200 201 //----------------------------- begin__library_joints(const COLLADASaxFWL15::library_joints__AttributeData & attributeData)202 bool RootParser15::begin__library_joints( const COLLADASaxFWL15::library_joints__AttributeData& attributeData ) 203 { 204 SaxVirtualFunctionTest15(begin__library_joints(attributeData)); 205 beginCommonWithId<LibraryJointsLoader, LibraryJointsLoader15>(attributeData.id); 206 return true; 207 } 208 209 //----------------------------- begin__library_kinematics_models(const COLLADASaxFWL15::library_kinematics_models__AttributeData & attributeData)210 bool RootParser15::begin__library_kinematics_models( const COLLADASaxFWL15::library_kinematics_models__AttributeData& attributeData ) 211 { 212 SaxVirtualFunctionTest15(begin__library_kinematics_models(attributeData)); 213 beginCommonWithId<LibraryKinematicsModelsLoader, LibraryKinematicsModelsLoader15>(attributeData.id); 214 return true; 215 } 216 217 //----------------------------- begin__library_articulated_systems(const COLLADASaxFWL15::library_articulated_systems__AttributeData & attributeData)218 bool RootParser15::begin__library_articulated_systems( const COLLADASaxFWL15::library_articulated_systems__AttributeData& attributeData ) 219 { 220 SaxVirtualFunctionTest15(begin__library_articulated_systems(attributeData)); 221 beginCommonWithId<LibraryArticulatedSystemsLoader, LibraryArticulatedSystemsLoader15>(attributeData.id); 222 return true; 223 } 224 225 //----------------------------- begin__library_kinematics_scenes(const COLLADASaxFWL15::library_kinematics_scenes__AttributeData & attributeData)226 bool RootParser15::begin__library_kinematics_scenes( const COLLADASaxFWL15::library_kinematics_scenes__AttributeData& attributeData ) 227 { 228 SaxVirtualFunctionTest15(begin__library_kinematics_scenes(attributeData)); 229 beginCommonWithId<LibraryKinematicsScenesLoader, LibraryKinematicsScenesLoader15>(attributeData.id); 230 return true; 231 } 232 233 //----------------------------- end__COLLADA()234 bool RootParser15::end__COLLADA() 235 { 236 SaxVirtualFunctionTest15(end__COLLADA()); 237 return true; 238 } 239 240 //----------------------------- begin__technique____technique_type(const COLLADASaxFWL15::technique____technique_type__AttributeData & attributeData)241 bool RootParser15::begin__technique____technique_type ( const COLLADASaxFWL15::technique____technique_type__AttributeData& attributeData ) 242 { 243 SaxVirtualFunctionTest15(begin__technique____technique_type(attributeData)); 244 technique__AttributeData attr; 245 attr.profile = attributeData.profile; 246 return base__begin__technique ( attr, getUniqueId(), getObject() ); 247 } 248 249 } 250