// 改变当前编辑的点的位置 void CPathFindAction::ChangeCurEditPointPos(const Point& pt) { CUnreachRegion* pRegion = NULL; CPointInfo* pPoint = NULL; // 得到当前正在编辑的区域的信息. pRegion = GetRegionById(m_ulCurEditRegionId); if(pRegion) { pPoint = pRegion->GetPointInfoById1(m_ulCurEditPointId); if(pPoint) { // 查找这个点的下标值. int iIndex = -1; POINT_MAP::iterator it; POINT_MAP::iterator itEnd; itEnd = pRegion->m_pointMap.end(); for(it = pRegion->m_pointMap.begin(); it != itEnd; it++) { iIndex++; if(m_ulCurEditPointId == it->first) { break; } } // 得到修改后的位置. Ogre::Vector3 position; bool hit = getSceneManipulator()->getTerrainIntersects(pt.x, pt.y, position); if(hit) { //暂时把判断能否添加一个点去掉. //if(pRegion->CanChangePointPos(iIndex, position)) { // 修改新的点的位置. pPoint->SetPos(position); // 当前编辑的点的位置. m_curPointPos = position; if(it != itEnd) { // 如果下标存在 if((-1 != iIndex)&&(iIndex < (int)pRegion->m_pLineShape->m_pointArray.size())) { pRegion->m_pLineShape->m_pointArray[iIndex] = position; pRegion->m_pLineShape->FillPointData1(); //pRegion->ReShapeArea1(); } } } } } } }
void CNpcPatrolAction::ChangeCurEditPointPos(unsigned long ulRegionId, unsigned long ulPointId, Ogre::Vector3 position) { CUnreachRegion* pRegion = NULL; CPointInfo* pPoint = NULL; // 得到当前正在编辑的区域的信息. pRegion = GetRegionById(ulRegionId); if(pRegion) { pPoint = pRegion->GetPointInfoById(ulPointId); if(pPoint) { // 查找这个点的下标值. int iIndex = -1; POINT_MAP::iterator it; POINT_MAP::iterator itEnd; itEnd = pRegion->m_pointMap.end(); for(it = pRegion->m_pointMap.begin(); it != itEnd; it++) { iIndex++; if(ulPointId == it->first) { break; } } pPoint->SetPos(position); // 如果下标存在 if((-1 != iIndex)&&(iIndex < (int)pRegion->m_pLineShape->m_pointArray.size())) { pRegion->m_pLineShape->m_pointArray[iIndex] = position; pRegion->m_pLineShape->FillPointData(); //pRegion->ReShapeArea(); } }// if(pPoint) }// if(pRegion) }