Michael 2 lat temu
rodzic
commit
4eecca2d9a

+ 4 - 3
client/mapView/MapView.cpp

@@ -87,7 +87,7 @@ void MapView::tick(uint32_t msPassed)
 {
 	postSwipe(msPassed);
 
-	controller->tick(msPassed);
+	BasicMapView::tick(msPassed);
 }
 
 void MapView::show(Canvas & to)
@@ -123,7 +123,7 @@ void MapView::onMapScrolled(const Point & distance)
 
 void MapView::onMapSwiped(const Point & viewPosition)
 {
-	swipeHistory[GH.input().getTicks()] = viewPosition;
+	swipeHistory.push_back(std::pair<uint32_t, Point>(GH.input().getTicks(), viewPosition));
 
 	controller->setViewCenter(model->getMapViewCenter() + viewPosition, model->getLevel());
 }
@@ -150,7 +150,8 @@ void MapView::postSwipe(uint32_t msPassed) {
 			postSwipeSpeed = static_cast<double>(diff.length()) / static_cast<double>(timediff); // unit: pixel/millisecond			
 		}
 		swipeHistory.clear();
-	}
+	} else
+		postSwipeSpeed = 0.0;
 	if(postSwipeSpeed > 0.1) {
 		double len = postSwipeSpeed * static_cast<double>(msPassed);
 		Point delta = Point(len * cos(postSwipeAngle), len * sin(postSwipeAngle));

+ 3 - 3
client/mapView/MapView.h

@@ -49,9 +49,9 @@ class MapView : public BasicMapView
 {
 	std::shared_ptr<MapViewActions> actions;
 
-	std::map<uint32_t, Point> swipeHistory;
-	double postSwipeAngle;
-	double postSwipeSpeed;
+	std::vector<std::pair<uint32_t, Point>> swipeHistory;
+	double postSwipeAngle = 0.0;
+	double postSwipeSpeed = 0.0;
 
 	void postSwipe(uint32_t msPassed);
 

+ 2 - 0
client/mapView/MapViewActions.cpp

@@ -121,6 +121,8 @@ void MapViewActions::gesturePinch(const Point & centerPosition, double lastUpdat
 
 void MapViewActions::gesture(bool on, const Point & initialPosition, const Point & finalPosition)
 {
+	dragActive = on;
+
 	pinchZoomFactor = 1.0;
 }