2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of COLLADASaxFrameworkLoader.
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
11
#include "COLLADASaxFWLStableHeaders.h"
12
#include "COLLADASaxFWLLibraryCamerasLoader.h"
13
#include "COLLADASaxFWLLoader.h"
14
#include "COLLADASaxFWLFileLoader.h"
16
#include "COLLADAFWIWriter.h"
17
#include "COLLADAFWCamera.h"
20
namespace COLLADASaxFWL
23
//------------------------------
24
LibraryCamerasLoader::LibraryCamerasLoader( IFilePartLoader* callingFilePartLoader )
25
: FilePartLoader(callingFilePartLoader)
27
, mCurrentCameraHasX(false)
28
, mCurrentCameraHasY(false)
29
, mCurrentCameraHasAspectRatio(false)
34
//------------------------------
35
LibraryCamerasLoader::~LibraryCamerasLoader()
39
//------------------------------
40
void LibraryCamerasLoader::resetCurrentValues()
43
mCurrentCameraHasX = false;
44
mCurrentCameraHasY = false;
45
mCurrentCameraHasAspectRatio = false;
48
//------------------------------
49
const COLLADAFW::UniqueId& LibraryCamerasLoader::getUniqueId ()
52
return mCurrentCamera->getUniqueId ();
53
return COLLADAFW::UniqueId::INVALID;
56
//------------------------------
57
bool LibraryCamerasLoader::end__library_cameras()
59
getFileLoader()->moveUpInSidTree();
64
//------------------------------
65
bool LibraryCamerasLoader::begin__camera( const camera__AttributeData& attributeData )
67
mCurrentCamera = FW_NEW COLLADAFW::Camera( createUniqueIdFromId( attributeData.id, COLLADAFW::Camera::ID()) );
69
if ( attributeData.name )
70
mCurrentCamera->setName( (const char*) attributeData.name );
71
else if ( attributeData.id )
72
mCurrentCamera->setName( (const char*) attributeData.id );
74
if ( attributeData.id )
75
mCurrentCamera->setOriginalId ( (const char*)attributeData.id );
77
getFileLoader()->addToSidTree( attributeData.id, 0);
81
//------------------------------
82
bool LibraryCamerasLoader::end__camera()
84
// we need to determine the description type
85
// X = 1, Y = 2, aspect ratio = 4
86
int descriptionType = (mCurrentCameraHasX ? 1 : 0) +
87
(mCurrentCameraHasY ? 2 : 0) +
88
(mCurrentCameraHasAspectRatio ? 4 : 0);
89
switch ( descriptionType )
92
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::SINGLE_X);
95
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::SINGLE_Y);
98
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::X_AND_Y);
101
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::ASPECTRATIO_AND_X);
104
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::ASPECTRATIO_AND_Y);
107
mCurrentCamera->setDescriptionType(COLLADAFW::Camera::UNDEFINED);
111
if ( (getObjectFlags() & Loader::CAMERA_FLAG) != 0 )
113
getFileLoader()->addCamera( mCurrentCamera );
115
resetCurrentValues();
116
getFileLoader()->moveUpInSidTree();
120
//------------------------------
121
bool LibraryCamerasLoader::begin__perspective()
123
mCurrentCamera->setCameraType(COLLADAFW::Camera::PERSPECTIVE);
127
//------------------------------
128
bool LibraryCamerasLoader::begin__orthographic()
130
mCurrentCamera->setCameraType(COLLADAFW::Camera::ORTHOGRAPHIC);
134
//------------------------------
135
bool LibraryCamerasLoader::begin__xfov( const xfov__AttributeData& attributeData )
137
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getXFov());
141
//------------------------------
142
bool LibraryCamerasLoader::data__xfov( float value )
144
mCurrentCamera->setXFov( value );
145
mCurrentCameraHasX = true;
149
//------------------------------
150
bool LibraryCamerasLoader::end__xfov()
156
//------------------------------
157
bool LibraryCamerasLoader::begin__yfov( const yfov__AttributeData& attributeData )
159
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getYFov());
163
//------------------------------
164
bool LibraryCamerasLoader::data__yfov( float value )
166
mCurrentCamera->setYFov( value );
167
mCurrentCameraHasY = true;
171
//------------------------------
172
bool LibraryCamerasLoader::end__yfov()
178
//------------------------------
179
bool LibraryCamerasLoader::begin__xmag( const xmag__AttributeData& attributeData )
181
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getXMag());
185
//------------------------------
186
bool LibraryCamerasLoader::data__xmag( float value )
188
mCurrentCamera->setXMag( value );
189
mCurrentCameraHasX = true;
193
//------------------------------
194
bool LibraryCamerasLoader::end__xmag()
200
//------------------------------
201
bool LibraryCamerasLoader::begin__ymag( const ymag__AttributeData& attributeData )
203
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getYMag());
207
//------------------------------
208
bool LibraryCamerasLoader::data__ymag( float value )
210
mCurrentCamera->setYMag( value );
211
mCurrentCameraHasY = true;
215
//------------------------------
216
bool LibraryCamerasLoader::end__ymag()
222
//------------------------------
223
bool LibraryCamerasLoader::begin__aspect_ratio( const aspect_ratio__AttributeData& attributeData )
225
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getAspectRatio());
229
//------------------------------
230
bool LibraryCamerasLoader::data__aspect_ratio( float value )
232
mCurrentCamera->setAspectRatio(value);
233
mCurrentCameraHasAspectRatio = true;
237
//------------------------------
238
bool LibraryCamerasLoader::end__aspect_ratio()
244
//------------------------------
245
bool LibraryCamerasLoader::begin__znear( const znear__AttributeData& attributeData )
247
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getNearClippingPlane());
251
//------------------------------
252
bool LibraryCamerasLoader::data__znear( float value )
254
mCurrentCamera->setNearClippingPlane(value);
258
//------------------------------
259
bool LibraryCamerasLoader::end__znear()
265
//------------------------------
266
bool LibraryCamerasLoader::begin__zfar( const zfar__AttributeData& attributeData )
268
addToSidTree( 0, attributeData.sid, &mCurrentCamera->getFarClippingPlane());
272
//------------------------------
273
bool LibraryCamerasLoader::data__zfar( float value )
275
mCurrentCamera->setFarClippingPlane(value);
279
//------------------------------
280
bool LibraryCamerasLoader::end__zfar()
286
} // namespace COLLADASaxFWL