123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.CustomParse = void 0;
- const WBaseComParse_1 = require("./WBaseComParse");
- class CustomParse extends WBaseComParse_1.BaseComParse {
- /**
- * 解析预制件数组里的单个项目
- * @param json 预制件数组里的一个项目
- * @param uuidSeekedMap 已经找到了的uuid的名字
- * @param fatherJson 整个预制件的Json
- * @param fullUuid 完整的Uuid
- * @param compressedUuid 压缩后的uuid
- * @returns 返回丢失了uuid的属性的名字
- */
- async parse(json, fatherJson, fullUuid, compressedUuid) {
- let walkedMap = new Map();
- let ret = [];
- if (Editor.Utils.UUID.isUUID(json.__type__)) {
- let uuid = Editor.Utils.UUID.decompressUUID(json.__type__);
- let assetInfo = await Editor.Message.request('asset-db', 'query-asset-info', uuid);
- this.comName = (assetInfo === null || assetInfo === void 0 ? void 0 : assetInfo.name) || json.__type__;
- let type = json.__type__;
- if (type.includes(fullUuid) || type.includes(compressedUuid)) {
- ret.push(this.comName);
- }
- }
- else {
- this.comName = json.__type__;
- }
- await this.walk(json, ret, '', fatherJson, fullUuid, compressedUuid, walkedMap);
- return ret;
- }
- async walk(json, ret, propPath, fatherJson, fullUuid, compressedUuid, walkedMap) {
- if (json instanceof Array) {
- for (let i = 0; i < json.length; i++) {
- let ele = json[i];
- if (ele)
- await this.walk(ele, ret, propPath + '[' + i + ']', fatherJson, fullUuid, compressedUuid, walkedMap);
- }
- }
- else if (json instanceof Object) {
- if (json.__uuid__) {
- let uuid = json.__uuid__;
- if (uuid.includes(fullUuid) || uuid.includes(compressedUuid))
- ret.push(propPath);
- }
- else if (json.__id__) {
- //引用了其他的json元素
- let otherJson = fatherJson[json.__id__];
- if (otherJson && !walkedMap.has(json.__id__) && otherJson.__type__ != 'cc.Node') {
- walkedMap.set(json.__id__, true);
- await this.walk(otherJson, ret, propPath, fatherJson, fullUuid, compressedUuid, walkedMap);
- }
- }
- else {
- //迭代
- for (let k in json) {
- if (json[k]) {
- await this.walk(json[k], ret, propPath + '.' + k, fatherJson, fullUuid, compressedUuid, walkedMap);
- }
- }
- }
- }
- }
- }
- exports.CustomParse = CustomParse;
|