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); }
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 --; } }
void CCTubeGridTile::erasePointInCurveForAngle(float angle) { float erasePointx = m_curveRadius*::sin(angle); float erasePointy = m_curveRadius*::cos(angle); erasePoint(erasePointx,erasePointy); }