diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-08-05 01:25:19 +0400 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2012-08-05 01:25:19 +0400 |
commit | 021dd5fb40663d1f9422adddc86c0886d32ae13e (patch) | |
tree | 7189bb13a4cdfcd23c68017812e6f5a741096b71 /source/blender/collada/AnimationImporter.cpp | |
parent | 7cfe6e0fdaa6fbd05bd0a250f147cd1f0dda557c (diff) |
COLLADA: added initial support for ymag and yfov in importer. fixes issue #32237
Diffstat (limited to 'source/blender/collada/AnimationImporter.cpp')
-rw-r--r-- | source/blender/collada/AnimationImporter.cpp | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index 9c11358ce7f..3b5b96bc544 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -934,12 +934,24 @@ void AnimationImporter::translate_Animations(COLLADAFW::Node *node, Assign_float_animations(listid, AnimCurves, "lens"); } + else if ((animType->camera & CAMERA_YFOV) != 0) { + const COLLADAFW::AnimatableFloat *yfov = &(camera->getYFov()); + const COLLADAFW::UniqueId& listid = yfov->getAnimationList(); + Assign_float_animations(listid, AnimCurves, "lens"); + } + else if ((animType->camera & CAMERA_XMAG) != 0) { const COLLADAFW::AnimatableFloat *xmag = &(camera->getXMag()); const COLLADAFW::UniqueId& listid = xmag->getAnimationList(); Assign_float_animations(listid, AnimCurves, "ortho_scale"); } + else if ((animType->camera & CAMERA_YMAG) != 0) { + const COLLADAFW::AnimatableFloat *ymag = &(camera->getYMag()); + const COLLADAFW::UniqueId& listid = ymag->getAnimationList(); + Assign_float_animations(listid, AnimCurves, "ortho_scale"); + } + if ((animType->camera & CAMERA_ZFAR) != 0) { const COLLADAFW::AnimatableFloat *zfar = &(camera->getFarClippingPlane()); const COLLADAFW::UniqueId& listid = zfar->getAnimationList(); @@ -1166,14 +1178,22 @@ AnimationImporter::AnimMix *AnimationImporter::get_animation_type(const COLLADAF const COLLADAFW::InstanceCameraPointerArray& nodeCameras = node->getInstanceCameras(); for (unsigned int i = 0; i < nodeCameras.getCount(); i++) { - const COLLADAFW::Camera *camera = (COLLADAFW::Camera *) FW_object_map[nodeCameras[i]->getInstanciatedObjectId()]; - - if (camera->getCameraType() == COLLADAFW::Camera::PERSPECTIVE) { - types->camera = setAnimType(&(camera->getXMag()), (types->camera), CAMERA_XFOV); + const COLLADAFW::Camera *camera = (COLLADAFW::Camera *) FW_object_map[nodeCameras[i]->getInstanciatedObjectId()]; + const bool is_perspective_type = camera->getCameraType() == COLLADAFW::Camera::PERSPECTIVE; + + int addition; + const COLLADAFW::Animatable *mag; + const COLLADAFW::UniqueId listid = camera->getYMag().getAnimationList(); + if (animlist_map.find(listid) != animlist_map.end()) { + mag = &(camera->getYMag()); + addition = (is_perspective_type) ? CAMERA_YFOV: CAMERA_YMAG; } else { - types->camera = setAnimType(&(camera->getXMag()), (types->camera), CAMERA_XMAG); + mag = &(camera->getXMag()); + addition = (is_perspective_type) ? CAMERA_XFOV: CAMERA_XMAG; } + types->camera = setAnimType(mag, (types->camera), addition); + types->camera = setAnimType(&(camera->getFarClippingPlane()), (types->camera), CAMERA_ZFAR); types->camera = setAnimType(&(camera->getNearClippingPlane()), (types->camera), CAMERA_ZNEAR); @@ -1205,10 +1225,14 @@ AnimationImporter::AnimMix *AnimationImporter::get_animation_type(const COLLADAF int AnimationImporter::setAnimType(const COLLADAFW::Animatable *prop, int types, int addition) { - const COLLADAFW::UniqueId& listid = prop->getAnimationList(); + int anim_type; + const COLLADAFW::UniqueId& listid = prop->getAnimationList(); if (animlist_map.find(listid) != animlist_map.end()) - return types | addition; - else return types; + anim_type = types | addition; + else + anim_type = types; + + return anim_type; } // Is not used anymore. |