Skip to content

Commit 0847d88

Browse files
committed
🚸 优化标签面板增加透视功能、瞭望功能
1 parent 38870b0 commit 0847d88

File tree

1 file changed

+39
-7
lines changed

1 file changed

+39
-7
lines changed

app/src/pages/_tag_panel.tsx

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Plus, RefreshCcw } from "lucide-react";
1+
import { Angry, MousePointerClick, RefreshCcw, Smile, Tags, Telescope } from "lucide-react";
22
import React from "react";
33
import IconButton from "../components/IconButton";
44
import { StageManager } from "../core/stage/stageManager/StageManager";
@@ -10,6 +10,10 @@ import { cn } from "../utils/cn";
1010
*/
1111
export default function TagPanel({ open = false, className = "" }: { open: boolean; className: string }) {
1212
const [tagNameList, setTagNameList] = React.useState<{ tagName: string; uuid: string }[]>([]);
13+
// 是否开启允许滑动移动摄像机
14+
const [isMouseEnterMoveCameraAble, setIsMouseEnterMoveCameraAble] = React.useState(false);
15+
// 是否开启透视
16+
const [isPerspective, setIsPerspective] = React.useState(false);
1317

1418
function refreshTagNameList() {
1519
setTagNameList(StageManager.refreshTags());
@@ -19,13 +23,23 @@ export default function TagPanel({ open = false, className = "" }: { open: boole
1923
refreshTagNameList();
2024
}, [open]);
2125

22-
const handleClickTag = (tagUUID: string) => {
26+
const handleMoveCameraToTag = (tagUUID: string) => {
2327
return () => {
2428
// 跳转到对应位置
2529
StageManager.moveToTag(tagUUID);
2630
};
2731
};
2832

33+
const handleMouseEnterTag = (tagUUID: string) => {
34+
return () => {
35+
if (isMouseEnterMoveCameraAble) {
36+
StageManager.moveToTag(tagUUID);
37+
} else {
38+
console.log("禁止滑动");
39+
}
40+
};
41+
};
42+
2943
const handleClickAddTag = () => {
3044
// TODO: 这里可能缺少一个是否有选中的实体的检测
3145
StageManager.addTagBySelected();
@@ -35,23 +49,40 @@ export default function TagPanel({ open = false, className = "" }: { open: boole
3549
return (
3650
<div
3751
className={cn(
38-
"bg-panel-bg fixed -left-64 top-16 flex h-full w-64 flex-col rounded-md p-4 transition-all",
52+
"fixed -left-64 top-16 flex h-full w-64 flex-col rounded-md p-4 pb-20 transition-all",
3953
{
4054
"left-0": open,
55+
"bg-panel-bg": !isPerspective,
4156
},
4257
className,
4358
)}
4459
>
4560
<div className="flex justify-center gap-2">
4661
<IconButton
4762
onClick={handleClickAddTag}
48-
tooltip="添加选中的文本节点成为标签,如果选中了已经是标签的节点,则会取消标签状态"
63+
tooltip="选中节点并添加到标签,如果选中了已经是标签的节点,则会移出标签"
4964
>
50-
<Plus />
65+
<Tags />
5166
</IconButton>
5267
<IconButton onClick={refreshTagNameList} tooltip="如果舞台上的标签发生变更但此处未更新,可以手动刷新">
5368
<RefreshCcw />
5469
</IconButton>
70+
<IconButton
71+
onClick={() => {
72+
setIsMouseEnterMoveCameraAble(!isMouseEnterMoveCameraAble);
73+
}}
74+
tooltip={isMouseEnterMoveCameraAble ? "快速瞭望模式" : "点击跳转模式"}
75+
>
76+
{isMouseEnterMoveCameraAble ? <Telescope /> : <MousePointerClick />}
77+
</IconButton>
78+
<IconButton
79+
onClick={() => {
80+
setIsPerspective(!isPerspective);
81+
}}
82+
tooltip={isPerspective ? "透视已开启" : "开启透视眼"}
83+
>
84+
{isPerspective ? <Angry /> : <Smile />}
85+
</IconButton>
5586
</div>
5687

5788
{/* 标签列表 */}
@@ -63,13 +94,14 @@ export default function TagPanel({ open = false, className = "" }: { open: boole
6394
</p>
6495
</div>
6596
) : (
66-
<div className="mt-2 flex-1 flex-col justify-center overflow-y-auto">
97+
<div className="mt-2 flex-1 flex-col justify-center overflow-y-auto p-2">
6798
{tagNameList.map((tag) => {
6899
return (
69100
<div
70101
key={tag.uuid}
71102
className="text-select-option-text hover:text-select-option-hover-text cursor-pointer text-center hover:underline"
72-
onClick={handleClickTag(tag.uuid)}
103+
onClick={handleMoveCameraToTag(tag.uuid)}
104+
onMouseEnter={handleMouseEnterTag(tag.uuid)}
73105
>
74106
{tag.tagName}
75107
</div>

0 commit comments

Comments
 (0)