// 挂接地图操作逻辑 void SetupGroundOps() { MapGround.OnClicked += (float x, float y) => CurrentOpLayer.OnClicked(x, y); MapGround.OnStartDragging += (float x, float y) => CurrentOpLayer.OnStartDragging(x, y); MapGround.OnDragging += (float fx, float fy, float cx, float cy) => CurrentOpLayer.OnDragging(fx, fy, cx, cy); MapGround.OnEndDragging += (float fx, float fy, float cx, float cy) => CurrentOpLayer.OnEndDragging(fx, fy, cx, cy); MapGround.OnStartScaling += () => CurrentOpLayer.OnStartScaling(); MapGround.OnScaling += (float scale, float cx, float cy) => CurrentOpLayer.OnScaling(scale, cx, cy); // 地图缩放移动等 StageOpsLayer.DefaultStartDraggingHandler += StartDraggingMap; StageOpsLayer.DefaultDraggingHandler += DraggingMap; StageOpsLayer.DefaultStartScaling += StartScaling; StageOpsLayer.DefaultScaling += Scaling; }
void Scaling(float scale, float cx, float cy) { var s = fromScale * scale; if (s > 2) { return; } var sx = SceneWorldSize.x / SceneBgSize.x; var sy = SceneWorldSize.y / SceneBgSize.y; var sMin = sx > sy ? sx : sy; if (s < sMin) { return; } CurrentOpLayer.WorldPos2MapPos(cx, cy, out float scx, out float scy); SceneOffset.localScale = new Vector3(fromScale * scale, fromScale * scale, 1); CurrentOpLayer.MapPos2WorldPos(scx, scy, out float cx2, out float cy2); SceneOffset.localPosition += new Vector3(cx - cx2, cy - cy2, 0); AdjustOffset(); }