Skip to content

Commit d6639c2

Browse files
committed
✨ 增加视野重置时边缘留白比率的自定义设置
1 parent b17a07c commit d6639c2

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

app/src/core/service/Settings.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export namespace Settings {
3737
limitCameraInCycleSpace: boolean;
3838
cameraCycleSpaceSizeX: number;
3939
cameraCycleSpaceSizeY: number;
40+
cameraResetViewPaddingRate: number;
4041
// 性能相关
4142
historySize: number; // 暂无
4243
effectsPerferences: Record<string, boolean>;
@@ -118,6 +119,7 @@ export namespace Settings {
118119
limitCameraInCycleSpace: false,
119120
cameraCycleSpaceSizeX: 1000,
120121
cameraCycleSpaceSizeY: 1000,
122+
cameraResetViewPaddingRate: 1.5,
121123
// 性能相关
122124
historySize: 20,
123125
effectsPerferences: {},

app/src/core/stage/Camera.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export namespace Camera {
8585
export let mouseWheelWithShiftMode: Settings.Settings["mouseWheelWithShiftMode"] = "zoom";
8686
export let mouseWheelWithCtrlMode: Settings.Settings["mouseWheelWithCtrlMode"] = "zoom";
8787
let cameraKeyboardScaleRate = 0.2;
88+
let cameraResetViewPaddingRate = 1.5;
8889

8990
// IDEA: 突然有一个好点子
9091
// 把wsad移动的逻辑改成瞬间爆炸的冲刺一小段距离,而不是改成直接赋予永久的作用力方向然后再撤销
@@ -265,6 +266,9 @@ export namespace Camera {
265266
Settings.watch("mouseWheelWithCtrlMode", (value) => {
266267
mouseWheelWithCtrlMode = value;
267268
});
269+
Settings.watch("cameraResetViewPaddingRate", (value) => {
270+
cameraResetViewPaddingRate = value;
271+
});
268272
}
269273

270274
/**
@@ -276,7 +280,7 @@ export namespace Camera {
276280
Camera.targetLocationByScale = Camera.location.clone();
277281
// Camera.currentScale = 0.01;
278282
const allEntitiesSize = StageManager.getSize();
279-
allEntitiesSize.multiply(1.5);
283+
allEntitiesSize.multiply(cameraResetViewPaddingRate);
280284
Camera.currentScale = Math.min(Renderer.h / allEntitiesSize.y, Renderer.w / allEntitiesSize.x);
281285
Camera.targetScale = Camera.currentScale;
282286
}
@@ -292,11 +296,11 @@ export namespace Camera {
292296
Camera.location = center;
293297
Camera.targetLocationByScale = center.clone();
294298

295-
const selectedRectangleSize = viewRectangle.size.multiply(1.5);
299+
const selectedRectangleSize = viewRectangle.size.multiply(cameraResetViewPaddingRate);
296300

297301
// 再取max 1.5 是为了防止缩放过大
298302
Camera.currentScale = Math.min(
299-
1.5,
303+
cameraResetViewPaddingRate,
300304
Math.min(Renderer.h / selectedRectangleSize.y, Renderer.w / selectedRectangleSize.x),
301305
);
302306
Camera.targetScale = Camera.currentScale;

0 commit comments

Comments
 (0)