Example #1
0
bool DirtyListVisit::runVisit()
{
    DeletePass = false;
    document()->history().buildDirtyList(*this);
    DeletePass = true;
    for (int i=0; i<RelationsToDelete.uniqueKeys().size(); i++) {
        if (!RelationsToDelete.uniqueKeys()[i]->hasOSMId())
            continue;
        RelationsToDelete[RelationsToDelete.uniqueKeys()[i]] = eraseRelation(RelationsToDelete.uniqueKeys()[i]);
    }
    for (int i=0; i<RoadsToDelete.uniqueKeys().size(); i++) {
        if (!RoadsToDelete.uniqueKeys()[i]->hasOSMId())
            continue;
        RoadsToDelete[RoadsToDelete.uniqueKeys()[i]] = eraseRoad(RoadsToDelete.uniqueKeys()[i]);
    }
    for (int i=0; i<TrackPointsToDelete.uniqueKeys().size(); i++) {
        if (!TrackPointsToDelete.uniqueKeys()[i]->hasOSMId())
            continue;
        TrackPointsToDelete[TrackPointsToDelete.uniqueKeys()[i]] = erasePoint(TrackPointsToDelete.uniqueKeys()[i]);
    }
    return document()->history().buildDirtyList(*this);
}
Example #2
0
void CCTubeGridTile::updateErasing(float delta)
{
	if (m_isErasing)
	{
		m_canGetFireLocation = true;
		if (GENERIC_TYPE_LINE == genericType)
		{
			if (!m_isReversedErasing)
			{
				erasePoint(m_erasingPoint.x,m_erasingPoint.y);
				m_erasingPoint = ccpAdd(m_erasingPoint,ccp(0,m_eraserSpeed));
				if (m_erasingPoint.y>m_eraserLineUpperBound)
				{
					m_isErasing = FALSE;
				}
			}
			else
			{
				erasePoint(m_erasingPoint.x,m_erasingPoint.y);
				m_erasingPoint = ccpAdd(m_erasingPoint,ccp(0,-m_eraserSpeed));
				if (m_erasingPoint.y<m_eraserLineLowerBound)
				{
					m_isErasing = FALSE;
				}
			}
			
		}
		else
		{
			if (!m_isReversedErasing)
			{
				erasePointInCurveForAngle(m_erasingAngle);
				m_erasingAngle +=m_eraserSpeed/m_curveRadius;			
				if (m_erasingAngle>m_eraserCurveAngleUpperBound)
				{
					m_isErasing = FALSE;
				}
			}
			else
			{
				erasePointInCurveForAngle(m_erasingAngle);
				m_erasingAngle -=m_eraserSpeed/m_curveRadius;
				
				if (m_erasingAngle<m_eraserCurveAngleLowerBound)
				{
					m_isErasing = FALSE;
				}
			}
		}

	}

	if (!m_isErasing)
	{
		m_canGetFireLocation = false;
		unschedule(schedule_selector(CCTubeGridTile::updateErasing));
		endErasing();
		
		m_remainTubes --;
	}
}
Example #3
0
void CCTubeGridTile::erasePointInCurveForAngle(float angle)
{
	float erasePointx = m_curveRadius*::sin(angle);
	float erasePointy = m_curveRadius*::cos(angle);
	erasePoint(erasePointx,erasePointy);
}