awv3
Version:
AWV client CAD framework
1 lines • 4.79 kB
JavaScript
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}exports.__esModule=!0;var _getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_three=require("three"),_three2=_interopRequireDefault(_three);require("perfnow");var _helpers=require("../core/helpers"),Helpers=_interopRequireWildcard(_helpers),_tween=require("../animation/tween"),_tween2=_interopRequireDefault(_tween),Renderer=function(){function e(){var t=this,r=arguments.length<=0||void 0===arguments[0]?Error.log("Factory was initialized without canvas"):arguments[0],i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];(0,_classCallCheck3.default)(this,e),i=(0,_extends3.default)({resolution:parseFloat(Helpers.url("resolution"))||1,pixelated:Helpers.url("pixelated")||!1,clearColor:new _three2.default.Color(0),place:"first",startImmediately:!0,precision:"highp",premultipliedAlpha:!0,stencil:!0,depth:!0,preserveDrawingBuffer:!0,alpha:!0,antialias:!0,logarithmicDepthBuffer:!1,sortObjects:!0,autoClear:!1,canvasStyle:"position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; overflow: hidden; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none;",shadowMapEnabled:!0,shadowMapType:_three2.default.PCFShadowMap},i),this.canvas=r,this.resolution=i.resolution,this.clearColor=i.clearColor,this.gl=new _three2.default.WebGLRenderer({precision:i.precision,premultipliedAlpha:i.premultipliedAlpha,stencil:i.stencil,depth:i.depth,preserveDrawingBuffer:i.preserveDrawingBuffer,alpha:i.alpha,antialias:i.antialias,logarithmicDepthBuffer:i.logarithmicDepthBuffer}),this.context=this.gl.domElement,this.context.setAttribute("style",i.canvasStyle),i.pixelated&&(this.context.style.imageRendering="pixelated"),this.gl.sortObjects=i.sortObjects,this.gl.autoClear=i.autoClear,this.gl.shadowMap.enabled=i.shadowMapEnabled,this.gl.shadowMap.type=i.shadowMapType,"last"===i.place?r.dom.appendChild(this.context):r.dom.insertBefore(this.context,r.dom.firstChild),this.resizeHandler=function(){return t.resize()},window.addEventListener("resize",this.resizeHandler,!1),this.resize(),setTimeout(function(){return t.resize()},1),setTimeout(function(){return t.resize()},100),setTimeout(function(){return t.resize()},500),this.gl.setScissorTest(!1),this.gl.setClearColor(this.clearColor,0),this.gl.clear(),this.gl.setScissorTest(!0);var s=this;this.invalidateFrames=1,this.dirty=!0,this.time=0,this.render=function(e){if(s.time=e,requestAnimationFrame(s.render),s.invalidateFrames>0&&s.dirty){var t=s.context.getBoundingClientRect();t.left==s.offset.left&&t.top==s.offset.top&&t.width==s.offset.width&&t.height==s.offset.height||(s.offset=t,s.invalidateCanvas(),t.width==s.offset.width&&t.height==s.offset.height||s.gl.setSize(s.offset.width*s.resolution,s.offset.height*s.resolution,!1)),s.invalidateFrames--}_tween2.default.update(e,s);for(var r=!0,i=s.canvas.views,a=Array.isArray(i),n=0,i=a?i:(0,_getIterator3.default)(i);;){var l;if(a){if(n>=i.length)break;l=i[n++]}else{if(n=i.next(),n.done)break;l=n.value}var o=l;o.clear(e)&&(r=!1)}for(var h=s.canvas.views,d=Array.isArray(h),u=0,h=d?h:(0,_getIterator3.default)(h);;){var f;if(d){if(u>=h.length)break;f=h[u++]}else{if(u=h.next(),u.done)break;f=u.value}var p=f;p.render(e)}r&&(s.dirty=!1)},i.startImmediately&&this.start()}return e.prototype.destroy=function(){this.context.remove(),this.render=function(){},window.removeEventListener("resize",this.resizeHandler),this.gl.dispose(),this.gl=void 0},e.prototype.start=function(){this.render(performance.now())},e.prototype.resize=function(){this.offset=this.context.getBoundingClientRect(),this.gl.setSize(this.offset.width*this.resolution,this.offset.height*this.resolution,!1),this.invalidateCanvas(30),this.invalidateViews(30)},e.prototype.invalidateCanvas=function(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];this.invalidateFrames+=e,this.invalidateFrames>60&&(this.invalidateFrames=60)},e.prototype.invalidateViews=function(){var e=arguments.length<=0||void 0===arguments[0]?1:arguments[0];this.dirty=!0;for(var t=this.canvas.views,r=Array.isArray(t),i=0,t=r?t:(0,_getIterator3.default)(t);;){var s;if(r){if(i>=t.length)break;s=t[i++]}else{if(i=t.next(),i.done)break;s=i.value}var a=s;a.invalidate(e)}},e}();exports.default=Renderer;