UNPKG

@tomorrowevening/hermes

Version:

An extendable set of Web Tools controlled via a separate window for non-intereference with content.

2 lines (1 loc) 5.2 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("three"),u=require("../../utils/threeEditorDebug.cjs");function y(e){if(e.name==="cameras")return"camera";if(e.name==="interactive")return"interactive";if(e.name==="lights")return"light";if(e.name==="ui")return"ui";if(e.name==="utils")return"utils";const s=e.type;return s.search("Helper")>-1?"icon_utils":s.search("Camera")>-1?"camera":s.search("Light")>-1?"light":"obj3D"}function f(e){const s={name:e.name,type:e.type,uuid:e.uuid,children:[]};return e.children.forEach(t=>{s.children.push(f(t))}),s}function p(e){return{src:e.image?.src??"",offset:[e.offset.x,e.offset.y],repeat:[e.repeat.x,e.repeat.y]}}const l={src:"",offset:[0,0],repeat:[1,1]};function v(e){const s={};for(const t in e){const r=e[t];if(r!==null&&typeof r=="object"&&Object.prototype.hasOwnProperty.call(r,"value")){const a=r.value;a==null?s[t]={value:l}:a.isTexture?s[t]={value:p(a)}:s[t]={value:a}}else r==null?s[t]=l:r.isTexture?s[t]=p(r):s[t]=r}return s}function T(e){switch(e){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function o(e){const s={};for(const t in e){if(t.substring(0,1)==="_"||t.substring(0,2)==="is"||T(t))continue;const r=typeof e[t],n=e[t];switch(r){case"boolean":case"number":case"string":s[t]=n;break;case"object":if(n!==null)if(n.isTexture)s[t]={src:u.ExportTexture.renderToBlob(n),offset:[n.offset.x,n.offset.y],repeat:[n.repeat.x,n.repeat.y]};else if(n.isUniformNode){const a=n.value;s[t]={__isUniform:!0,value:a?.isTexture?{src:u.ExportTexture.renderToBlob(a),offset:[a.offset.x,a.offset.y],repeat:[a.repeat.x,a.repeat.y]}:a}}else t==="uniforms"?s[t]=v(n):t.search("Node")>-1||(s[t]=n);else t==="glslVersion"?s[t]="":t.search("Node")>-1||(s[t]={src:"",offset:[0,0],repeat:[1,1]});break}}return e.anisotropy!==void 0&&(s.anisotropy=e.anisotropy),e.clearcoat!==void 0&&(s.clearcoat=e.clearcoat),e.iridescence!==void 0&&(s.iridescence=e.iridescence),e.dispersion!==void 0&&(s.dispersion=e.dispersion),e.sheen!==void 0&&(s.sheen=e.sheen),e.transmission!==void 0&&(s.transmission=e.transmission),e.transmission!==void 0&&(s.transmission=e.transmission),s}function x(e){const s=document.createElement("canvas"),t=s.getContext("2d");return s.width=e.width,s.height=e.height,t.drawImage(e,0,0),s.toDataURL("image/png")}function m(e){e.updateMatrix();const s={name:e.name,type:e.type,uuid:e.uuid,visible:e.visible,matrix:e.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};e.animations.forEach(r=>{s.animations.push({name:r.name,duration:r.duration,blendMode:r.blendMode})});const t=e.type.toLowerCase();if(t.search("mesh")>-1){const r=e;if(Array.isArray(r.material)){const n=[];r.material.forEach(a=>{n.push(o(a))}),s.material=n}else s.material=o(r.material)}else if(t.search("points")>-1){const r=e;if(Array.isArray(r.material)){const n=[];r.material.forEach(a=>{n.push(o(a))}),s.material=n}else s.material=o(r.material)}else if(t.search("line")>-1){const r=e;if(Array.isArray(r.material)){const n=[];r.material.forEach(a=>{n.push(o(a))}),s.material=n}else s.material=o(r.material)}else t.search("camera")>-1?e.type==="PerspectiveCamera"?s.perspectiveCameraInfo={fov:e.fov,zoom:e.zoom,near:e.near,far:e.far,focus:e.focus,aspect:e.aspect,filmGauge:e.filmGauge,filmOffset:e.filmOffset}:e.type==="OrthographicCamera"&&(s.orthographicCameraInfo={zoom:e.zoom,near:e.near,far:e.far,left:e.left,right:e.right,top:e.top,bottom:e.bottom}):t.search("light")>-1&&(s.lightInfo={color:e.color,intensity:e.intensity,decay:e.decay,distance:e.distance,angle:e.angle,penumbra:e.penumbra,groundColor:e.groundColor,width:e.width,height:e.height});return s}function d(e,s){const t=s.split(".");switch(t.length){case 1:return e[t[0]];case 2:return e[t[0]][t[1]];case 3:return e[t[0]][t[1]][t[2]];case 4:return e[t[0]][t[1]][t[2]][t[3]];case 5:return e[t[0]][t[1]][t[2]][t[3]][t[4]];case 6:return e[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]}}function I(e,s){for(const t in s)e[t]=s[t]}function h(e,s,t){if(e===void 0){console.log(`Hermes - Can't set props: ${s}`,t);return}const r=s.split("."),n=r.length;if(typeof t!="object")switch(n){case 1:e[r[0]]=t;break;case 2:e[r[0]][r[1]]=t;break;case 3:e[r[0]][r[1]][r[2]]=t;break;case 4:e[r[0]][r[1]][r[2]][r[3]]=t;break;case 5:e[r[0]][r[1]][r[2]][r[3]][r[4]]=t;break}else{let i;switch(n){case 1:i=e[r[0]];break;case 2:i=e[r[0]][r[1]];break;case 3:i=e[r[0]][r[1]][r[2]];break;case 4:i=e[r[0]][r[1]][r[2]][r[3]];break;case 5:i=e[r[0]][r[1]][r[2]][r[3]][r[4]];break}i!=null?I(i,t):console.log(`Hermes - Can't set props because target isn't found: ${s}`,t)}}function g(e){return new Promise((s,t)=>{const r=new Image;r.onload=()=>{const n=new c.Texture(r);n.wrapS=c.RepeatWrapping,n.wrapT=c.RepeatWrapping,n.needsUpdate=!0,s(n)},r.onerror=t,r.src=e})}const w={stripObject:m,stripScene:f,getSubItem:d,setItemProps:h,textureFromSrc:g};exports.EDITOR_UTILS=w;exports.convertImageToBase64=x;exports.determineIcon=y;exports.getSubItem=d;exports.setItemProps=h;exports.stripObject=m;exports.stripScene=f;exports.textureFromSrc=g;