diff --git a/cc-inspector/src/views/devtools/bridge.ts b/cc-inspector/src/views/devtools/bridge.ts
index 7850f56..538ab69 100644
--- a/cc-inspector/src/views/devtools/bridge.ts
+++ b/cc-inspector/src/views/devtools/bridge.ts
@@ -1,4 +1,5 @@
import CCP from "cc-plugin/src/ccp/entry-render";
+import { TinyEmitter } from "tiny-emitter";
import { Msg, Page, PluginEvent } from "../../core/types";
import { Terminal } from "../../scripts/terminal";
import { TestClient, testServer } from "./test/server";
@@ -7,11 +8,7 @@ if (chrome.devtools) {
console.log("chrome devtools");
}
class Bridge implements TestClient {
- /**
- * 把callback保存为变量,方便测试
- */
- public onMessage: BridgeCallback | null = null;
-
+ private emitter = new TinyEmitter();
/**
* 和background建立的链接
*/
@@ -32,24 +29,25 @@ class Bridge implements TestClient {
this.connect.onMessage.addListener((event, sender: chrome.runtime.Port) => {
const data = PluginEvent.create(event);
console.log(...this.terminal.chunkMessage(data.toChunk()));
- if (data.valid && this.onMessage) {
- this.onMessage(data, sender);
+ if (data.valid && data.isTargetDevtools()) {
+ this.emitter.emit(data.msg, data.data);
} else {
console.log(JSON.stringify(event));
+ debugger;
}
});
} else {
testServer.add(this);
}
}
-
- recv(event: PluginEvent): void {
- this.doMessage(event);
+ on(msg: Msg, callback: Function) {
+ this.emitter.on(msg, callback);
}
- doMessage(data: PluginEvent) {
- if (this.onMessage) {
- this.onMessage(data, null);
- }
+ recv(event: PluginEvent): void {
+ this.emit(event);
+ }
+ emit(data: PluginEvent) {
+ this.emitter.emit(data.msg, data);
}
send(msg: Msg, data?: any) {
if (CCP.Adaptation.Env.isChromeDevtools) {
diff --git a/cc-inspector/src/views/devtools/bus.ts b/cc-inspector/src/views/devtools/bus.ts
index cd341f4..6ffac30 100644
--- a/cc-inspector/src/views/devtools/bus.ts
+++ b/cc-inspector/src/views/devtools/bus.ts
@@ -3,9 +3,8 @@ import { TinyEmitter } from "tiny-emitter";
export enum BusMsg {
ShowPlace = "ShowPlace",
RequestObjectData = "RequestObjectData",
- LogData = "LogData",
FoldAllGroup = "FoldAllGroup",
UpdateSettings = "UpdateSettings",
}
-export default new TinyEmitter();
+export const Bus = new TinyEmitter();
diff --git a/cc-inspector/src/views/devtools/hierarchy.vue b/cc-inspector/src/views/devtools/hierarchy.vue
new file mode 100644
index 0000000..fff389d
--- /dev/null
+++ b/cc-inspector/src/views/devtools/hierarchy.vue
@@ -0,0 +1,302 @@
+
+
+
+
+
diff --git a/cc-inspector/src/views/devtools/index.vue b/cc-inspector/src/views/devtools/index.vue
index 0b30d18..4fa8bf2 100644
--- a/cc-inspector/src/views/devtools/index.vue
+++ b/cc-inspector/src/views/devtools/index.vue
@@ -12,22 +12,9 @@
JS堆栈大小: {{ memory.performance.totalJSHeapSize }}
JS堆栈使用: {{ memory.performance.usedJSHeapSize }}
-
+
-
+
@@ -37,21 +24,21 @@
+
diff --git a/cc-inspector/src/views/devtools/store.ts b/cc-inspector/src/views/devtools/store.ts
index eca967f..3a12b90 100644
--- a/cc-inspector/src/views/devtools/store.ts
+++ b/cc-inspector/src/views/devtools/store.ts
@@ -23,7 +23,9 @@ export class ConfigData {
export const appStore = defineStore("app", () => {
const config = ref(new ConfigData());
+ const frameID = ref(0);
return {
+ frameID,
config,
init() {
profile.init(new ConfigData(), pluginConfig);
diff --git a/cc-inspector/src/views/devtools/test/server.ts b/cc-inspector/src/views/devtools/test/server.ts
index 51a6d29..6834ff9 100644
--- a/cc-inspector/src/views/devtools/test/server.ts
+++ b/cc-inspector/src/views/devtools/test/server.ts
@@ -1,5 +1,5 @@
import { v4 } from "uuid";
-import { Msg, Page, PluginEvent, RequestNodeInfoData, RequestObjectData, ResponseNodeInfoData, ResponseObjectData, ResponseTreeInfoData } from "../../../core/types";
+import { Msg, Page, PluginEvent, RequestNodeInfoData, RequestObjectData, ResponseNodeInfoData, ResponseObjectData, ResponseSupportData, ResponseTreeInfoData } from "../../../core/types";
import { ArrayData, BoolData, ColorData, EngineData, EnumData, Group, ImageData, Info, InvalidData, NodeInfoData, NumberData, ObjectData, ObjectItemRequestData, Property, StringData, TextData, TreeData, Vec2Data, Vec3Data, Vec4Data } from "../data";
export class TestClient {
recv(event: PluginEvent) {}
@@ -98,8 +98,18 @@ export class TestServer {
add(client: TestClient) {
this.clients.push(client);
}
+ private count: number = 0;
recv(msg: string, data: any) {
switch (msg) {
+ case Msg.RequestSupport: {
+ this.count++;
+ const e = new PluginEvent(Page.Background, Page.Devtools, Msg.ResponseSupport, {
+ support: this.count > 10,
+ msg: "",
+ } as ResponseSupportData);
+ this.send(e);
+ break;
+ }
case Msg.RequestNodeInfo: {
const id: string = (data as RequestNodeInfoData).uuid;
const node: Node = this.testData.findNode(id);
diff --git a/cc-inspector/src/views/devtools/test/test.vue b/cc-inspector/src/views/devtools/test/test.vue
index 0ebe105..2f0f5be 100644
--- a/cc-inspector/src/views/devtools/test/test.vue
+++ b/cc-inspector/src/views/devtools/test/test.vue
@@ -94,7 +94,7 @@ export default defineComponent({
children: [],
};
const event = new PluginEvent(Page.Inject, Page.Devtools, Msg.ResponseTreeInfo, data);
- bridge.doMessage(event);
+ bridge.emit(event);
},
onFrames() {
const data: FrameDetails[] = [
diff --git a/cc-inspector/src/views/devtools/ui/property-group.vue b/cc-inspector/src/views/devtools/ui/property-group.vue
index 62b35f8..af4b00d 100644
--- a/cc-inspector/src/views/devtools/ui/property-group.vue
+++ b/cc-inspector/src/views/devtools/ui/property-group.vue
@@ -15,7 +15,9 @@