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 "COLLADASaxFWLRootParser14.h" 13 #include "COLLADASaxFWLFileLoader.h" 14 #include "COLLADASaxFWLIExtraDataCallbackHandler.h" 15 16 #include "COLLADASaxFWLAssetLoader14.h" 17 #include "COLLADASaxFWLSceneLoader14.h" 18 #include "COLLADASaxFWLVisualSceneLoader14.h" 19 #include "COLLADASaxFWLLibraryNodesLoader14.h" 20 #include "COLLADASaxFWLLibraryMaterialsLoader14.h" 21 #include "COLLADASaxFWLLibraryEffectsLoader14.h" 22 #include "COLLADASaxFWLLibraryImagesLoader14.h" 23 #include "COLLADASaxFWLLibraryCamerasLoader14.h" 24 #include "COLLADASaxFWLLibraryLightsLoader14.h" 25 #include "COLLADASaxFWLLibraryAnimationClipsLoader14.h" 26 #include "COLLADASaxFWLLibraryAnimationsLoader14.h" 27 #include "COLLADASaxFWLLibraryControllersLoader14.h" 28 #include "COLLADASaxFWLMeshLoader14.h" 29 #include "COLLADASaxFWLGeometryLoader14.h" 30 31 namespace COLLADASaxFWL 32 { 33 34 template<class Loader, class Loader14> 35 Loader* RootParser14::beginCommon() 36 { 37 mFileLoader->deleteFilePartLoader(); 38 Loader* loader = new Loader(mFileLoader); 39 Loader14* loader14 = new Loader14(loader); 40 loader->setParserImpl( loader14 ); 41 mFileLoader->setPartLoader(loader); 42 mFileLoader->setParser(loader14); 43 return loader; 44 } 45 46 template<class Loader, class Loader14> 47 Loader* RootParser14::beginCommonWithId( const char * id) 48 { 49 mFileLoader->deleteFilePartLoader(); 50 Loader* loader = new Loader(mFileLoader); 51 Loader14* loader14 = new Loader14(loader); 52 loader->setParserImpl( loader14 ); 53 mFileLoader->setPartLoader(loader); 54 mFileLoader->setParser(loader14); 55 mFileLoader->addToSidTree( id, 0); 56 return loader; 57 } 58 59 60 template<class Loader, class Loader14> 61 Loader* RootParser14::beginCommonCTorWithId( const char * id ) 62 { 63 mFileLoader->deleteFilePartLoader(); 64 Loader* loader = new Loader(mFileLoader, id); 65 Loader14* loader14 = new Loader14(loader); 66 loader->setParserImpl( loader14 ); 67 mFileLoader->setPartLoader(loader); 68 mFileLoader->setParser(loader14); 69 mFileLoader->addToSidTree( id, 0); 70 return loader; 71 } 72 73 //----------------------------- RootParser14(FileLoader * fileLoader)74 RootParser14::RootParser14( FileLoader* fileLoader ) 75 : mFileLoader ( fileLoader ) 76 { 77 } 78 79 //----------------------------- begin__asset()80 bool RootParser14::begin__asset() 81 { 82 SaxVirtualFunctionTest14(begin__asset()); 83 beginCommon<AssetLoader, AssetLoader14>(); 84 return true; 85 } 86 87 //------------------------------ begin__scene()88 bool RootParser14::begin__scene() 89 { 90 SaxVirtualFunctionTest14(begin__scene()); 91 beginCommon<SceneLoader, SceneLoader14>(); 92 return true; 93 } 94 95 //----------------------------- begin__visual_scene(const COLLADASaxFWL14::visual_scene__AttributeData & attributeData)96 bool RootParser14::begin__visual_scene( const COLLADASaxFWL14::visual_scene__AttributeData& attributeData ) 97 { 98 SaxVirtualFunctionTest14(begin__visual_scene(attributeData)); 99 beginCommonCTorWithId<VisualSceneLoader, VisualSceneLoader14>(attributeData.id); 100 return true; 101 } 102 103 //----------------------------- begin__geometry(const COLLADASaxFWL14::geometry__AttributeData & attributeData)104 bool RootParser14::begin__geometry( const COLLADASaxFWL14::geometry__AttributeData& attributeData ) 105 { 106 SaxVirtualFunctionTest14(begin__geometry(attributeData)); 107 GeometryLoader* geometryLoader = beginCommonWithId<GeometryLoader, GeometryLoader14>(attributeData.id); 108 if ( attributeData.name ) 109 geometryLoader->setGeometryName (attributeData.name); 110 if ( attributeData.id ) 111 geometryLoader->setGeometryId (attributeData.id); 112 return true; 113 } 114 115 //----------------------------- begin__library_nodes(const COLLADASaxFWL14::library_nodes__AttributeData & attributeData)116 bool RootParser14::begin__library_nodes( const COLLADASaxFWL14::library_nodes__AttributeData& attributeData ) 117 { 118 SaxVirtualFunctionTest14(begin__library_nodes(attributeData)); 119 beginCommonWithId<LibraryNodesLoader, LibraryNodesLoader14>(attributeData.id); 120 return true; 121 } 122 123 //----------------------------- begin__library_materials(const COLLADASaxFWL14::library_materials__AttributeData & attributeData)124 bool RootParser14::begin__library_materials( const COLLADASaxFWL14::library_materials__AttributeData& attributeData ) 125 { 126 SaxVirtualFunctionTest14(begin__library_materials(attributeData)); 127 beginCommonWithId<LibraryMaterialsLoader, LibraryMaterialsLoader14>(attributeData.id); 128 return true; 129 } 130 131 //----------------------------- begin__library_effects(const COLLADASaxFWL14::library_effects__AttributeData & attributeData)132 bool RootParser14::begin__library_effects( const COLLADASaxFWL14::library_effects__AttributeData& attributeData ) 133 { 134 SaxVirtualFunctionTest14(begin__library_effects(attributeData)); 135 beginCommonWithId<LibraryEffectsLoader, LibraryEffectsLoader14>(attributeData.id); 136 return true; 137 } 138 139 //----------------------------- begin__library_cameras(const COLLADASaxFWL14::library_cameras__AttributeData & attributeData)140 bool RootParser14::begin__library_cameras( const COLLADASaxFWL14::library_cameras__AttributeData& attributeData ) 141 { 142 SaxVirtualFunctionTest14(begin__library_cameras(attributeData)); 143 beginCommonWithId<LibraryCamerasLoader, LibraryCamerasLoader14>(attributeData.id); 144 return true; 145 } 146 147 //----------------------------- begin__library_lights(const COLLADASaxFWL14::library_lights__AttributeData & attributeData)148 bool RootParser14::begin__library_lights( const COLLADASaxFWL14::library_lights__AttributeData& attributeData ) 149 { 150 SaxVirtualFunctionTest14(begin__library_lights(attributeData)); 151 beginCommonWithId<LibraryLightsLoader, LibraryLightsLoader14>(attributeData.id); 152 return true; 153 } 154 155 //----------------------------- begin__library_images(const COLLADASaxFWL14::library_images__AttributeData & attributeData)156 bool RootParser14::begin__library_images( const COLLADASaxFWL14::library_images__AttributeData& attributeData ) 157 { 158 SaxVirtualFunctionTest14(begin__library_images(attributeData)); 159 beginCommonWithId<LibraryImagesLoader, LibraryImagesLoader14>(attributeData.id); 160 return true; 161 } 162 163 //----------------------------- begin__library_animation_clips(const COLLADASaxFWL14::library_animation_clips__AttributeData & attributeData)164 bool RootParser14::begin__library_animation_clips( const COLLADASaxFWL14::library_animation_clips__AttributeData& attributeData ) 165 { 166 SaxVirtualFunctionTest14(begin__library_animation_clips(attributeData)); 167 beginCommonWithId<LibraryAnimationClipsLoader, LibraryAnimationClipsLoader14>(attributeData.id); 168 return true; 169 } 170 171 //----------------------------- begin__library_animations(const COLLADASaxFWL14::library_animations__AttributeData & attributeData)172 bool RootParser14::begin__library_animations( const COLLADASaxFWL14::library_animations__AttributeData& attributeData ) 173 { 174 SaxVirtualFunctionTest14(begin__library_animations(attributeData)); 175 beginCommonWithId<LibraryAnimationsLoader, LibraryAnimationsLoader14>(attributeData.id); 176 return true; 177 } 178 179 //----------------------------- begin__library_controllers(const COLLADASaxFWL14::library_controllers__AttributeData & attributeData)180 bool RootParser14::begin__library_controllers( const COLLADASaxFWL14::library_controllers__AttributeData& attributeData ) 181 { 182 SaxVirtualFunctionTest14(begin__library_controllers(attributeData)); 183 beginCommonWithId<LibraryControllersLoader, LibraryControllersLoader14>(attributeData.id); 184 return true; 185 } 186 187 //----------------------------- end__COLLADA()188 bool RootParser14::end__COLLADA() 189 { 190 SaxVirtualFunctionTest14(end__COLLADA()); 191 return true; 192 } 193 194 //----------------------------- begin__technique(const COLLADASaxFWL14::technique__AttributeData & attributeData)195 bool RootParser14::begin__technique ( const COLLADASaxFWL14::technique__AttributeData& attributeData ) 196 { 197 SaxVirtualFunctionTest14(begin__technique(attributeData)); 198 technique__AttributeData attr; 199 attr.profile = attributeData.profile; 200 return base__begin__technique ( attr, getUniqueId(), getObject() ); 201 } 202 203 } 204