Пример #1
0
	// 改变当前编辑的点的位置
	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();
							}
						}

					}
				}
			}
		}
	}
Пример #2
0
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)

}