This commit is contained in:
@@ -919,28 +919,30 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD
|
||||
|
||||
for (unsigned int i = 0; i < nodeLights.getCount(); i++) {
|
||||
const COLLADAFW::Light *light = (COLLADAFW::Light *) FW_object_map[nodeLights[i]->getInstanciatedObjectId()];
|
||||
|
||||
const COLLADAFW::Color *col = &(light->getColor());
|
||||
const COLLADAFW::UniqueId& col_listid = col->getAnimationList();
|
||||
//
|
||||
//const COLLADAFW::Color *col = &(light->getColor());
|
||||
//const COLLADAFW::UniqueId& col_listid = col->getAnimationList();
|
||||
|
||||
//check if color has animations
|
||||
if (animlist_map.find(col_listid) != animlist_map.end())
|
||||
// type = type|LIGHT_FOA;
|
||||
types->light = types->light|LIGHT_COLOR;
|
||||
|
||||
const COLLADAFW::AnimatableFloat *fallOffAngle = &(light->getFallOffAngle());
|
||||
const COLLADAFW::UniqueId& foa_listid = fallOffAngle ->getAnimationList();
|
||||
////check if color has animations
|
||||
//if (animlist_map.find(col_listid) != animlist_map.end())
|
||||
//// type = type|LIGHT_FOA;
|
||||
// types->light = types->light|LIGHT_COLOR;
|
||||
types->light = setAnimType(&(light->getColor()),(types->light), LIGHT_COLOR);
|
||||
//
|
||||
//const COLLADAFW::AnimatableFloat *fallOffAngle = &(light->getFallOffAngle());
|
||||
// const COLLADAFW::UniqueId& foa_listid = fallOffAngle ->getAnimationList();
|
||||
|
||||
if (animlist_map.find(foa_listid) != animlist_map.end())
|
||||
// type = type|LIGHT_FOA;
|
||||
types->light = types->light|LIGHT_FOA;
|
||||
//if (animlist_map.find(foa_listid) != animlist_map.end())
|
||||
//// type = type|LIGHT_FOA;
|
||||
// types->light = types->light|LIGHT_FOA;
|
||||
types->light = setAnimType(&(light->getFallOffAngle()),(types->light), LIGHT_FOA);
|
||||
//const COLLADAFW::AnimatableFloat *fallOffExpo = &(light->getFallOffExponent());
|
||||
// const COLLADAFW::UniqueId& foe_listid = fallOffExpo ->getAnimationList();
|
||||
//if (animlist_map.find(foe_listid) != animlist_map.end())
|
||||
// //type = type|LIGHT_FOE;
|
||||
// types->light = types->light|LIGHT_FOE;
|
||||
|
||||
const COLLADAFW::AnimatableFloat *fallOffExpo = &(light->getFallOffExponent());
|
||||
const COLLADAFW::UniqueId& foe_listid = fallOffExpo ->getAnimationList();
|
||||
|
||||
if (animlist_map.find(foe_listid) != animlist_map.end())
|
||||
//type = type|LIGHT_FOE;
|
||||
types->light = types->light|LIGHT_FOE;
|
||||
types->light = setAnimType(&(light->getFallOffExponent()),(types->light), LIGHT_FOE);
|
||||
|
||||
//if ( type != 0) break;
|
||||
if ( types->light != 0) break;
|
||||
@@ -950,24 +952,37 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD
|
||||
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 )
|
||||
{
|
||||
const COLLADAFW::AnimatableFloat *xfov = &(camera->getXFov());
|
||||
const COLLADAFW::UniqueId& xfov_listid = xfov ->getAnimationList();
|
||||
if (animlist_map.find(xfov_listid) != animlist_map.end())
|
||||
//type = type|CAMERA_XFOV;
|
||||
types->camera = types->camera|CAMERA_XFOV;
|
||||
|
||||
//const COLLADAFW::AnimatableFloat *xfov = &(camera->getXFov());
|
||||
//const COLLADAFW::UniqueId& xfov_listid = xfov ->getAnimationList();
|
||||
//if (animlist_map.find(xfov_listid) != animlist_map.end())
|
||||
// //type = type|CAMERA_XFOV;
|
||||
// types->camera = types->camera|CAMERA_XFOV;
|
||||
types->camera = setAnimType(&(camera->getXMag()),(types->camera), CAMERA_XFOV);
|
||||
}
|
||||
else
|
||||
{
|
||||
const COLLADAFW::AnimatableFloat *xmag = &(camera->getXMag());
|
||||
const COLLADAFW::UniqueId& xmag_listid = xmag ->getAnimationList();
|
||||
if (animlist_map.find(xmag_listid) != animlist_map.end())
|
||||
// type = type|CAMERA_XMAG;
|
||||
types->camera = types->camera|CAMERA_XMAG;
|
||||
}
|
||||
//const COLLADAFW::AnimatableFloat *xmag = &(camera->getXMag());
|
||||
//const COLLADAFW::UniqueId& xmag_listid = xmag ->getAnimationList();
|
||||
//if (animlist_map.find(xmag_listid) != animlist_map.end())
|
||||
// // type = type|CAMERA_XMAG;
|
||||
// types->camera = types->camera|CAMERA_XMAG;
|
||||
types->camera = setAnimType(&(camera->getXMag()),(types->camera), CAMERA_XMAG);
|
||||
}
|
||||
|
||||
//const COLLADAFW::AnimatableFloat *zfar = &(camera->getFarClippingPlane());
|
||||
//const COLLADAFW::UniqueId& zfar_listid = zfar ->getAnimationList();
|
||||
//if (animlist_map.find(zfar_listid) != animlist_map.end())
|
||||
// //type = type|CAMERA_XFOV;
|
||||
// types->camera = types->camera|CAMERA_ZFAR;
|
||||
|
||||
|
||||
types->camera = setAnimType(&(camera->getFarClippingPlane()),(types->camera), CAMERA_ZFAR);
|
||||
types->camera = setAnimType(&(camera->getNearClippingPlane()),(types->camera), CAMERA_ZNEAR);
|
||||
|
||||
//if ( type != 0) break;
|
||||
if ( types->camera != 0) break;
|
||||
|
||||
@@ -975,6 +990,14 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD
|
||||
return types;
|
||||
}
|
||||
|
||||
int AnimationImporter::setAnimType ( const COLLADAFW::Animatable * prop , int types, int addition)
|
||||
{
|
||||
const COLLADAFW::UniqueId& listid = prop->getAnimationList();
|
||||
if (animlist_map.find(listid) != animlist_map.end())
|
||||
return types|addition;
|
||||
else return types;
|
||||
}
|
||||
|
||||
//XXX Is not used anymore.
|
||||
void AnimationImporter::find_frames_old(std::vector<float> * frames, COLLADAFW::Node * node , COLLADAFW::Transformation::TransformationType tm_type)
|
||||
{
|
||||
|
||||
@@ -98,18 +98,15 @@ private:
|
||||
{
|
||||
// INANIMATE = 0,
|
||||
CAMERA_XFOV = 2,
|
||||
CAMERA_XMAG = 4
|
||||
CAMERA_XMAG = 4,
|
||||
CAMERA_ZFAR = 8,
|
||||
CAMERA_ZNEAR = 16
|
||||
};
|
||||
|
||||
enum AnimationType
|
||||
{
|
||||
INANIMATE = 0,
|
||||
NODE_TRANSFORM = 1,
|
||||
/* LIGHT_COLOR = 2,
|
||||
LIGHT_FOA = 4,
|
||||
LIGHT_FOE = 8,
|
||||
CAMERA_XFOV = 16,
|
||||
CAMERA_XMAG = 32*/
|
||||
};
|
||||
|
||||
struct AnimMix
|
||||
@@ -152,7 +149,9 @@ public:
|
||||
std::vector<FCurve*>* curves);
|
||||
|
||||
void Assign_float_animations(const COLLADAFW::UniqueId& listid, ListBase *AnimCurves, char * anim_type);
|
||||
|
||||
|
||||
int setAnimType ( const COLLADAFW::Animatable * prop , int type, int addition);
|
||||
|
||||
void modify_fcurve(std::vector<FCurve*>* curves , char* rna_path , int array_index );
|
||||
// prerequisites:
|
||||
// animlist_map - map animlist id -> animlist
|
||||
|
||||
@@ -76,7 +76,7 @@ void CamerasExporter::operator()(Object *ob, Scene *sce)
|
||||
persp.setXFov(lens_to_angle(cam->lens)*(180.0f/M_PI),"xfov");
|
||||
persp.setAspectRatio((float)(sce->r.xsch)/(float)(sce->r.ysch),false,"aspect_ratio");
|
||||
persp.setZFar(cam->clipend, false , "zfar");
|
||||
persp.setZNear(cam->clipsta);
|
||||
persp.setZNear(cam->clipsta,false , "znear");
|
||||
COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_name);
|
||||
addCamera(ccam);
|
||||
}
|
||||
@@ -85,7 +85,7 @@ void CamerasExporter::operator()(Object *ob, Scene *sce)
|
||||
ortho.setXMag(cam->ortho_scale,"xmag");
|
||||
ortho.setAspectRatio((float)(sce->r.xsch)/(float)(sce->r.ysch),false,"aspect_ratio");
|
||||
ortho.setZFar(cam->clipend , false , "zfar");
|
||||
ortho.setZNear(cam->clipsta);
|
||||
ortho.setZNear(cam->clipsta, false , "znear");
|
||||
COLLADASW::Camera ccam(mSW, &ortho, cam_id, cam_name);
|
||||
addCamera(ccam);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user