vicowa-web-components
Version:
2 lines • 3.55 kB
JavaScript
import{createQuickAccess as e}from"/third_party/web-component-base-class/dist/tools.js";import{CAMERA_TYPES as t}from"../../src/vicowa-webgl/vicowa-webgl-definitions.js";import{default as a,MANIPULATOR_TYPES as r}from"../../src/vicowa-webgl/manipulation-extension.js";const o=e(document,"id");function l(e){switch(e){case"orbital":o.gl1.setCamera(t.ORBITAL,{minLatitude:10,maxLatitude:85,position:{longitude:-90,latitude:65},minDistance:3,maxDistance:30});break;case"first-person":o.gl1.setCamera(t.FREE,{position:{x:0,y:1.8,z:-10},target:{x:0,y:0,z:0}});break;case"vr":o.gl1.setCamera(t.FREE,{position:{x:0,y:1.8,z:-10},target:{x:0,y:0,z:0},vrEnabled:!0,mobile:!0})}o.gl1.setVirtualBody({bodySize:{x:.3,y:.9,z:.2},eyeOffset:{y:.16}}),o.gl1.cameraCollisions=!0,o.gl1.cameraGravity=!0}o.orbital.addEventListener("click",(()=>{l("orbital")})),o.firstPerson.addEventListener("click",(()=>{l("first-person")})),o.vr.addEventListener("click",(()=>{l("vr")})),o.gl1.onAttached=()=>{const e=new a;o.gl1.addExtension(e),o.gl1.createSkyBox("../resources/3d/skybox/skybox"),o.gl1.addEnvironmentalLight({x:0,y:1,z:0,color:{ground:{r:.9,g:1,b:.9},diffuse:{r:.1,g:.15,b:.1},specular:{r:0,g:0,b:0}}},"env"),o.gl1.addDirectionalLight({x:4,y:-10,z:10,generateShadows:!0,color:{diffuse:{r:1,g:1,b:.9},specular:{r:1,g:1,b:.9}}},"sunLight"),o.gl1.addGround({width:100,height:100,material:{name:"ground",diffuse:{r:0,g:.3,b:0},specular:{r:0,g:.01,b:0}}},"ground"),l("orbital"),o.gl1.startRendering(),o.gl1.onObjectClicked=t=>{o.gl1.isObjectSelected(t.path)?(o.gl1.unSelectObject(t.path),e.removeManipulators(t.path)):(o.gl1.selectObject(t.path),e.attachManipulators(t.path,t.location))};let t=0;o.add.addEventListener("click",(()=>{t++;const a=e.constructor.getAllManipulatorsAllowed();switch(a[r.MOVE_PLANE]=!1,o.object.value){case"sphere":o.gl1.addSphere({diameter:1,position:{y:1}},`sphere${t}`),e.setAllowedManipulators(`sphere${t}`,a);break;case"box":o.gl1.addBox({width:1,height:2,depth:3,position:{y:1},rotation:{x:0,y:0,z:45}},`box${t}`),e.setAllowedManipulators(`box${t}`,a);break;case"plane":o.gl1.addPlane({width:1,height:2},`plane${t}`),e.setAllowedManipulators(`plane${t}`,a);break;case"extrudedPolygon":o.gl1.addExtrudedPolygon({outline:[[-5,0,0],[-.4,0,0],[-.4,0,2],[.4,0,2],[.4,0,0],[5,0,0],[5,0,6],[-5,0,6]],rotation:{x:-90,y:0,z:0},holes:[[[1,0,.5],[4,0,.5],[4,0,2],[1,0,2]],[[-1,0,.5],[-1,0,2],[-4,0,2],[-4,0,.5]],[[1,0,3.5],[2,0,3.5],[2,0,5],[1,0,5]],[[3,0,3.5],[4,0,3.5],[4,0,5],[3,0,5]],[[-1,0,3.5],[-1,0,5],[-2,0,5],[-2,0,3.5]],[[-3,0,3.5],[-3,0,5],[-4,0,5],[-4,0,3.5]]],depth:.1,material:{name:"brick",specular:{r:0,g:0,b:0},texture:{src:"../resources/3d/textures/BrickSmallNew.jpg",xScale:8,yScale:5.1}}},`extrudedPolygon${t}`),o.gl1.addExtrudedPolygon({outline:[[-4.5,0,.2],[-.5,0,.2],[-.5,0,2.5],[.5,0,2.5],[.5,0,.2],[4.5,0,.2],[4.5,0,5.5],[-4.5,0,5.5]],depth:.02,rotation:{x:-90,y:0,z:0},position:{z:.05},material:{name:"glass",specular:{r:1,g:1,b:1},diffuse:{r:.9,g:1,b:.9},alpha:.2}},`front-glass${t}`),o.gl1.groupObjects([`extrudedPolygon${t}`,`front-glass${t}`],`front${t}`),e.setAllowedManipulators(`front${t}`,a)}})),o.delete.addEventListener("click",(()=>{o.gl1.getSelectedObjects().forEach((e=>{o.gl1.removeObject(e)}))}))},o.screenShotJpg.addEventListener("click",(()=>{o.screenshotResult.src=o.gl1.getDataUrl("image/jpg",.6)})),o.screenShotPng.addEventListener("click",(()=>{o.gl1.getBlob((e=>{const t=new FileReader;t.readAsDataURL(e),t.onloadend=()=>{const e=t.result;o.screenshotResult.src=e}}))}));
//# sourceMappingURL=index.js.map