'use strict'; const { updateElementReadonly } = require('../utils/assets'); const texture = require('./texture/texture'); const insertTemplate = /* html */` `; exports.template = texture.template.replace('', insertTemplate); exports.style = texture.style; exports.$ = Object.assign({}, texture.$, { widthInput: '.width-input', heightInput: '.height-input', }); const Elements = Object.assign({}, texture.Elements, { width: { ready() { const panel = this; panel.$.widthInput.addEventListener('change', (event) => { panel.userDataList.forEach((userData) => { userData.width = event.target.value; }); panel.dispatch('change'); }); panel.$.widthInput.addEventListener('confirm', () => { panel.dispatch('snapshot'); }); }, update() { const panel = this; panel.$.widthInput.value = panel.userData.width; panel.updateInvalid(panel.$.widthInput, 'width'); updateElementReadonly.call(panel, panel.$.widthInput); }, }, height: { ready() { const panel = this; panel.$.heightInput.addEventListener('change', (event) => { panel.userDataList.forEach((userData) => { userData.height = event.target.value; }); panel.dispatch('change'); }); panel.$.heightInput.addEventListener('confirm', () => { panel.dispatch('snapshot'); }); }, update() { const panel = this; panel.$.heightInput.value = panel.userData.height; panel.updateInvalid(panel.$.heightInput, 'height'); updateElementReadonly.call(panel, panel.$.heightInput); }, }, }); exports.ready = function() { for (const prop in Elements) { const element = Elements[prop]; if (element.ready) { element.ready.call(this); } } }; exports.methods = Object.assign({}, texture.methods, { async apply() { await Editor.Message.request('scene', 'apply-render-texture', this.asset.uuid, this.userData); }, }); exports.update = function(assetList, metaList) { this.assetList = assetList; this.metaList = metaList; this.asset = this.assetList[0]; this.meta = this.metaList[0]; this.userData = this.meta.userData; this.userDataList = this.metaList.map((item) => item.userData); for (const prop in Elements) { const element = Elements[prop]; if (element.update) { element.update.call(this); } } };