void AbstractSceneManager::addPickedObjects(std::vector<SceneObject*>& vPickedObjects) { for (size_t i=0; i<m_vPickedList.size(); i++) { m_vPickedList.at(i)->setPicked(false); } m_vPickedList.clear(); m_vPickedList.insert(m_vPickedList.begin(),vPickedObjects.begin(),vPickedObjects.end()); for (size_t i=0; i<m_vPickedList.size(); i++) { m_vPickedList.at(i)->setPicked(true); } if (m_vPickedList.empty()) { emit pickedSeveralSkeletons(); } else if (m_vPickedList.size() == 1) { //Node* pNode = m_vPickedList.at(0)->m_pNode; //if (pNode) //{ // MotionJointProp mjp; // mjp.strName = pNode->getName(); // mjp.vAbsolutePosition = pNode->getAbsolutePosition(); // mjp.vRelativePosition = pNode->getPosition(); // mjp.eRotation = pNode->getRotation(); // emit pickedOneObject(mjp); //} } else { int n = 0; Skeleton* pSkeleton = NULL; m_sPickedSkeleton.clear(); for (size_t i=1; i<m_vPickedList.size(); i++) { if (m_vPickedList.at(i)->m_pNode->isBoneNode()) { BoneNode* pBoneNode = (BoneNode*)m_vPickedList.at(i)->m_pNode; if (pSkeleton != pBoneNode->getSkeleton()) { n++; pSkeleton = pBoneNode->getSkeleton(); m_sPickedSkeleton.insert(pSkeleton); } } } if (n == 1) { if (pSkeleton) { MotionClip* pMotionClip = pSkeleton->getMotionClip(); //if (pMotionClip) //{ // MotionFileProp mfp; // mfp.strPath = QString::fromStdString(pMotionClip->getFileName()); // mfp.fFrameTime = pMotionClip->getFrameTime(); // mfp.nFrameCount = pMotionClip->getFrameCount(); // mfp.nJointCount = pMotionClip->getJointCount(); // mfp.mstate = pSkeleton->getViewState(); // mfp.bshowmesh = pSkeleton->isShowMesh(); // emit pickedOneSkeleton(mfp); //} } } else { emit pickedSeveralSkeletons(); } } }