消消方块阵换皮表情
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

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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