From 36a380695ad2703453a8b012c3844c70f7dbfd4b Mon Sep 17 00:00:00 2001 From: xu_yanfeng Date: Wed, 15 Jan 2025 14:38:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=A6=E5=A4=96=E4=B8=80?= =?UTF-8?q?=E4=B8=AAdevtools=E5=AE=9A=E6=97=B6=E5=99=A8=E4=BC=9A=E5=B9=B2?= =?UTF-8?q?=E6=89=B0=E5=88=B7=E6=96=B0=E9=80=BB=E8=BE=91=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cc-inspector/src/views/devtools/const.ts | 4 +++ cc-inspector/src/views/devtools/hierarchy.vue | 15 ++++++----- cc-inspector/src/views/devtools/index.ts | 8 ++++-- cc-inspector/src/views/devtools/index.vue | 3 ++- cc-inspector/src/views/devtools/inspector.vue | 7 ++--- .../src/views/devtools/register-panel.ts | 26 +------------------ cc-inspector/src/views/devtools/settings.ts | 5 ---- cc-inspector/src/views/devtools/store.ts | 10 +++++++ cc-inspector/src/views/devtools/timer.ts | 12 +++++++-- 9 files changed, 45 insertions(+), 45 deletions(-) create mode 100644 cc-inspector/src/views/devtools/const.ts delete mode 100644 cc-inspector/src/views/devtools/settings.ts diff --git a/cc-inspector/src/views/devtools/const.ts b/cc-inspector/src/views/devtools/const.ts new file mode 100644 index 0000000..1c1be6a --- /dev/null +++ b/cc-inspector/src/views/devtools/const.ts @@ -0,0 +1,4 @@ +export const PanelMsg = { + Show: "Show", + Hide: "Hide", +}; diff --git a/cc-inspector/src/views/devtools/hierarchy.vue b/cc-inspector/src/views/devtools/hierarchy.vue index 3893b3f..f7f532e 100644 --- a/cc-inspector/src/views/devtools/hierarchy.vue +++ b/cc-inspector/src/views/devtools/hierarchy.vue @@ -39,14 +39,15 @@ export default defineComponent({ }; const funcEnableSchedule = (b: boolean) => { if (b) { - timer_hierarchy.create(); + timer.create(); } else { - timer_hierarchy.clean(); + timer.clean(); } }; - const timer_hierarchy: Timer = new Timer(() => { + const timer: Timer = new Timer(() => { updateTree(); }); + timer.name = "hierarchy"; let ins: MousetrapInstance | null = null; function onQuickVisible() { ga.fireEvent(GA_EventName.SpaceVisible); @@ -68,7 +69,7 @@ export default defineComponent({ Bus.on(BusMsg.ChangeContent, changeContent); Bus.on(BusMsg.ShowPlace, funcShowPlace); Bus.on(BusMsg.EnableSchedule, funcEnableSchedule); - timer_hierarchy.create(); + timer.create(true); }); onUnmounted(() => { if (ins) { @@ -77,7 +78,7 @@ export default defineComponent({ Bus.off(BusMsg.ChangeContent, changeContent); Bus.off(BusMsg.ShowPlace, funcShowPlace); Bus.off(BusMsg.EnableSchedule, funcEnableSchedule); - timer_hierarchy.clean(); + timer.clean(); }); function _expand(uuid: string) { if (elTree.value) { @@ -218,13 +219,13 @@ export default defineComponent({ menus.push({ name: "fresh auto", callback: () => { - timer_hierarchy.create(); + timer.create(); }, }); menus.push({ name: "fresh manual", callback: () => { - timer_hierarchy.clean(); + timer.clean(); }, }); menus.push({ diff --git a/cc-inspector/src/views/devtools/index.ts b/cc-inspector/src/views/devtools/index.ts index ddec266..7818107 100644 --- a/cc-inspector/src/views/devtools/index.ts +++ b/cc-inspector/src/views/devtools/index.ts @@ -7,10 +7,14 @@ import { createApp } from "vue"; import pluginConfig from "../../../cc-plugin.config"; import "../global.less"; import App from "./index.vue"; -import { init } from "./register-panel"; export default CCP.init(pluginConfig, { ready: function (rootElement: any, args: any) { - init(); + if (args && args.body) { + ccui.uiElement.setBody(args.body); + } + if (args && args.doc) { + ccui.uiElement.setDoc(args.doc); + } const app = createApp(App); app.use(ccui); app.use(createPinia()); diff --git a/cc-inspector/src/views/devtools/index.vue b/cc-inspector/src/views/devtools/index.vue index 19d9d96..68784d4 100644 --- a/cc-inspector/src/views/devtools/index.vue +++ b/cc-inspector/src/views/devtools/index.vue @@ -63,6 +63,7 @@ export default defineComponent({ const timer = new Timer(() => { checkSupport(); }); + timer.name = "devtools"; onMounted(() => { ccui.footbar.showTipsArray({ tips: [ @@ -92,7 +93,7 @@ export default defineComponent({ }, }); Bus.on(BusMsg.EnableSchedule, funcEnableSchedule); - timer.create(); + timer.create(true); }); onUnmounted(() => { Bus.off(BusMsg.EnableSchedule, funcEnableSchedule); diff --git a/cc-inspector/src/views/devtools/inspector.vue b/cc-inspector/src/views/devtools/inspector.vue index 2328b3b..f86ebdf 100644 --- a/cc-inspector/src/views/devtools/inspector.vue +++ b/cc-inspector/src/views/devtools/inspector.vue @@ -12,13 +12,13 @@ import ccui from "@xuyanfeng/cc-ui"; import { IUiMenuItem } from "@xuyanfeng/cc-ui/types/cc-menu/const"; import { defineComponent, onMounted, onUnmounted, ref } from "vue"; import { Msg, PluginEvent, RequestNodeInfoData, ResponseSupportData } from "../../core/types"; +import { ga } from "../../ga"; +import { GA_EventName } from "../../ga/type"; import { bridge } from "./bridge"; import { Bus, BusMsg } from "./bus"; import { NodeInfoData } from "./data"; import { Timer } from "./timer"; import Properties from "./ui/propertys.vue"; -import { ga } from "../../ga"; -import { GA_EventName } from "../../ga/type"; const { CCDock } = ccui.components; export default defineComponent({ components: { Properties, CCDock }, @@ -32,6 +32,7 @@ export default defineComponent({ } } const timer = new Timer(updateNodeInfo); + timer.name = "inspector"; const treeItemData = ref(null); const funcEnableSchedule = (b: boolean) => { if (b) { @@ -54,7 +55,7 @@ export default defineComponent({ Bus.on(BusMsg.ChangeContent, changeContent); Bus.on(BusMsg.SelectNode, funSelectNode); Bus.on(BusMsg.EnableSchedule, funcEnableSchedule); - timer.create(); + timer.create(true); }); onUnmounted(() => { Bus.off(BusMsg.ChangeContent, changeContent); diff --git a/cc-inspector/src/views/devtools/register-panel.ts b/cc-inspector/src/views/devtools/register-panel.ts index 4f363ba..1faabea 100644 --- a/cc-inspector/src/views/devtools/register-panel.ts +++ b/cc-inspector/src/views/devtools/register-panel.ts @@ -1,34 +1,10 @@ import CCP from "cc-plugin/src/ccp/entry-render"; -import { ChromeConst } from "cc-plugin/src/chrome/const"; -import { Msg, RequestSupportData } from "../../core/types"; -import { bridge } from "./bridge"; + export function init() { if (chrome && chrome.devtools) { // 对应的是Elements面板的边栏 chrome.devtools.panels.elements.createSidebarPane(CCP.manifest.name, function (sidebar) { sidebar.setObject({ some_data: "some data to show!" }); }); - - // 创建devtools-panel - let iconPath = ""; - const { icon } = CCP.manifest; - if (icon && icon["48"]) { - iconPath = icon["48"]; - } - chrome.devtools.panels.create(CCP.manifest.name, iconPath, ChromeConst.html.devtools, (panel: chrome.devtools.panels.ExtensionPanel) => { - console.log("[CC-Inspector] Dev Panel Created!"); - panel.onShown.addListener((window) => { - // 面板显示,查询是否是cocos游戏 - bridge.send(Msg.RequestSupport, {} as RequestSupportData); - }); - panel.onHidden.addListener(() => { - // 面板隐藏 - console.log("panel hide"); - }); - panel.onSearch.addListener(function (action, query) { - // ctrl+f 查找触发 - console.log("panel search!"); - }); - }); } } diff --git a/cc-inspector/src/views/devtools/settings.ts b/cc-inspector/src/views/devtools/settings.ts deleted file mode 100644 index 3f2ff2d..0000000 --- a/cc-inspector/src/views/devtools/settings.ts +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/cc-inspector/src/views/devtools/store.ts b/cc-inspector/src/views/devtools/store.ts index 3a12b90..6cab5b3 100644 --- a/cc-inspector/src/views/devtools/store.ts +++ b/cc-inspector/src/views/devtools/store.ts @@ -2,6 +2,7 @@ import profile from "cc-plugin/src/ccp/profile"; import { defineStore } from "pinia"; import { ref, toRaw } from "vue"; import pluginConfig from "../../../cc-plugin.config"; +import { PanelMsg } from "./const"; export const enum RefreshType { Auto = "auto", Manual = "manual", @@ -24,10 +25,19 @@ export class ConfigData { export const appStore = defineStore("app", () => { const config = ref(new ConfigData()); const frameID = ref(0); + const pageShow = ref(false); return { frameID, + pageShow, config, init() { + if (chrome.devtools) { + window.addEventListener(PanelMsg.Show, () => { + pageShow.value = true; + }); + } else { + pageShow.value = true; + } profile.init(new ConfigData(), pluginConfig); const data = profile.load(`${pluginConfig.manifest.name}.json`) as ConfigData; config.value.refreshType = data.refreshType || RefreshType.Manual; diff --git a/cc-inspector/src/views/devtools/timer.ts b/cc-inspector/src/views/devtools/timer.ts index dc2e60d..41a97a7 100644 --- a/cc-inspector/src/views/devtools/timer.ts +++ b/cc-inspector/src/views/devtools/timer.ts @@ -1,16 +1,24 @@ export class Timer { - private timer: number = 0; + private timer: number | null = null; private callback: Function | null = null; private duration: number = 0; + public name: string = ""; constructor(cb: Function = null, duration: number = 300) { this.callback = cb; this.duration = duration; } - create() { + create(rightNow: boolean = false) { this.clean(); this.timer = setInterval(this.callback, this.duration); + if (rightNow) { + this.callback && this.callback(); + } } clean() { + if (this.timer === null) { + return; + } clearInterval(this.timer); + this.timer = null; } }