super-hero/extensions/shader-graph/dist/contributions/scene.js

112 lines
16 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const preview_scene_1 = tslib_1.__importDefault(require("./preview-scene"));
const shader_graph_1 = tslib_1.__importDefault(require("../importer/shader-graph"));
const effect_header_1 = require("./effect-header");
const effect_utils_1 = require("../effect-utils");
function createSlot(slot) {
const valueDump = cce.Dump.encode.encodeObject(slot.default, { default: slot.default });
return {
default: valueDump.value,
type: slot.type,
connectType: slot.connectType,
display: slot.display,
enum: slot.enum,
registerEnumType: slot.registerEnumType,
registerEnum: slot.registerEnum,
};
}
exports.methods = {
async queryShaderNode() {
const { shaderNodeMap, shaderPropertyMap } = await Editor.Module.importProjectModule('db://shader-graph/graph/index.ts');
const shaderNodeList = new Map();
shaderNodeMap.forEach((nodeDefine) => {
const newNodeDefine = {
type: nodeDefine.type,
extend: nodeDefine.extend,
details: nodeDefine.details,
node: {},
};
nodeDefine.node.inputs?.forEach((slot) => {
if (!newNodeDefine.node.inputs) {
newNodeDefine.node.inputs = [];
}
newNodeDefine.node.inputs.push(createSlot(slot));
});
nodeDefine.node.props?.forEach((slot) => {
if (!newNodeDefine.node.props) {
newNodeDefine.node.props = [];
}
newNodeDefine.node.props.push(createSlot(slot));
});
nodeDefine.node.outputs?.forEach((slot) => {
if (!newNodeDefine.node.outputs) {
newNodeDefine.node.outputs = [];
}
newNodeDefine.node.outputs.push(createSlot(slot));
});
shaderNodeList.set(newNodeDefine.type, newNodeDefine);
});
const shaderPropertyList = new Map();
shaderPropertyMap.forEach((propertyDefine) => {
const valueDump = cce.Dump.encode.encodeObject(propertyDefine.default, { default: propertyDefine.default });
const newPropertyDefine = {
name: propertyDefine.name,
type: propertyDefine.type,
declareType: propertyDefine.declareType,
default: valueDump.value,
details: propertyDefine.details,
outputs: [],
};
propertyDefine.outputs.forEach((slot) => {
newPropertyDefine.outputs.push(createSlot(slot));
});
shaderPropertyList.set(newPropertyDefine.type, newPropertyDefine);
});
return {
shaderNodeList: [...shaderNodeList],
shaderPropertyList: [...shaderPropertyList],
};
},
async queryPropertyValueDumpByType(type, value) {
const { shaderPropertyMap } = await Editor.Module.importProjectModule('db://shader-graph/graph/index.ts');
const propertyDefine = shaderPropertyMap.get(type);
const valueDump = cce.Dump.encode.encodeObject(propertyDefine.default, {});
valueDump.value = value;
return valueDump;
},
async initPreview(config) {
try {
await (0, effect_header_1.addChunks)();
await preview_scene_1.default.init(config);
return true;
}
catch (e) {
console.error(e);
return false;
}
},
async updateMaterial(graphData) {
if (!graphData)
return;
const time = Date.now();
const masterNode = await shader_graph_1.default.generateMasterNode(graphData);
const material = await masterNode.createMaterial(effect_utils_1.buildEffect);
preview_scene_1.default.setMaterial(material);
console.debug('update shader graph material : ' + (Date.now() - time) / 1000);
},
registerEffects(uuid) {
console.debug('registerEffects: ' + uuid);
cce.SceneFacadeManager.registerEffects([uuid]);
},
removeEffects(uuid) {
console.debug('removeEffects:' + uuid);
cce.SceneFacadeManager.removeEffects([uuid]);
},
updateEffect(uuid) {
console.debug('updateEffect:' + uuid);
cce.SceneFacadeManager.updateEffect([uuid]);
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9ucy9zY2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw0RUFBMkM7QUFJM0Msb0ZBQW1EO0FBRW5ELG1EQUE0QztBQUM1QyxrREFBOEM7QUFJOUMsU0FBUyxVQUFVLENBQUMsSUFBZ0I7SUFDaEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsT0FBTztRQUNILE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSztRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7UUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7UUFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO0tBQ2xDLENBQUM7QUFDTixDQUFDO0FBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRztJQUNkLEtBQUssQ0FBQyxlQUFlO1FBQ2pCLE1BQU0sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsa0NBQWtDLENBQW1CLENBQUM7UUFFM0ksTUFBTSxjQUFjLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUM3QyxNQUFNLGFBQWEsR0FBZTtnQkFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUNyQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07Z0JBQ3pCLE9B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QUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWTtRQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0QyxHQUFHLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSU1vZHVsZU9wdGlvbnMgfSBmcm9tICcuLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHR5cGUgeyBOb2RlRGVmaW5lLCBQcm9wZXJ0eURlZmluZSwgU2xvdERlZmluZSB9IGZyb20gJy4uLy4uL0B0eXBlcy9zaGFkZXItbm9kZS10eXBlJztcbmltcG9ydCBwcmV2aWV3U2NlbmUgZnJvbSAnLi9wcmV2aWV3LXNjZW5lJztcbmltcG9ydCB7IFByZXZpZXdDb25maWcgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IEdyYXBoRGF0YSB9IGZyb20gJy4uL2Jsb2NrLWZvcmdlL2ludGVyZmFjZSc7XG5cbmltcG9ydCBzaGFkZXJHcmFwaCBmcm9tICcuLi9pbXBvcnRlci9zaGFkZXItZ3JhcGgnO1xuXG5pbXBvcnQgeyBhZGRDaHVua3MgfSBmcm9tICcuL2VmZmVjdC1oZWFkZXInO1xuaW1wb3J0IHsgYnVpbGRFZmZlY3QgfSBmcm9tICcuLi9lZmZlY3QtdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0IGNjZTogYW55O1xuXG5mdW5jdGlvbiBjcmVhdGVTbG90KHNsb3Q6IFNsb3REZWZpbmUpIHtcbiAgICBjb25zdCB2YWx1ZUR1bXAgPSBjY2UuRHVtcC5lbmNvZGUuZW5jb2RlT2JqZWN0KHNsb3QuZGVmYXVsdCwgeyBkZWZhdWx0OiBzbG90LmRlZmF1bHQgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVmYXVsdDogdmFsdWVEdW1wLnZhbHVlLFxuICAgICAgICB0eXBlOiBzbG90LnR5cGUsXG4gICAgICAgIGNvbm5lY3RUeXBlOiBzbG90LmNvbm5lY3RUeXBlLFxuICAgICAgICBkaXNwbGF5OiBzbG90LmRpc3BsYXksXG4gICAgICAgIGVudW06IHNsb3QuZW51bSxcbiAgICAgICAgcmVnaXN0ZXJFbnVtVHlwZTogc2xvdC5yZWdpc3RlckVudW1UeXBlLFxuICAgICAgICByZWdpc3RlckVudW06IHNsb3QucmVnaXN0ZXJFbnVtLFxuICAgIH07XG59XG5cbmV4cG9ydHMubWV0aG9kcyA9IHtcbiAgICBhc3luYyBxdWVyeVNoYWRlck5vZGUoKSB7XG4gICAgICAgIGNvbnN0IHsgc2hhZGVyTm9kZU1hcCwgc2hhZGVyUHJvcGVydHlNYXAgfSA9IGF3YWl0IEVkaXRvci5Nb2R1bGUuaW1wb3J0UHJvamVjdE1vZHVsZSgnZGI6Ly9zaGFkZXItZ3JhcGgvZ3JhcGgvaW5kZXgudHMnKSBhcyBJTW9kdWxlT3B0aW9ucztcblxuICAgICAgICBjb25zdCBzaGFkZXJOb2RlTGlzdDogTWFwPHN0cmluZywgTm9kZURlZmluZT4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHNoYWRlck5vZGVNYXAuZm9yRWFjaCgobm9kZURlZmluZTogTm9kZURlZmluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Tm9kZURlZmluZTogTm9kZURlZmluZSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBub2RlRGVmaW5lLnR5cGUsXG4gICAgICAgICAgICAgICAgZXh0ZW5kOiBub2RlRGVmaW5lLmV4dGVuZCxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiBub2RlRGVmaW5lLmRldGFpbHMsXG4gICAgICAgICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBub2RlRGVmaW5lLm5vZGUuaW5wdXRzPy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlRGVmaW5lLm5vZGUuaW5wdXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld05vZGVEZWZpbmUubm9kZS5pbnB1dHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3Tm9kZURlZmluZS5ub2RlLmlucHV0cy5wdXNoKGNyZWF0ZVNsb3Qoc2xvdCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2RlRGVmaW5lLm5vZGUucHJvcHM/LmZvckVhY2goKHNsb3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW5ld05vZGVEZWZpbmUubm9kZS5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUucHJvcHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3Tm9kZURlZmluZS5ub2RlLnByb3BzLnB1c2goY3JlYXRlU2xvdChzbG90KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5vZGVEZWZpbmUubm9kZS5vdXRwdXRzPy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cykge1xuICAgICAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cy5wdXNoKGNyZWF0ZVNsb3Qoc2xvdCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzaGFkZXJOb2RlTGlzdC5zZXQobmV3Tm9kZURlZmluZS50eXBlLCBuZXdOb2RlRGVmaW5lKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2hhZGVyUHJvcGVydHlMaXN0OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eURlZmluZT4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHNoYWRlclByb3BlcnR5TWFwLmZvckVhY2goKHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVEdW1wID0gY2NlLkR1bXAuZW5jb2RlLmVuY29kZU9iamVjdChwcm9wZXJ0eURlZmluZS5kZWZhdWx0LCB7IGRlZmF1bHQ6IHByb3BlcnR5RGVmaW5lLmRlZmF1bHQgfSk7XG4gICAgICAgICAgICBjb25zdCBuZXdQcm9wZXJ0eURlZmluZTogUHJvcGVydHlEZWZpbmUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogcHJvcGVydHlEZWZpbmUubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wZXJ0eURlZmluZS50eXBlLFxuICAgICAgICAgICAgICAgIGRlY2xhcmVUeXBlOiBwcm9wZXJ0eURlZmluZS5kZWNsYXJlVHlwZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZUR1bXAudmFsdWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsczogcHJvcGVydHlEZWZpbmUuZGV0YWlscyxcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwcm9wZXJ0eURlZmluZS5vdXRwdXRzLmZvckVhY2goKHNsb3Q6IFNsb3REZWZpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eURlZmluZS5vdXRwdXRzLnB1c2goY3JlYXRlU2xvdChzbG90KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNoYWRlclByb3BlcnR5TGlzdC5zZXQobmV3UHJvcGVydHlEZWZpbmUudHlwZSwgbmV3UHJvcGVydHlEZWZpbmUpO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hhZGVyTm9kZUxpc3Q6IFsuLi5zaGFkZXJOb2RlTGlzdF0sXG4gICAgICAgICAgICBzaGFkZXJQcm9wZXJ0eUxpc3Q6IFsuLi5zaGFkZXJQcm9wZXJ0eUxpc3RdLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyBxdWVyeVByb3BlcnR5VmFsdWVEdW1wQnlUeXBlKHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCB7IHNoYWRlclByb3BlcnR5TWFwIH0gPSBhd2FpdCBFZGl0b3IuTW9kdWxlLmltcG9ydFByb2plY3RNb2R1bGUoJ2RiOi8vc2hhZGVyLWdyYXBoL2dyYXBoL2luZGV4LnRzJykgYXMgSU1vZHVsZU9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSA9IHNoYWRlclByb3BlcnR5TWFwLmdldCh0eXBlKSE7XG4gICAgICAgIGNvbnN0IHZhbHVlRHVtcCA9IGNjZS5EdW1wLmVuY29kZS5lbmNvZGVPYmplY3QocHJvcGVydHlEZWZpbmUuZGVmYXVsdCwge30pO1xuICAgICAgICB2YWx1ZUR1bXAudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlRHVtcDtcbiAgICB9LFxuXG4gICAgYXN5bmMgaW5pdFByZXZpZXcoY29uZmlnOiBQcmV2aWV3Q29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBhZGRDaHVua3MoKTtcbiAgICAgICAgICAgIGF3YWl0IHByZXZpZXdTY2VuZS5pbml0KGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyB1cGRhdGVNYXRlcmlhbChncmFwaERhdGE6IEdyYXBoRGF0YSkge1xuICAgICAgICBpZiAoIWdyYXBoRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBtYXN0ZXJOb2RlID0gYXdhaXQgc2hhZGVyR3JhcGguZ2VuZXJhdGVNYXN0ZXJOb2RlKGdyYXBoRGF0YSk7XG5cbiAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCBtYXN0ZXJOb2RlLmNyZWF0ZU1hdGVyaWFsKGJ1aWxkRWZmZWN0KTtcbiAgICAgICAgcHJldmlld1NjZW5lLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgICBjb25zb2xlLmRlYnVnKCd1cGRhdGUgc2hhZGVyIGdyYXBoIG1hdGVyaWFsIDogJyArIChEYXRlLm5vdygpIC0gdGltZSkgLyAxMDAwKTtcbiAgICB9LFxuXG4gICAgcmVnaXN0ZXJFZmZlY3RzKHV1aWQ6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdyZWdpc3RlckVmZmVjdHM6ICcgKyB1dWlkKTtcbiAgICAgICAgY2NlLlNjZW5lRmFjYWRlTWFuYWdlci5yZWdpc3RlckVmZmVjdHMoW3V1aWRdKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlRWZmZWN0cyh1dWlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygncmVtb3ZlRWZmZWN0czonICsgdXVpZCk7XG4gICAgICAgIGNjZS5TY2VuZUZhY2FkZU1hbmFnZXIucmVtb3ZlRWZmZWN0cyhbdXVpZF0pO1xuICAgIH0sXG5cbiAgICB1cGRhdGVFZmZlY3QodXVpZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ3VwZGF0ZUVmZmVjdDonICsgdXVpZCk7XG4gICAgICAgIGNjZS5TY2VuZUZhY2FkZU1hbmFnZXIudXBkYXRlRWZmZWN0KFt1dWlkXSk7XG4gICAgfSxcbn07XG4iXX0=