You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
28 KiB
227 lines
28 KiB
|
1 week ago
|
"use strict";
|
||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
|
exports.methods = void 0;
|
||
|
|
exports.load = load;
|
||
|
|
exports.unload = unload;
|
||
|
|
const config_manager_1 = require("./config-manager");
|
||
|
|
const finder_1 = require("./finder");
|
||
|
|
const i18n_1 = require("./i18n");
|
||
|
|
const logger_1 = require("./logger");
|
||
|
|
const panel_manager_1 = require("./panel-manager");
|
||
|
|
const parser_1 = require("./parser");
|
||
|
|
const printer_1 = require("./printer");
|
||
|
|
const MainEvent = require('./lib/eazax/main-event');
|
||
|
|
const { reload } = require('./lib/eazax/editor-main-util');
|
||
|
|
/**
|
||
|
|
* @en Registration method for the main process of Extension
|
||
|
|
* @zh 为扩展的主进程的注册方法
|
||
|
|
*/
|
||
|
|
exports.methods = {
|
||
|
|
/**
|
||
|
|
* 查找引用
|
||
|
|
*/
|
||
|
|
async findCurrentSelection() {
|
||
|
|
// 获取选中资源
|
||
|
|
// asset
|
||
|
|
const lastSelectType = Editor.Selection.getLastSelectedType();
|
||
|
|
// uuid
|
||
|
|
const lastSelectUuid = Editor.Selection.getLastSelected(lastSelectType);
|
||
|
|
// uuid
|
||
|
|
const lastSelectUuids = Editor.Selection.getSelected(lastSelectType);
|
||
|
|
(0, logger_1.print)('log', `lastSelectType:${lastSelectType} lastSelectUuid:${lastSelectUuid}`);
|
||
|
|
(0, logger_1.print)('log', `lastSelectType:${lastSelectType} lastSelectUuids:${JSON.stringify(lastSelectUuids)}`);
|
||
|
|
const uuids = lastSelectUuids;
|
||
|
|
const tmpAssetInfoMap = {};
|
||
|
|
for (let i = 0; i < uuids.length; i++) {
|
||
|
|
const uuid = uuids[i];
|
||
|
|
const assetInfo = await Editor.Message.request('asset-db', 'query-asset-info', uuid);
|
||
|
|
if (!assetInfo) {
|
||
|
|
(0, logger_1.print)('error', `找不到资源信息${uuid}`);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
(0, logger_1.print)('log', `资源详情:${JSON.stringify(assetInfo, null, 4)}`);
|
||
|
|
if (assetInfo.isDirectory) {
|
||
|
|
// 文件夹不用
|
||
|
|
uuids.splice(i--);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
tmpAssetInfoMap[uuid] = assetInfo;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// 未选择资源
|
||
|
|
if (uuids.length === 0) {
|
||
|
|
(0, logger_1.print)('log', i18n_1.I18n.t('please-select-assets'));
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
// 遍历查找
|
||
|
|
for (let i = 0; i < uuids.length; i++) {
|
||
|
|
const uuid = uuids[i];
|
||
|
|
// 读取缓存
|
||
|
|
let assetInfo = tmpAssetInfoMap[uuid];
|
||
|
|
if (!assetInfo) {
|
||
|
|
// 再查找一次
|
||
|
|
assetInfo = await Editor.Message.request('asset-db', 'query-asset-info', uuid);
|
||
|
|
}
|
||
|
|
if (!assetInfo) {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
// 去掉前缀
|
||
|
|
const shortUrl = assetInfo.url.replace('db://', '');
|
||
|
|
// 查找引用
|
||
|
|
(0, logger_1.print)('info', '🔍', `${i18n_1.I18n.t('find-asset-refs')} ${shortUrl}`);
|
||
|
|
const refs = await finder_1.Finder.findByUuid(assetInfo);
|
||
|
|
if (refs.length === 0) {
|
||
|
|
(0, logger_1.print)('info', '📂', `${i18n_1.I18n.t('no-refs')} ${shortUrl}`);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
const results = {
|
||
|
|
type: assetInfo.type,
|
||
|
|
uuid,
|
||
|
|
url: assetInfo.url,
|
||
|
|
path: assetInfo.path,
|
||
|
|
refs,
|
||
|
|
};
|
||
|
|
// 打印结果
|
||
|
|
printer_1.Printer.printResult(results);
|
||
|
|
// 显示结果面板
|
||
|
|
const { showResultsPanel } = config_manager_1.ConfigManager.get();
|
||
|
|
if (showResultsPanel) {
|
||
|
|
panel_manager_1.PanelManager.openResultsPanel(results);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 打开设置面板
|
||
|
|
*/
|
||
|
|
openSettingsPanel() {
|
||
|
|
panel_manager_1.PanelManager.openSettingsPanel();
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 场景编辑器就绪后
|
||
|
|
*/
|
||
|
|
onSceneReady() {
|
||
|
|
// 自动检查更新
|
||
|
|
// const config = ConfigManager.get();
|
||
|
|
// if (config.autoCheckUpdate) {
|
||
|
|
// checkUpdate(false);
|
||
|
|
// }
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* 资源变化回调
|
||
|
|
*/
|
||
|
|
async onAssetChanged(uuid) {
|
||
|
|
//
|
||
|
|
const assetInfo = await Editor.Message.request('asset-db', 'query-asset-info', uuid);
|
||
|
|
const { type, url, file } = assetInfo;
|
||
|
|
// 场景和预制体
|
||
|
|
if (type === 'cc.SceneAsset' || type === 'cc.Prefab') {
|
||
|
|
// 排除内置资源
|
||
|
|
if (url.indexOf('db://internal') !== -1) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
// 更新节点树
|
||
|
|
await parser_1.Parser.updateCache(file);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
|
|
function eventListener_load() {
|
||
|
|
reload();
|
||
|
|
}
|
||
|
|
let lastOpenAssetsUrl = '';
|
||
|
|
async function eventListener_openAssets(event, url, nodePath) {
|
||
|
|
// console.log('open-asset', url, nodePath);
|
||
|
|
let needOpen = false;
|
||
|
|
if (lastOpenAssetsUrl !== url) {
|
||
|
|
// 打开资源
|
||
|
|
await Editor.Message.request('asset-db', 'open-asset', url);
|
||
|
|
lastOpenAssetsUrl = url;
|
||
|
|
needOpen = true;
|
||
|
|
}
|
||
|
|
// 不是节点
|
||
|
|
if (!nodePath) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
const isScene = url.endsWith('.scene');
|
||
|
|
// 获取这个资源的uuid
|
||
|
|
const uuid = await Editor.Message.request('asset-db', 'query-uuid', url);
|
||
|
|
// 查询实例化之后的uuid
|
||
|
|
const info = await Editor.Message.request('scene', 'query-nodes-by-asset-uuid', uuid);
|
||
|
|
const nodeUuid = info[0];
|
||
|
|
// console.log('uuid', nodeUuid);
|
||
|
|
// const nodeInfo = await Editor.Message.request('scene', 'query-node', nodeUuid);
|
||
|
|
// console.log('nodeInfo', nodeInfo);
|
||
|
|
const nodeInfo = await Editor.Message.request('scene', 'query-node-tree', nodeUuid);
|
||
|
|
// console.log('nodeTree', nodeInfo);
|
||
|
|
// 拆分nodePath
|
||
|
|
const nodePaths = nodePath.split('/');
|
||
|
|
if (!isScene) {
|
||
|
|
// 去掉第一级
|
||
|
|
nodePaths.shift();
|
||
|
|
}
|
||
|
|
// 获取指定节点
|
||
|
|
let curNode = nodeInfo;
|
||
|
|
for (let i = 0; i < nodePaths.length; i++) {
|
||
|
|
const nodePath = nodePaths[i];
|
||
|
|
// console.log('find', nodePath);
|
||
|
|
// 查找子节点
|
||
|
|
let find = false;
|
||
|
|
if (curNode.children && curNode.children.length > 0) {
|
||
|
|
for (let j = 0; j < curNode.children.length; j++) {
|
||
|
|
const child = curNode.children[j];
|
||
|
|
// console.log('check', child, child.name);
|
||
|
|
if (child.name === nodePath) {
|
||
|
|
curNode = child;
|
||
|
|
find = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (!find) {
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// 如果需要打开,需要延迟一下再选中,否则编辑器打开事件也会选中一次
|
||
|
|
if (needOpen) {
|
||
|
|
// 延迟1秒后再选中
|
||
|
|
setTimeout(() => {
|
||
|
|
// 选中节点
|
||
|
|
Editor.Selection.clear('node');
|
||
|
|
Editor.Selection.select('node', [curNode.uuid]);
|
||
|
|
}, 500);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
// 选中节点
|
||
|
|
Editor.Selection.clear('node');
|
||
|
|
Editor.Selection.select('node', [curNode.uuid]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
async function eventListener_selectAssets(event, url) {
|
||
|
|
// 使用url获得uuid
|
||
|
|
const uuid = await Editor.Message.request('asset-db', 'query-uuid', url);
|
||
|
|
// console.log('select-asset', url, uuid);
|
||
|
|
Editor.Selection.clear('asset');
|
||
|
|
Editor.Selection.select('asset', [uuid]);
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* @en Method Triggered on Extension Startup
|
||
|
|
* @zh 扩展启动时触发的方法
|
||
|
|
*/
|
||
|
|
function load() {
|
||
|
|
// 修改快捷键之后需要重新加载
|
||
|
|
MainEvent.on('reload', eventListener_load);
|
||
|
|
// 打开资源
|
||
|
|
MainEvent.on('open-asset', eventListener_openAssets);
|
||
|
|
// 选中资源
|
||
|
|
MainEvent.on('select-asset', eventListener_selectAssets);
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* @en Method triggered when uninstalling the extension
|
||
|
|
* @zh 卸载扩展时触发的方法
|
||
|
|
*/
|
||
|
|
function unload() {
|
||
|
|
MainEvent.removeListener('reload', eventListener_load);
|
||
|
|
MainEvent.removeListener('open-asset', eventListener_openAssets);
|
||
|
|
MainEvent.removeListener('select-asset', eventListener_selectAssets);
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZOQSxvQkFPQztBQU1ELHdCQUlDO0FBN09ELHFEQUFpRDtBQUNqRCxxQ0FBa0M7QUFDbEMsaUNBQThCO0FBQzlCLHFDQUFpQztBQUNqQyxtREFBK0M7QUFDL0MscUNBQWtDO0FBQ2xDLHVDQUFvQztBQUVwQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNwRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFFM0Q7OztHQUdHO0FBQ1UsUUFBQSxPQUFPLEdBQTRDO0lBQzVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQjtRQUV0QixTQUFTO1FBQ1QsUUFBUTtRQUNSLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5RCxPQUFPO1FBQ1AsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEUsT0FBTztRQUNQLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JFLElBQUEsY0FBSyxFQUFDLEtBQUssRUFBRSxrQkFBa0IsY0FBYyxtQkFBbUIsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGNBQUssRUFBQyxLQUFLLEVBQUUsa0JBQWtCLGNBQWMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBHLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQztRQUM5QixNQUFNLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFL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
|