//------------------------------ bool JointsLoader::beginJointPrimitive( COLLADAFW::JointPrimitive::Type jointPrimitiveType, const char * sid) { mCurrentJointPrimitive = FW_NEW COLLADAFW::JointPrimitive( getHandlingFilePartLoader()->createUniqueId( COLLADAFW::JointPrimitive::ID()), jointPrimitiveType ); mCurrentJoint->getJointPrimitives().append( mCurrentJointPrimitive ); getHandlingFilePartLoader()->addToSidTree(0, sid, mCurrentJointPrimitive); return true; }
//------------------------------ bool JointsLoader::end__joint() { getHandlingFilePartLoader()->getFileLoader()->addJoint(mCurrentJoint); mCurrentJoint = 0; getHandlingFilePartLoader()->moveUpInSidTree(); return true; }
//------------------------------ bool NodeLoader::beginNode( const node__AttributeData& attributeData ) { COLLADAFW::Node* newNode = new COLLADAFW::Node( getHandlingFilePartLoader()->createUniqueIdFromId(attributeData.id, COLLADAFW::Node::ID())); if ( attributeData.name ) newNode->setName ( (const char*)attributeData.name ); else if ( attributeData.id ) newNode->setName ( (const char*)attributeData.id ); if ( attributeData.id ) newNode->setOriginalId ( (const char*)attributeData.id ); if ( attributeData.type == ENUM__NodeType__JOINT ) newNode->setType ( COLLADAFW::Node::JOINT ); getHandlingFilePartLoader()->addToSidTree(attributeData.id, attributeData.sid, newNode); if ( mNodeStack.empty() ) { // we are a direct child of a container handleRootNode(newNode); } else { //we are a child of another node COLLADAFW::Node* parentNode = mNodeStack.top(); parentNode->getChildNodes().append(newNode); } mNodeStack.push(newNode); return true; }
//----------------------------------------------------------------- bool FormulasLoader::end__formula() { getHandlingFilePartLoader()->getFileLoader()->addFormula( mCurrentFormula ); mCurrentFormula = 0; getHandlingFilePartLoader()->moveUpInSidTree(); return true; }
//------------------------------ bool NodeLoader::begin__instance_camera( const instance_camera__AttributeData& attributeData ) { COLLADAFW::Node* currentNode = mNodeStack.top(); COLLADAFW::UniqueId instantiatedCameraUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl( attributeData.url, COLLADAFW::Camera::ID() ); COLLADAFW::UniqueId instanceCameraUniqueId = getHandlingFilePartLoader()->createUniqueId( COLLADAFW::InstanceCamera::ID() ); COLLADAFW::InstanceCamera* instanceCamera = FW_NEW COLLADAFW::InstanceCamera(instanceCameraUniqueId, instantiatedCameraUniqueId); currentNode->getInstanceCameras().append(instanceCamera); return true; }
//------------------------------ bool NodeLoader::begin__instance_light( const instance_light__AttributeData& attributeData ) { COLLADAFW::Node* currentNode = mNodeStack.top(); COLLADAFW::UniqueId instantiatedLightUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl( attributeData.url, COLLADAFW::Light::ID() ); COLLADAFW::UniqueId instanceLightUniqueId = getHandlingFilePartLoader()->createUniqueId( COLLADAFW::InstanceLight::ID() ); COLLADAFW::InstanceLight* instanceLight = FW_NEW COLLADAFW::InstanceLight(instanceLightUniqueId, instantiatedLightUniqueId); currentNode->getInstanceLights().append(instanceLight); return true; }
//------------------------------ bool NodeLoader::begin__instance_node( const instance_node__AttributeData& attributeData ) { COLLADAFW::Node* currentNode = mNodeStack.top(); COLLADAFW::UniqueId instantiatedNodeUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl( attributeData.url, COLLADAFW::Node::ID() ); COLLADAFW::UniqueId instanceNodeUniqueId = getHandlingFilePartLoader()->createUniqueId( COLLADAFW::InstanceNode::ID() ); COLLADAFW::InstanceNode* instanceNode = FW_NEW COLLADAFW::InstanceNode(instanceNodeUniqueId,instantiatedNodeUniqueId); if( attributeData.name ) instanceNode->setName( attributeData.name ); currentNode->getInstanceNodes().append(instanceNode); return true; }
//------------------------------ bool NodeLoader::begin__instance_geometry( const instance_geometry__AttributeData& attributeData ) { COLLADAFW::Node* currentNode = mNodeStack.top(); COLLADAFW::UniqueId instantiatedGeometryUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl( attributeData.url, COLLADAFW::Geometry::ID()); mCurrentMaterialInfo = &getHandlingFilePartLoader()->getMeshMaterialIdInfo(); COLLADAFW::UniqueId uniqueId = getHandlingFilePartLoader()->createUniqueId ( COLLADAFW::InstanceGeometry::ID() ); COLLADAFW::InstanceGeometry* instanceGeometry = FW_NEW COLLADAFW::InstanceGeometry ( uniqueId, instantiatedGeometryUniqueId ); mCurrentInstanceGeometry = instanceGeometry; instanceGeometry->setName(currentNode->getName()); currentNode->getInstanceGeometries().append(instanceGeometry); return true; }
//----------------------------------------------------------------- bool FormulasLoader::begin__formula( const formula__AttributeData& attributeData ) { mCurrentFormula = FW_NEW COLLADAFW::Formula( getHandlingFilePartLoader()->createUniqueIdFromId( attributeData.id, COLLADAFW::Formula::ID()) ); if ( attributeData.name ) mCurrentFormula->setName( attributeData.name ); else if ( attributeData.id ) mCurrentFormula->setName( attributeData.id ); else if ( attributeData.sid ) mCurrentFormula->setName( attributeData.sid ); if ( attributeData.id ) mCurrentFormula->setOriginalId ( attributeData.id ); getHandlingFilePartLoader()->addToSidTree( attributeData.id, attributeData.sid, mCurrentFormula ); return true; }
//------------------------------ bool NodeLoader::endTransformation() { COLLADABU_ASSERT(!mNodeStack.empty()); mNodeStack.top()->getTransformations().append( mTransformationLoader.getCurrentTransformation()); getHandlingFilePartLoader()->moveUpInSidTree(); mTransformationLoader.endTransformation(); return true; }
//------------------------------ bool NodeLoader::begin__instance_controller( const instance_controller__AttributeData& attributeData ) { COLLADAFW::Node* currentNode = mNodeStack.top(); COLLADAFW::UniqueId instantiatedControllerUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl( attributeData.url, COLLADAFW::SkinControllerData::ID() ); mCurrentMaterialInfo = &getHandlingFilePartLoader()->getMeshMaterialIdInfo(); COLLADAFW::UniqueId uniqueId = getHandlingFilePartLoader()->createUniqueId ( COLLADAFW::InstanceController::ID() ); COLLADAFW::InstanceController* instanceController = FW_NEW COLLADAFW::InstanceController( uniqueId, instantiatedControllerUniqueId); mCurrentInstanceController = instanceController; currentNode->getInstanceControllers().append(instanceController); Loader::InstanceControllerData instanceControllerData; instanceControllerData.instanceController = instanceController; Loader::InstanceControllerDataList& instanceControllerDataList = getHandlingFilePartLoader()->getInstanceControllerDataListByControllerUniqueId(instantiatedControllerUniqueId); instanceControllerDataList.push_back(instanceControllerData); mCurrentInstanceControllerData = &instanceControllerDataList.back(); return true; }
//------------------------------ bool JointsLoader::begin__joint( const joint__AttributeData& attributeData ) { mCurrentJoint = FW_NEW COLLADAFW::Joint( getHandlingFilePartLoader()->createUniqueIdFromId( attributeData.id, COLLADAFW::Joint::ID()) ); if ( attributeData.name ) { mCurrentJoint->setName(attributeData.name); } else if ( attributeData.id ) { mCurrentJoint->setName(attributeData.id); } if ( attributeData.id ) { mCurrentJoint->setOriginalId(attributeData.id); } getHandlingFilePartLoader()->addToSidTree( attributeData.id, attributeData.sid, mCurrentJoint); return true; }
//------------------------------ bool NodeLoader::begin__bind_vertex_input( const bind_vertex_input__AttributeData& attributeData ) { if ( mCurrentInstanceGeometry || mCurrentInstanceController ) { COLLADAFW::TextureCoordinateBinding texCoordinateBinding; texCoordinateBinding.setSetIndex ( (size_t)attributeData.input_set ); texCoordinateBinding.setSemantic( attributeData.semantic ); texCoordinateBinding.setTextureMapId ( getHandlingFilePartLoader()->getTextureMapIdBySematic( attributeData.semantic ) ); mCurrentTextureCoordinateBindings.insert(texCoordinateBinding); } return true; }
//------------------------------ bool NodeLoader::begin__instance_material( const instance_material__AttributeData& attributeData ) { if ( mCurrentInstanceGeometry || mCurrentInstanceController ) { COLLADAFW::MaterialId materialId = attributeData.symbol ? mCurrentMaterialInfo->getMaterialId((const char*)attributeData.symbol) : 0; mCurrentMaterialBinding = new COLLADAFW::MaterialBinding(materialId, getHandlingFilePartLoader()->createUniqueIdFromUrl(attributeData.target, COLLADAFW::Material::ID())); if ( attributeData.symbol ) mCurrentMaterialBinding->setName((const char*)attributeData.symbol); } return true; }
//----------------------------------------------------------------- bool FormulasLoader::begin__csymbol( const csymbol__AttributeData& attributeData ) { if ( !mCurrentApplyHasChild ) { // The csymbol appears as first child of apply. I must be a user defined function. mOperatorStack.push(USER_DEFINED_FUNCTION); mCurrentCSymbolIsFunction = true; if (attributeData.definitionURL) { mCurrentCSymbolFunctionUniqueId = getHandlingFilePartLoader()->createUniqueIdFromUrl(attributeData.definitionURL, COLLADAFW::Formula::ID()); } } mCurrentApplyHasChild = true; return true; }
bool NodeLoader::beginTransformation( const char* sid ) { mTransformationLoader.beginTransformation<Transformationtype>(); getHandlingFilePartLoader()->addToSidTree( 0, sid, mTransformationLoader.getCurrentTransformation()); return true; }
//------------------------------ bool NodeLoader::endNode() { mNodeStack.pop(); getHandlingFilePartLoader()->moveUpInSidTree(); return true; }
//------------------------------ bool JointsLoader::end__axis____axis_type() { getHandlingFilePartLoader()->moveUpInSidTree(); mAxisNumbersReceived = 0; return true; }
//------------------------------ bool JointsLoader::endJointPrimitive() { mCurrentJointPrimitive = 0; getHandlingFilePartLoader()->moveUpInSidTree(); return true; }
//------------------------------ bool JointsLoader::begin__axis____axis_type( const axis____axis_type__AttributeData& attributeData ) { getHandlingFilePartLoader()->addToSidTree( 0, attributeData.sid); return true; }