prefab-preview.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. 'use strict';
  2. const { PreviewControl, hideElement } = require("../utils/preview");
  3. exports.template = /* html */`
  4. <ui-section header="i18n:ENGINE.inspector.preview.header" class="preview-section config no-padding" expand>
  5. <div class="preview"></div>
  6. </ui-section>
  7. `;
  8. exports.style = /* css */`
  9. .preview-section {
  10. margin-top: 0px;
  11. }
  12. .preview { }
  13. `;
  14. exports.$ = {
  15. previewSection: '.preview-section',
  16. container: '.preview',
  17. };
  18. const Elements = {
  19. preview: {
  20. ready(panel) {
  21. panel.preview.init();
  22. },
  23. async update(panel) {
  24. await panel.preview.callPreviewFunction('setPrefab', panel.asset.uuid);
  25. },
  26. close(panel) {},
  27. },
  28. };
  29. exports.methods = {};
  30. exports.ready = function() {
  31. this.preview = new PreviewControl('scene:prefab-preview', 'query-prefab-preview-data', this.$.container);
  32. Object.values(Elements).forEach((element) => element.ready && element.ready(this));
  33. };
  34. exports.update = async function(assetList, metaList) {
  35. // TODO The hack should be followed by a dump switch for the resource to provide a preview or not
  36. const prefabPreviewEnabled = await Editor.Profile.getConfig('asset-db', 'prefabPreviewEnabled');
  37. // set parent element display state by prefabPreviewEnabled
  38. hideElement(this.$.previewSection, !prefabPreviewEnabled);
  39. if (!prefabPreviewEnabled) { return; }
  40. this.assetList = assetList;
  41. this.metaList = metaList;
  42. this.asset = assetList[0];
  43. this.meta = metaList[0];
  44. // hide the preview when multi-select
  45. hideElement(this.$.container, assetList.length > 1);
  46. Object.values(Elements).forEach((element) => element.update && element.update(this));
  47. };
  48. exports.close = function() {
  49. this.preview.close();
  50. Object.values(Elements).forEach((element) => element.close && element.close(this));
  51. };