awv3
Version:
AWV client CAD framework
1 lines • 9.38 kB
JavaScript
"use strict";function _interopRequireWildcard(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e["default"]=t,e}function _interopRequireDefault(t){return t&&t.__esModule?t:{"default":t}}exports.__esModule=!0;var _extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_three=require("three"),_three2=_interopRequireDefault(_three),_error=require("../core/error"),Error=_interopRequireWildcard(_error),_helpers=require("../core/helpers"),_canvas=require("../core/canvas"),_dom=require("../core/dom"),_dom2=_interopRequireDefault(_dom),_interaction=require("../core/interaction"),_interaction2=_interopRequireDefault(_interaction),_stats=require("../misc/stats"),_stats2=_interopRequireDefault(_stats),_orbit=require("../controls/orbit"),_orbit2=_interopRequireDefault(_orbit),_perspective=require("../three/perspective"),_perspective2=_interopRequireDefault(_perspective),View=function(){function t(){var e=this,i=arguments.length<=0||void 0===arguments[0]?_canvas.lastCreated:arguments[0],s=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];(0,_classCallCheck3["default"])(this,t),this.id=(0,_helpers.guid)(),this.canvas=i,this.renderer=i.renderer,this.invalidateFrames=2,this.force=0,this.dirty=!0,this.bounds={box:new _three2["default"].Box3,sphere:new _three2["default"].Sphere},s=(0,_extends3["default"])({dom:i.dom,renderAlways:!1,visible:!0,callback:void 0,callbackRender:void 0,callbackAfter:void 0,background:this.renderer.clearColor,opacity:0,defaultCursor:"auto"},s),this.dom=(0,_helpers.queryDom)(s.dom),this.renderAlways=s.renderAlways,this.visible=s.visible,this.callbackBefore=s.callback,this.callbackRender=s.callbackRender,this.callbackAfter=s.callbackAfter,this.background=s.background,this.opacity=s.opacity,this.defaultCursor=s.defaultCursor,this.dom.style.overlay="hidden",s.background!==this.renderer.clearColor&&(this.dom.style.border="2px solid #"+this.background.getHexString()),this.input=new _dom2["default"](this,{wheel:function(t){e.controls.onMouseWheel(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onMouseWheel(t)},mouseout:function(t){e.interaction.onMouseOut(t)},mousemove:function(t){e.interaction.onMouseMove(t),e.input.mouse.down&&e.controls.onMouseMove(t),e.input.mouse.down&&e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onMouseMove(t)},mousedown:function(t){e.interaction.onMouseDown(t),e.controls.onMouseDown(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onMouseDown(t)},mouseup:function(t){e.interaction.onMouseUp(t),e.controls.onMouseUp(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onMouseUp(t)},touchstart:function(t){e.controls.onTouchStart(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onTouchStart(t)},touchmove:function(t){e.controls.onTouchMove(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onTouchMove(t)},touchend:function(t){e.controls.onTouchEnd(t),e.hud&&e.controlsHud&&e.controlsHud!==e.controls&&e.controlsHud.onTouchEnd(t)}}),this.scene=new _three2["default"].Scene,this.scene.canvas=i,this.scene.view=this,this.ambient=new _three2["default"].AmbientLight(s.ambientColor?s.ambientColor:16777215),this.ambient.intensity="undefined"!=typeof s.ambientIntensity?s.ambientIntensity:1,this.ambient.keep=!0,this.ambient.view=this,this.scene.add(this.ambient),this.camera=new _perspective2["default"],this.controls=new _orbit2["default"](this,{maxPolarAngle:Math.PI,minDistance:1,maxDistance:2e4}),this.hud=!1,this.sceneHud=new _three2["default"].Scene,this.sceneHud.canvas=i,this.sceneHud.view=this,this.cameraHud=this.camera,this.controlsHud=this.controls,this.ambientHud=new _three2["default"].AmbientLight(s.ambientColor?s.ambientColor:16777215),this.ambientHud.intensity="undefined"!=typeof s.ambientIntensity?s.ambientIntensity:1,this.ambientHud.keep=!0,this.ambientHud.view=this,this.sceneHud.add(this.ambientHud),this.interaction=new _interaction2["default"](this),this.updateScopes(),this.canvas.views.push(this),this.renderer.resize()}return t.prototype.setCursor=function(){var t=arguments.length<=0||void 0===arguments[0]?this.defaultCursor:arguments[0],e=arguments[1];return t!=this.cursor&&((0,_helpers.setPrefixedValue)(this.dom,"cursor",t,e),this.cursor=t),this},t.prototype.getPoint2=function(t){var e=this.width/2,i=this.height/2,s=t.project(this.camera);return s.x=s.x*e+e,s.y=-(s.y*i)+i,s},t.prototype.getPoint3=function(t){var e=new _three2["default"].Vector3(t.x/this.width*2-1,2*-(t.y/this.height)+1,1);return e.unproject(this.camera),e},t.prototype.getViewLine3=function(t){var e=new _three2["default"].Vector3(t.x/this.width*2-1,2*-(t.y/this.height)+1,0),i=new _three2["default"].Vector3(t.x/this.width*2-1,2*-(t.y/this.height)+1,1);return e.unproject(this.camera),i.unproject(this.camera),new _three2["default"].Line3(e,i)},t.prototype.updateOverlays=function(){},t.prototype.updateScopes=function(){for(var t=this.dom;t&&t!=this.canvas.dom;){var e=this.canvas.scopes.get(t);e?e.push(this):this.canvas.scopes.set(t,[this]),t=t.parentNode}},t.prototype.clear=function(t){return this.dirty=this.invalidateFrames>0&&this.measure(),this.visible&&(this.input.update(),this.controls.update(t),this.hud&&this.controlsHud&&this.controlsHud!=this.controls&&this.controlsHud.update(t),this.interaction.update(),(this.dirty||this.renderAlways||this.controls.inMotion||this.controlsHud.inMotion)&&this.dirty&&(this.renderer.dirty=!0,this.renderer.gl.setViewport(this.old[0],this.old[1],this.old[2],this.old[3]),this.renderer.gl.setScissor(this.old[0],this.old[1],this.old[2],this.old[3]),this.renderer.gl.setClearColor(this.renderer.clearColor,0),this.renderer.gl.clear())),this.invalidateFrames>0&&this.invalidateFrames--,this.dirty},t.prototype.render=function(t){(this.force>0||this.dirty||this.renderAlways||this.controls.inMotion||this.controlsHud.inMotion||this.stats)&&(this.callbackBefore&&this.callbackBefore(),this.renderer.gl.setViewport(this["new"][0],this["new"][1],this["new"][2],this["new"][3]),this.renderer.gl.setScissor(this["new"][0],this["new"][1],this["new"][2],this["new"][3]),this.renderer.gl.setClearColor(this.background,this.opacity),this.renderer.gl.clear(),this.callbackRender?this.callbackRender():(this.renderer.gl.render(this.scene,this.camera),this.renderer.gl.clearDepth(),this.hud&&this.renderer.gl.render(this.sceneHud,this.cameraHud)),this.callbackAfter&&this.callbackAfter(),this.stats&&this.stats.update(),this.force>0&&this.force--)},t.prototype.invalidate=function(){var t=arguments.length<=0||void 0===arguments[0]?1:arguments[0];return this.force+=t,this.force>60&&(this.force=60),this.invalidateFrames+=t,this.invalidateFrames>60&&(this.invalidateFrames=60),this},t.prototype.measure=function(){var t=!1,e=this.dom.getBoundingClientRect(),i={top:e.top,left:e.left,width:e.width,height:e.height};i.top-=this.renderer.offset.top,i.left-=this.renderer.offset.left,i.width==this.width&&i.height==this.height||(this.calibrate(i.width,i.height),this.invalidate(10),t=!0),i.top==this.top&&i.left==this.left||(this.invalidate(10),t=!0),this.old=[this.left*this.renderer.resolution,this.bottom*this.renderer.resolution,this.width*this.renderer.resolution,this.height*this.renderer.resolution],this.width=i.width,this.height=i.height,this.top=i.top,this.left=i.left,this.bottom=this.renderer.offset.height-i.height-i.top,this["new"]=[this.left*this.renderer.resolution,this.bottom*this.renderer.resolution,this.width*this.renderer.resolution,this.height*this.renderer.resolution];var s=!(this.height<=0||this.width<=0||this.top>=this.renderer.offset.height||this.left>=this.renderer.offset.width||this.top+this.height<=0||this.left+this.width<=0);return this.visible!=s&&(this.visible=s,this.visible&&this.invalidate(10),t=!0),t},t.prototype.calibrate=function(t,e){this.aspect=t/e,this.camera instanceof _three2["default"].PerspectiveCamera?(this.camera.aspect=this.aspect,this.camera.updateProjectionMatrix(),this.camera.radius=(t+e)/4,this.hud&&this.cameraHud!=this.camera&&(this.cameraHud.aspect=this.aspect,this.cameraHud.updateProjectionMatrix(),this.cameraHud.radius=(t+e)/4)):this.camera instanceof _three2["default"].OrthographicCamera&&(t=this.camera.size*this.aspect,e=this.camera.size,this.camera.left=t/-2,this.camera.right=t/2,this.camera.top=e/2,this.camera.bottom=e/-2,this.camera.updateProjectionMatrix(),this.hud&&this.cameraHud!=this.camera&&(this.cameraHud.left=t/-2,this.cameraHud.right=t/2,this.cameraHud.top=e/2,this.cameraHud.bottom=e/-2,this.cameraHud.updateProjectionMatrix()))},t.prototype.updateBounds=function(){var t=arguments.length<=0||void 0===arguments[0]?void 0:arguments[0];return this.bounds.box=t?this.bounds.box.union(t):(new _three2["default"].Box3).setFromObject(this.scene),this.bounds.sphere=this.bounds.box.getBoundingSphere(),this},(0,_createClass3["default"])(t,[{key:"showStats",set:function(t){this.stats&&(this.stats.remove(),this.stats=void 0),t&&(this.stats=new _stats2["default"],this.dom.appendChild(this.stats.dom))}}]),t}();exports["default"]=View;