fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / FileIO / Collada / OSGColladaScene.cpp
blobad167dde786b03a621f0f7518e5a5aa368427a1d
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2009 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 #if __GNUC__ >= 4 || __GNUC_MINOR__ >=3
40 #pragma GCC diagnostic ignored "-Wold-style-cast"
41 #endif
43 #include "OSGColladaScene.h"
45 #if defined(OSG_WITH_COLLADA) || defined(OSG_DO_DOC)
47 #include "OSGColladaLog.h"
48 #include "OSGColladaGlobal.h"
49 #include "OSGColladaInstanceVisualScene.h"
50 #include "OSGColladaVisualScene.h"
52 #include <dom/domCOLLADA.h>
53 #include <dom/domInstanceWithExtra.h>
55 /*! \class OSG::ColladaScene
56 Handles the &lt;scene&gt; tag.
59 OSG_BEGIN_NAMESPACE
61 ColladaElementRegistrationHelper ColladaScene::_regHelper(
62 &ColladaScene::create, "scene");
65 ColladaElementTransitPtr
66 ColladaScene::create(daeElement *elem, ColladaGlobal *global)
68 return ColladaElementTransitPtr(new ColladaScene(elem, global));
71 void
72 ColladaScene::read(ColladaElement *colElemParent)
74 OSG_COLLADA_LOG(("ColladaScene::read\n"));
76 domCOLLADA::domSceneRef scene = getDOMElementAs<domCOLLADA::domScene>();
78 OSG_ASSERT(scene != NULL);
80 domInstanceWithExtraRef instVisScene =
81 scene->getInstance_visual_scene();
82 ColladaInstanceVisualSceneRefPtr colInstVisScene = NULL;
84 if(instVisScene != NULL)
86 colInstVisScene = dynamic_pointer_cast<ColladaInstanceVisualScene>(
87 ColladaElementFactory::the()->create(instVisScene, getGlobal()));
89 colInstVisScene->read(this);
91 else
93 SWARNING << "ColladaScene::read: No <instance_visual_scene> tag!"
94 << std::endl;
97 OSG_ASSERT(colInstVisScene != NULL);
99 // OSG_ASSERT(colInstVisScene->getTargetElem() != NULL);
101 if(colInstVisScene->getTargetElem() == NULL)
102 return;
104 ColladaInstInfoRefPtr colInstInfo =
105 ColladaVisualScene::ColladaVisualSceneInstInfo::create(
106 this, colInstVisScene);
108 Node *rootN = colInstVisScene->getTargetElem()->createInstance(colInstInfo);
110 getGlobal()->setRoot(rootN);
113 ColladaScene::ColladaScene(daeElement *elem, ColladaGlobal *global)
114 : Inherited(elem, global)
118 ColladaScene::~ColladaScene(void)
122 OSG_END_NAMESPACE
124 #endif // OSG_WITH_COLLADA