From 80905badf975da277fef5f842e11227cc3048bf5 Mon Sep 17 00:00:00 2001 From: ThibmoRozier Date: Wed, 16 Sep 2015 21:37:37 +0200 Subject: [PATCH] Updated progress and docs. Some of the functions used have been deprecated, fixed here. Updated the docs. Recompiled to make min.js version equal to standard js. --- jsc3d/bin/jsc3d.min.js | 318 +++++++++--------- jsc3d/docs/files.html | 4 +- jsc3d/docs/index.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.AABB.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.BinaryStream.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.LoaderSelector.html | 2 +- jsc3d/docs/symbols/JSC3D.Material.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Math3D.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Matrix3x4.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Mesh.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.ObjLoader.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.PickInfo.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Scene.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.StlLoader.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Texture.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.Viewer.html | 332 +++++++++---------- jsc3d/docs/symbols/JSC3D.html | 2 +- jsc3d/docs/symbols/_global_.html | 2 +- jsc3d/docs/symbols/src/jsc3d.js.html | 4 +- jsc3d/jsc3d.js | 4 +- 20 files changed, 2337 insertions(+), 2315 deletions(-) diff --git a/jsc3d/bin/jsc3d.min.js b/jsc3d/bin/jsc3d.min.js index 41fcc29..d55797e 100644 --- a/jsc3d/bin/jsc3d.min.js +++ b/jsc3d/bin/jsc3d.min.js @@ -1,168 +1,190 @@ /* - Copyright (c) 2011~2013 Humu + Copyright (c) 2011~2014 Humu This file is part of jsc3d project, which is freely distributable under the terms of the MIT license. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. */ var a,JSC3D=JSC3D||{}; -JSC3D.Viewer=function(b,c){this.params=c?{SceneUrl:c.SceneUrl||"",InitRotationX:c.InitRotationX||0,InitRotationY:c.InitRotationY||0,InitRotationZ:c.InitRotationZ||0,ModelColor:c.ModelColor||"#caa618",BackgroundColor1:c.BackgroundColor1||"#ffffff",BackgroundColor2:c.BackgroundColor2||"#383840",BackgroundImageUrl:c.BackgroundImageUrl||"",RenderMode:c.RenderMode||"flat",Definition:c.Definition||"standard",MipMapping:c.MipMapping||"off",CreaseAngle:c.parameters||-180,SphereMapUrl:c.SphereMapUrl||"",ProgressBar:c.ProgressBar|| -"on",Renderer:c.Renderer||"",LocalBuffers:c.LocalBuffers||"retain"}:{SceneUrl:"",InitRotationX:0,InitRotationY:0,InitRotationZ:0,ModelColor:"#caa618",BackgroundColor1:"#ffffff",BackgroundColor2:"#383840",BackgroundImageUrl:"",RenderMode:"flat",Definition:"standard",MipMapping:"off",CreaseAngle:-180,SphereMapUrl:"",ProgressBar:"on",Renderer:"",LocalBuffers:"retain"};this.canvas=b;this.selectionBuffer=this.zBuffer=this.colorBuffer=this.bkgColorBuffer=this.canvasData=this.ctx2d=null;this.frameWidth= -b.width;this.frameHeight=b.height;this.sphereMap=this.defaultMaterial=this.scene=null;this.isFailed=this.isLoaded=false;this.abortUnfinishedLoadingFn=null;this.needRepaint=this.needUpdate=false;this.initRotZ=this.initRotY=this.initRotX=0;this.zoomFactor=1;this.panning=[0,0];this.rotMatrix=new JSC3D.Matrix3x4;this.transformMatrix=new JSC3D.Matrix3x4;this.sceneUrl="";this.modelColor=13280792;this.bkgColor1=16777215;this.bkgColor2=3684416;this.bkgImageUrl="";this.bkgImage=null;this.renderMode="flat"; -this.definition="standard";this.isMipMappingOn=false;this.creaseAngle=-180;this.sphereMapUrl="";this.showProgressBar=true;this.buttonStates={};this.keyStates={};this.mouseY=this.mouseX=0;this.isTouchHeld=false;this.baseZoomFactor=1;this.afterupdate=this.beforeupdate=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=this.onloadingerror=this.onloadingaborted=this.onloadingprogress=this.onloadingcomplete=this.onloadingstarted=null;this.mouseUsage="default";this.isDefaultInputHandlerEnabled= -true;this.webglBackend=this.messagePanel=this.progressRectangle=this.progressFrame=null;var e=this;if(JSC3D.PlatformInfo.isTouchDevice)if(JSC3D.Hammer)JSC3D.Hammer(this.canvas).on("touch release hold drag pinch",function(d){e.gestureHandler(d)});else{this.canvas.addEventListener("touchstart",function(d){e.touchStartHandler(d)},false);this.canvas.addEventListener("touchend",function(d){e.touchEndHandler(d)},false);this.canvas.addEventListener("touchmove",function(d){e.touchMoveHandler(d)},false)}else{this.canvas.addEventListener("mousedown", -function(d){e.mouseDownHandler(d)},false);this.canvas.addEventListener("mouseup",function(d){e.mouseUpHandler(d)},false);this.canvas.addEventListener("mousemove",function(d){e.mouseMoveHandler(d)},false);this.canvas.addEventListener(JSC3D.PlatformInfo.browser=="firefox"?"DOMMouseScroll":"mousewheel",function(d){e.mouseWheelHandler(d)},false);document.addEventListener("keydown",function(d){e.keyDownHandler(d)},false);document.addEventListener("keyup",function(d){e.keyUpHandler(d)},false)}};a=JSC3D.Viewer.prototype; -a.setParameter=function(b,c){this.params[b]=c}; -a.init=function(){this.sceneUrl=this.params.SceneUrl;this.initRotX=parseFloat(this.params.InitRotationX);this.initRotY=parseFloat(this.params.InitRotationY);this.initRotZ=parseFloat(this.params.InitRotationZ);this.modelColor=parseInt("0x"+this.params.ModelColor.substring(1));this.bkgColor1=parseInt("0x"+this.params.BackgroundColor1.substring(1));this.bkgColor2=parseInt("0x"+this.params.BackgroundColor2.substring(1));this.bkgImageUrl=this.params.BackgroundImageUrl;this.renderMode=this.params.RenderMode.toLowerCase(); -this.definition=this.params.Definition.toLowerCase();this.creaseAngle=parseFloat(this.params.CreaseAngle);this.isMipMappingOn=this.params.MipMapping.toLowerCase()=="on";this.sphereMapUrl=this.params.SphereMapUrl;this.showProgressBar=this.params.ProgressBar.toLowerCase()=="on";this.useWebGL=this.params.Renderer.toLowerCase()=="webgl";this.releaseLocalBuffers=this.params.LocalBuffers.toLowerCase()=="release";if(this.useWebGL&&JSC3D.PlatformInfo.supportWebGL&&JSC3D.WebGLRenderBackend)try{this.webglBackend= -new JSC3D.WebGLRenderBackend(this.canvas,this.releaseLocalBuffers)}catch(b){}if(!this.webglBackend){this.useWebGL&&JSC3D.console&&JSC3D.console.logWarning("WebGL is not available. Software rendering is enabled instead.");try{this.ctx2d=this.canvas.getContext("2d");this.canvasData=this.ctx2d.getImageData(0,0,this.canvas.width,this.canvas.height)}catch(c){this.canvasData=this.ctx2d=null}}if(this.canvas.width<=2||this.canvas.height<=2)this.definition="standard";switch(this.definition){case "low":this.frameWidth= -~~((this.canvas.width+1)/2);this.frameHeight=~~((this.canvas.height+1)/2);break;case "high":this.frameWidth=this.canvas.width*2;this.frameHeight=this.canvas.height*2;break;case "standard":default:this.frameWidth=this.canvas.width;this.frameHeight=this.canvas.height;break}this.zoomFactor=1;this.panning=[0,0];this.rotMatrix.identity();this.transformMatrix.identity();this.needRepaint=this.needUpdate=this.isFailed=this.isLoaded=false;this.scene=null;this.defaultMaterial=new JSC3D.Material;this.defaultMaterial.ambientColor= -0;this.defaultMaterial.diffuseColor=this.modelColor;this.defaultMaterial.transparency=0;this.defaultMaterial.simulateSpecular=true;if(!this.webglBackend){this.colorBuffer=new Array(this.frameWidth*this.frameHeight);this.zBuffer=new Array(this.frameWidth*this.frameHeight);this.selectionBuffer=new Array(this.frameWidth*this.frameHeight);this.bkgColorBuffer=new Array(this.frameWidth*this.frameHeight)}this.generateBackground();this.drawBackground();var e=this;(function d(){e.doUpdate();setTimeout(d,30)})(); -this.setBackgroudImageFromUrl(this.bkgImageUrl);this.loadScene();this.setSphereMapFromUrl(this.sphereMapUrl)};a.update=function(b){if(!this.isFailed)if(b)this.needRepaint=true;else this.needUpdate=true};a.rotate=function(b,c,e){this.rotMatrix.rotateAboutXAxis(b);this.rotMatrix.rotateAboutYAxis(c);this.rotMatrix.rotateAboutZAxis(e)};a.setRenderMode=function(b){this.renderMode=this.params.RenderMode=b}; +JSC3D.Viewer=function(b,c){this.params=c?{SceneUrl:c.SceneUrl||"",InitRotationX:c.InitRotationX||0,InitRotationY:c.InitRotationY||0,InitRotationZ:c.InitRotationZ||0,ModelColor:c.ModelColor||"#caa618",BackgroundColor1:c.BackgroundColor1||"#ffffff",BackgroundColor2:c.BackgroundColor2||"#383840",BackgroundImageUrl:c.BackgroundImageUrl||"",Background:c.Background||"on",RenderMode:c.RenderMode||"flat",Definition:c.Definition||"standard",FaceCulling:c.FaceCulling||"on",MipMapping:c.MipMapping||"off",CreaseAngle:c.CreaseAngle|| +-180,SphereMapUrl:c.SphereMapUrl||"",ProgressBar:c.ProgressBar||"on",Renderer:c.Renderer||"",LocalBuffers:c.LocalBuffers||"retain"}:{SceneUrl:"",InitRotationX:0,InitRotationY:0,InitRotationZ:0,ModelColor:"#caa618",BackgroundColor1:"#ffffff",BackgroundColor2:"#383840",BackgroundImageUrl:"",Background:"on",RenderMode:"flat",Definition:"standard",FaceCulling:"on",MipMapping:"off",CreaseAngle:-180,SphereMapUrl:"",ProgressBar:"on",Renderer:"",LocalBuffers:"retain"};this.canvas=b;this.selectionBuffer=this.zBuffer= +this.colorBuffer=this.bkgColorBuffer=this.canvasData=this.ctx2d=null;this.frameWidth=b.width;this.frameHeight=b.height;this.sphereMap=this.defaultMaterial=this.scene=null;this.isFailed=this.isLoaded=false;this.abortUnfinishedLoadingFn=null;this.needRepaint=this.needUpdate=false;this.initRotZ=this.initRotY=this.initRotX=0;this.zoomFactor=1;this.panning=[0,0];this.rotMatrix=new JSC3D.Matrix3x4;this.transformMatrix=new JSC3D.Matrix3x4;this.sceneUrl="";this.modelColor=13280792;this.bkgColor1=16777215; +this.bkgColor2=3684416;this.bkgImageUrl="";this.bkgImage=null;this.isBackgroundOn=true;this.renderMode="flat";this.definition="standard";this.isMipMappingOn=this.isCullingDisabled=false;this.creaseAngle=-180;this.sphereMapUrl="";this.showProgressBar=true;this.buttonStates={};this.keyStates={};this.mouseY=this.mouseX=0;this.mouseDownY=this.mouseDownX=-1;this.isTouchHeld=false;this.baseZoomFactor=1;this.suppressDraggingRotation=false;this.afterupdate=this.beforeupdate=this.onmouseclick=this.onmousewheel= +this.onmousemove=this.onmouseup=this.onmousedown=this.onloadingerror=this.onloadingaborted=this.onloadingprogress=this.onloadingcomplete=this.onloadingstarted=null;this.mouseUsage="default";this.isDefaultInputHandlerEnabled=true;this.webglBackend=this.messagePanel=this.progressRectangle=this.progressFrame=null;var f=this;if(JSC3D.PlatformInfo.isTouchDevice)if(JSC3D.Hammer)JSC3D.Hammer(this.canvas).on("touch release hold drag pinch transformend",function(d){f.gestureHandler(d)});else{this.canvas.addEventListener("touchstart", +function(d){f.touchStartHandler(d)},false);this.canvas.addEventListener("touchend",function(d){f.touchEndHandler(d)},false);this.canvas.addEventListener("touchmove",function(d){f.touchMoveHandler(d)},false)}else{this.canvas.addEventListener("mousedown",function(d){f.mouseDownHandler(d)},false);this.canvas.addEventListener("mouseup",function(d){f.mouseUpHandler(d)},false);this.canvas.addEventListener("mousemove",function(d){f.mouseMoveHandler(d)},false);this.canvas.addEventListener(JSC3D.PlatformInfo.browser== +"firefox"?"DOMMouseScroll":"mousewheel",function(d){f.mouseWheelHandler(d)},false);document.addEventListener("keydown",function(d){f.keyDownHandler(d)},false);document.addEventListener("keyup",function(d){f.keyUpHandler(d)},false)}};a=JSC3D.Viewer.prototype;a.setParameter=function(b,c){this.params[b]=c}; +a.init=function(){this.sceneUrl=this.params.SceneUrl;this.initRotX=parseFloat(this.params.InitRotationX);this.initRotY=parseFloat(this.params.InitRotationY);this.initRotZ=parseFloat(this.params.InitRotationZ);this.modelColor=parseInt("0x"+this.params.ModelColor.substring(1));this.bkgColor1=parseInt("0x"+this.params.BackgroundColor1.substring(1));this.bkgColor2=parseInt("0x"+this.params.BackgroundColor2.substring(1));this.bkgImageUrl=this.params.BackgroundImageUrl;this.isBackgroundOn=this.params.Background.toLowerCase()== +"on";this.renderMode=this.params.RenderMode.toLowerCase();this.definition=this.params.Definition.toLowerCase();this.isCullingDisabled=this.params.FaceCulling.toLowerCase()=="off";this.creaseAngle=parseFloat(this.params.CreaseAngle);this.isMipMappingOn=this.params.MipMapping.toLowerCase()=="on";this.sphereMapUrl=this.params.SphereMapUrl;this.showProgressBar=this.params.ProgressBar.toLowerCase()=="on";this.useWebGL=this.params.Renderer.toLowerCase()=="webgl";this.releaseLocalBuffers=this.params.LocalBuffers.toLowerCase()== +"release";if(this.useWebGL&&JSC3D.PlatformInfo.supportWebGL&&JSC3D.WebGLRenderBackend)try{this.webglBackend=new JSC3D.WebGLRenderBackend(this.canvas,this.releaseLocalBuffers)}catch(b){}if(!this.webglBackend){this.useWebGL&&JSC3D.console&&JSC3D.console.logWarning("WebGL is not available. Software rendering is enabled instead.");try{this.ctx2d=this.canvas.getContext("2d");this.canvasData=this.ctx2d.getImageData(0,0,this.canvas.width,this.canvas.height)}catch(c){this.canvasData=this.ctx2d=null}}if(this.canvas.width<= +2||this.canvas.height<=2)this.definition="standard";switch(this.definition){case "low":this.frameWidth=~~((this.canvas.width+1)/2);this.frameHeight=~~((this.canvas.height+1)/2);break;case "high":this.frameWidth=this.canvas.width*2;this.frameHeight=this.canvas.height*2;break;case "standard":default:this.frameWidth=this.canvas.width;this.frameHeight=this.canvas.height;break}this.zoomFactor=1;this.panning=[0,0];this.rotMatrix.identity();this.transformMatrix.identity();this.needRepaint=this.needUpdate= +this.isFailed=this.isLoaded=false;this.scene=null;this.defaultMaterial=new JSC3D.Material("default",undefined,this.modelColor,0,true);if(!this.webglBackend){this.colorBuffer=new Array(this.frameWidth*this.frameHeight);this.zBuffer=new Array(this.frameWidth*this.frameHeight);this.selectionBuffer=new Array(this.frameWidth*this.frameHeight);this.bkgColorBuffer=new Array(this.frameWidth*this.frameHeight)}this.generateBackground();this.drawBackground();var f=this;(function d(){f.doUpdate();setTimeout(d, +30)})();this.setBackgroudImageFromUrl(this.bkgImageUrl);this.loadScene();this.setSphereMapFromUrl(this.sphereMapUrl)};a.update=function(b){if(!this.isFailed)if(b)this.needRepaint=true;else this.needUpdate=true};a.rotate=function(b,c,f){this.rotMatrix.rotateAboutXAxis(b);this.rotMatrix.rotateAboutYAxis(c);this.rotMatrix.rotateAboutZAxis(f)};a.setRenderMode=function(b){this.renderMode=this.params.RenderMode=b}; a.setDefinition=function(b){if(this.canvas.width<=2||this.canvas.height<=2)b="standard";if(b!=this.definition){this.definition=this.params.Definition=b;b=this.frameWidth;switch(this.definition){case "low":this.frameWidth=~~((this.canvas.width+1)/2);this.frameHeight=~~((this.canvas.height+1)/2);break;case "high":this.frameWidth=this.canvas.width*2;this.frameHeight=this.canvas.height*2;break;case "standard":default:this.frameWidth=this.canvas.width;this.frameHeight=this.canvas.height;break}b=this.frameWidth/ b;this.zoomFactor*=b;this.panning[0]*=b;this.panning[1]*=b;if(!this.webglBackend){b=this.frameWidth*this.frameHeight;if(this.colorBuffer.length=0&&b=0&&d0)e.depth=this.zBuffer[g*this.frameWidth+f]}}if(c> -0){b=this.scene.getChildren();for(d=0;d0){var c=b.touches[0].clientX,e=b.touches[0].clientY;if(this.onmousedown){var d=this.pick(c,e);this.onmousedown(d.canvasX,d.canvasY,0,d.depth,d.mesh)}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled){this.buttonStates[0]=true;this.mouseX=c;this.mouseY=e}}}; -a.touchEndHandler=function(b){if(this.isLoaded){if(this.onmouseup){var c=this.pick(this.mouseX,this.mouseY);this.onmouseup(c.canvasX,c.canvasY,0,c.depth,c.mesh)}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled)this.buttonStates[0]=false}}; -a.touchMoveHandler=function(b){if(this.isLoaded)if(b.touches.length>0){var c=b.touches[0].clientX,e=b.touches[0].clientY;if(this.onmousemove){var d=this.pick(c,e);this.onmousemove(d.canvasX,d.canvasY,0,d.depth,d.mesh)}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled){if(this.mouseUsage=="zoom")this.zoomFactor*=this.mouseY<=e?1.04:0.96;else if(this.mouseUsage=="pan"){b=this.definition=="low"?0.5:this.definition=="high"?2:1;this.panning[0]+=b*(c-this.mouseX);this.panning[1]+= -b*(e-this.mouseY)}else if(this.mouseUsage=="default"||this.mouseUsage=="rotate"){b=(c-this.mouseX)*360/this.canvas.height;this.rotMatrix.rotateAboutXAxis((e-this.mouseY)*360/this.canvas.width);this.rotMatrix.rotateAboutYAxis(b)}this.mouseX=c;this.mouseY=e;this.update()}}};a.keyDownHandler=function(b){if(this.isDefaultInputHandlerEnabled)this.keyStates[b.keyCode]=true};a.keyUpHandler=function(b){if(this.isDefaultInputHandlerEnabled)this.keyStates[b.keyCode]=false}; -a.gestureHandler=function(b){if(this.isLoaded){var c=b.gesture.center.pageX-document.body.scrollLeft,e=b.gesture.center.pageY-document.body.scrollTop,d=this.pick(c,e);switch(b.type){case "touch":this.onmousedown&&this.onmousedown(d.canvasX,d.canvasY,0,d.depth,d.mesh);this.baseZoomFactor=this.zoomFactor;this.mouseX=c;this.mouseY=e;break;case "release":this.onmouseup&&this.onmouseup(d.canvasX,d.canvasY,0,d.depth,d.mesh);this.isTouchHeld=false;break;case "hold":this.isTouchHeld=true;break;case "drag":this.onmousemove&& -this.onmousemove(d.canvasX,d.canvasY,0,d.depth,d.mesh);if(!this.isDefaultInputHandlerEnabled)break;if(this.isTouchHeld){d=this.definition=="low"?0.5:this.definition=="high"?2:1;this.panning[0]+=d*(c-this.mouseX);this.panning[1]+=d*(e-this.mouseY)}else{d=(c-this.mouseX)*360/this.canvas.height;this.rotMatrix.rotateAboutXAxis((e-this.mouseY)*360/this.canvas.width);this.rotMatrix.rotateAboutYAxis(d)}this.mouseX=c;this.mouseY=e;this.update();break;case "pinch":this.onmousewheel&&this.onmousewheel(d.canvasX, -d.canvasY,0,d.depth,d.mesh);if(!this.isDefaultInputHandlerEnabled)break;this.zoomFactor=this.baseZoomFactor*b.gesture.scale;this.update();break;default:break}b.gesture.preventDefault();b.gesture.stopPropagation()}}; -a.loadScene=function(){this.abortUnfinishedLoadingFn&&this.abortUnfinishedLoadingFn();this.scene=null;this.isLoaded=false;this.update();if(this.sceneUrl=="")return false;var b=this.sceneUrl.lastIndexOf("/");if(b==-1)b=this.sceneUrl.lastIndexOf("\\");b=this.sceneUrl.substring(b+1);var c=b.lastIndexOf(".");if(c==-1){JSC3D.console&&JSC3D.console.logError("Cannot get file format for the lack of file extension.");return false}b=b.substring(c+1);var e=JSC3D.LoaderSelector.getLoader(b);if(!e){JSC3D.console&& -JSC3D.console.logError('Unknown file format: "'+b+'".');return false}var d=this;e.onload=function(f){d.abortUnfinishedLoadingFn=null;d.setupScene(f);d.onloadingcomplete&&typeof d.onloadingcomplete=="function"&&d.onloadingcomplete()};e.onerror=function(f){d.scene=null;d.isLoaded=false;d.isFailed=true;d.abortUnfinishedLoadingFn=null;d.update();d.reportError(f);d.onloadingerror&&typeof d.onloadingerror=="function"&&d.onloadingerror(f)};e.onprogress=function(f,g){d.showProgressBar&&d.reportProgress(f, -g);d.onloadingprogress&&typeof d.onloadingprogress=="function"&&d.onloadingprogress(f,g)};e.onresource=function(f){f instanceof JSC3D.Texture&&d.isMipMappingOn&&!f.hasMipmap()&&f.generateMipmaps();d.update()};this.abortUnfinishedLoadingFn=function(){e.abort();d.abortUnfinishedLoadingFn=null;d.hideProgress();d.onloadingaborted&&typeof d.onloadingaborted=="function"&&d.onloadingaborted()};e.loadFromUrl(this.sceneUrl);this.onloadingstarted&&typeof this.onloadingstarted=="function"&&this.onloadingstarted(); -return true}; -a.setupScene=function(b){if(this.creaseAngle>=0){var c=this.creaseAngle;b.forEachChild(function(g){g.creaseAngle=c})}b.init();if(!b.isEmpty()){var e=b.aabb.lengthOfDiagonal(),d=this.frameWidth,f=this.frameHeight;this.zoomFactor=e==0?1:(d=0&&b=0&&d0)f.depth=this.zBuffer[g*this.frameWidth+e]}}if(c> +0){b=this.scene.getChildren();for(d=0;d0){var c=b.touches[0].clientX,f=b.touches[0].clientY;if(this.onmousedown){var d=this.pick(c,f);this.onmousedown(d.canvasX,d.canvasY,0,d.depth,d.mesh)}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled){this.buttonStates[0]=true;this.mouseX=c;this.mouseY=f;this.mouseDownX=c;this.mouseDownY=f}}}; +a.touchEndHandler=function(b){if(this.isLoaded){var c;if(this.onmouseup||this.onmouseclick)c=this.pick(this.mouseX,this.mouseY);this.onmouseup&&this.onmouseup(c.canvasX,c.canvasY,0,c.depth,c.mesh);if(this.onmouseclick&&this.mouseDownX==b.touches[0].clientX&&this.mouseDownY==b.touches[0].clientY){this.onmouseclick(c.canvasX,c.canvasY,0,c.depth,c.mesh);this.mouseDownY=this.mouseDownX=-1}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled)this.buttonStates[0]=false}}; +a.touchMoveHandler=function(b){if(this.isLoaded)if(b.touches.length>0){var c=b.touches[0].clientX,f=b.touches[0].clientY;if(this.onmousemove){var d=this.pick(c,f);this.onmousemove(d.canvasX,d.canvasY,0,d.depth,d.mesh)}b.preventDefault();b.stopPropagation();if(this.isDefaultInputHandlerEnabled){if(this.mouseUsage=="zoom")this.zoomFactor*=this.mouseY<=f?1.04:0.96;else if(this.mouseUsage=="pan"){b=this.definition=="low"?0.5:this.definition=="high"?2:1;this.panning[0]+=b*(c-this.mouseX);this.panning[1]+= +b*(f-this.mouseY)}else if(this.mouseUsage=="default"||this.mouseUsage=="rotate"){b=(c-this.mouseX)*360/this.canvas.height;this.rotMatrix.rotateAboutXAxis((f-this.mouseY)*360/this.canvas.width);this.rotMatrix.rotateAboutYAxis(b)}this.mouseX=c;this.mouseY=f;this.mouseDownY=this.mouseDownX=-1;this.update()}}};a.keyDownHandler=function(b){if(this.isDefaultInputHandlerEnabled)this.keyStates[b.keyCode]=true};a.keyUpHandler=function(b){if(this.isDefaultInputHandlerEnabled)this.keyStates[b.keyCode]=false}; +a.gestureHandler=function(b){if(this.isLoaded){var c=b.gesture.center.pageX-document.body.scrollLeft,f=b.gesture.center.pageY-document.body.scrollTop,d=this.pick(c,f);switch(b.type){case "touch":this.onmousedown&&this.onmousedown(d.canvasX,d.canvasY,0,d.depth,d.mesh);this.baseZoomFactor=this.zoomFactor;this.mouseX=c;this.mouseY=f;this.mouseDownX=c;this.mouseDownY=f;break;case "release":this.onmouseup&&this.onmouseup(d.canvasX,d.canvasY,0,d.depth,d.mesh);this.onmouseclick&&this.mouseDownX==c&&this.mouseDownY== +f&&this.onmouseclick(d.canvasX,d.canvasY,0,d.depth,d.mesh);this.mouseDownY=this.mouseDownX=-1;this.isTouchHeld=false;break;case "hold":this.isTouchHeld=true;this.mouseDownY=this.mouseDownX=-1;break;case "drag":this.onmousemove&&this.onmousemove(d.canvasX,d.canvasY,0,d.depth,d.mesh);if(!this.isDefaultInputHandlerEnabled)break;if(this.isTouchHeld){d=this.definition=="low"?0.5:this.definition=="high"?2:1;this.panning[0]+=d*(c-this.mouseX);this.panning[1]+=d*(f-this.mouseY)}else if(!this.suppressDraggingRotation){d= +(c-this.mouseX)*360/this.canvas.height;this.rotMatrix.rotateAboutXAxis((f-this.mouseY)*360/this.canvas.width);this.rotMatrix.rotateAboutYAxis(d)}this.mouseX=c;this.mouseY=f;this.mouseDownY=this.mouseDownX=-1;this.update();break;case "pinch":this.onmousewheel&&this.onmousewheel(d.canvasX,d.canvasY,0,d.depth,d.mesh);if(!this.isDefaultInputHandlerEnabled)break;this.suppressDraggingRotation=true;this.zoomFactor=this.baseZoomFactor*b.gesture.scale;this.mouseDownY=this.mouseDownX=-1;this.update();break; +case "transformend":var e=this;setTimeout(function(){e.suppressDraggingRotation=false},250);break;default:break}b.gesture.preventDefault();b.gesture.stopPropagation()}}; +a.loadScene=function(){this.abortUnfinishedLoadingFn&&this.abortUnfinishedLoadingFn();this.scene=null;this.isLoaded=false;this.update();if(this.sceneUrl=="")return false;var b=this.sceneUrl.indexOf("?");b=b==-1?this.sceneUrl:this.sceneUrl.substring(0,b);var c=b.lastIndexOf("/");if(c==-1)c=b.lastIndexOf("\\");b=b.substring(c+1);c=b.lastIndexOf(".");if(c==-1){JSC3D.console&&JSC3D.console.logError("Cannot get file format for the lack of file extension.");return false}b=b.substring(c+1);var f=JSC3D.LoaderSelector.getLoader(b); +if(!f){JSC3D.console&&JSC3D.console.logError('Unsupported file format: "'+b+'".');return false}var d=this;f.onload=function(e){d.abortUnfinishedLoadingFn=null;d.setupScene(e);d.onloadingcomplete&&typeof d.onloadingcomplete=="function"&&d.onloadingcomplete()};f.onerror=function(e){d.scene=null;d.isLoaded=false;d.isFailed=true;d.abortUnfinishedLoadingFn=null;d.update();d.reportError(e);d.onloadingerror&&typeof d.onloadingerror=="function"&&d.onloadingerror(e)};f.onprogress=function(e,g){d.showProgressBar&& +d.reportProgress(e,g);d.onloadingprogress&&typeof d.onloadingprogress=="function"&&d.onloadingprogress(e,g)};f.onresource=function(e){e instanceof JSC3D.Texture&&d.isMipMappingOn&&!e.hasMipmap()&&e.generateMipmaps();d.update()};this.abortUnfinishedLoadingFn=function(){f.abort();d.abortUnfinishedLoadingFn=null;d.hideProgress();d.onloadingaborted&&typeof d.onloadingaborted=="function"&&d.onloadingaborted()};f.loadFromUrl(this.sceneUrl);this.onloadingstarted&&typeof this.onloadingstarted=="function"&& +this.onloadingstarted();return true}; +a.setupScene=function(b){if(this.creaseAngle>=0){var c=this.creaseAngle;b.forEachChild(function(g){g.creaseAngle=c})}b.init();if(!b.isEmpty()){var f=b.aabb.lengthOfDiagonal(),d=this.frameWidth,e=this.frameHeight;this.zoomFactor=f==0?1:(d>16))+","+(255-((this.bkgColor1&65280)>>8))+","+(255-(this.bkgColor1&255))+")",f=e.left+40,g=e.top+e.height*0.38;e=e.width-(f-e.left)*2;this.progressFrame=document.createElement("div");this.progressFrame.style.position="absolute";this.progressFrame.style.left=f+"px";this.progressFrame.style.top=g+"px";this.progressFrame.style.width=e+"px";this.progressFrame.style.height= -"20px";this.progressFrame.style.border="1px solid "+d;this.progressFrame.style.pointerEvents="none";document.body.appendChild(this.progressFrame);this.progressRectangle=document.createElement("div");this.progressRectangle.style.position="absolute";this.progressRectangle.style.left=f+3+"px";this.progressRectangle.style.top=g+3+"px";this.progressRectangle.style.width="0px";this.progressRectangle.style.height="16px";this.progressRectangle.style.background=d;this.progressRectangle.style.pointerEvents= -"none";document.body.appendChild(this.progressRectangle);if(!this.messagePanel){this.messagePanel=document.createElement("div");this.messagePanel.style.position="absolute";this.messagePanel.style.left=f+"px";this.messagePanel.style.top=g-16+"px";this.messagePanel.style.width=e+"px";this.messagePanel.style.height="14px";this.messagePanel.style.font="bold 14px Courier New";this.messagePanel.style.color=d;this.messagePanel.style.pointerEvents="none";document.body.appendChild(this.messagePanel)}}if(this.progressFrame.style.display!= +a.reportProgress=function(b,c){if(!this.progressFrame){var f=this.canvas.getBoundingClientRect(),d="rgb("+(255-((this.bkgColor1&16711680)>>16))+","+(255-((this.bkgColor1&65280)>>8))+","+(255-(this.bkgColor1&255))+")",e=window.pageXOffset+f.left+40,g=window.pageYOffset+f.top+f.height*0.38;f=f.width-(e-f.left)*2;this.progressFrame=document.createElement("div");this.progressFrame.style.position="absolute";this.progressFrame.style.left=e+"px";this.progressFrame.style.top=g+"px";this.progressFrame.style.width= +f+"px";this.progressFrame.style.height="20px";this.progressFrame.style.border="1px solid "+d;this.progressFrame.style.pointerEvents="none";document.body.appendChild(this.progressFrame);this.progressRectangle=document.createElement("div");this.progressRectangle.style.position="absolute";this.progressRectangle.style.left=e+3+"px";this.progressRectangle.style.top=g+3+"px";this.progressRectangle.style.width="0px";this.progressRectangle.style.height="16px";this.progressRectangle.style.background=d;this.progressRectangle.style.pointerEvents= +"none";document.body.appendChild(this.progressRectangle);if(!this.messagePanel){this.messagePanel=document.createElement("div");this.messagePanel.style.position="absolute";this.messagePanel.style.left=e+"px";this.messagePanel.style.top=g-16+"px";this.messagePanel.style.width=f+"px";this.messagePanel.style.height="14px";this.messagePanel.style.font="bold 14px Courier New";this.messagePanel.style.color=d;this.messagePanel.style.pointerEvents="none";document.body.appendChild(this.messagePanel)}}if(this.progressFrame.style.display!= "block"){this.progressFrame.style.display="block";this.progressRectangle.style.display="block"}if(b&&this.messagePanel.style.display!="block")this.messagePanel.style.display="block";this.progressRectangle.style.width=(parseFloat(this.progressFrame.style.width)-4)*c+"px";this.messagePanel.innerHTML=b};a.hideProgress=function(){if(this.progressFrame){this.messagePanel.style.display="none";this.progressFrame.style.display="none";this.progressRectangle.style.display="none"}}; -a.reportError=function(b){if(!this.messagePanel){var c=this.canvas.getBoundingClientRect(),e="rgb("+(255-((this.bkgColor1&16711680)>>16))+","+(255-((this.bkgColor1&65280)>>8))+","+(255-(this.bkgColor1&255))+")",d=c.left+40,f=c.top+c.height*0.38;c=c.width-(d-c.left)*2;this.messagePanel=document.createElement("div");this.messagePanel.style.position="absolute";this.messagePanel.style.left=d+"px";this.messagePanel.style.top=f-16+"px";this.messagePanel.style.width=c+"px";this.messagePanel.style.height= -"14px";this.messagePanel.style.font="bold 14px Courier New";this.messagePanel.style.color=e;this.messagePanel.style.pointerEvents="none";document.body.appendChild(this.messagePanel)}if(this.progressFrame.style.display!="none"){this.progressFrame.style.display="none";this.progressRectangle.style.display="none"}if(b&&this.messagePanel.style.display!="block")this.messagePanel.style.display="block";this.messagePanel.innerHTML=b}; +a.reportError=function(b){if(!this.messagePanel){var c=this.canvas.getBoundingClientRect(),f="rgb("+(255-((this.bkgColor1&16711680)>>16))+","+(255-((this.bkgColor1&65280)>>8))+","+(255-(this.bkgColor1&255))+")",d=window.pageXOffset+c.left+40,e=window.pageYOffset+c.top+c.height*0.38;c=c.width-(d-c.left)*2;this.messagePanel=document.createElement("div");this.messagePanel.style.position="absolute";this.messagePanel.style.left=d+"px";this.messagePanel.style.top=e-16+"px";this.messagePanel.style.width= +c+"px";this.messagePanel.style.height="14px";this.messagePanel.style.font="bold 14px Courier New";this.messagePanel.style.color=f;this.messagePanel.style.pointerEvents="none";document.body.appendChild(this.messagePanel)}if(this.progressFrame.style.display!="none"){this.progressFrame.style.display="none";this.progressRectangle.style.display="none"}if(b&&this.messagePanel.style.display!="block")this.messagePanel.style.display="block";this.messagePanel.innerHTML=b}; a.hideError=function(){if(this.messagePanel)this.messagePanel.style.display="none"};a.generateBackground=function(){if(this.webglBackend)this.bkgImage?this.webglBackend.setBackgroundImage(this.bkgImage):this.webglBackend.setBackgroundColors(this.bkgColor1,this.bkgColor2);else this.bkgImage?this.fillBackgroundWithImage():this.fillGradientBackground()}; -a.fillGradientBackground=function(){for(var b=this.frameWidth,c=this.frameHeight,e=this.bkgColorBuffer,d=(this.bkgColor1&16711680)>>16,f=(this.bkgColor1&65280)>>8,g=this.bkgColor1&255,h=(this.bkgColor2&16711680)>>16,i=(this.bkgColor2&65280)>>8,l=this.bkgColor2&255,o=0,u=0;u>1,i=f-h,l=0,o=0;for(g=0;g>16;b[o+1]=(f&65280)>>8;b[o+2]=f&255;b[o+3]=255;l+=u&1;o+=4}l+=g&1?i:-h}break;case "high":for(g=o=l=0;g>18;b[o+1]=(h&65280)+(i&65280)+(j&65280)+(B&65280)>>10;b[o+2]=(h&255)+(i&255)+(j&255)+(B&255)>>2;b[o+3]=255;l+=2;o+=4}l+=f}break;case "standard":default:for(o=l=0;l>16;b[o+1]=(f&65280)>>8;b[o+2]=f&255;b[o+3]=255}break}}}; -a.render=function(){if(!this.scene.isEmpty()){var b=this.scene.aabb;if(this.webglBackend){var c=this.frameWidth,e=this.frameHeight,d=b.lengthOfDiagonal(),f=c/e;this.transformMatrix.identity();this.transformMatrix.translate(-(b.minX+b.maxX)/2,-(b.minY+b.maxY)/2,-(b.minZ+b.maxZ)/2);this.transformMatrix.multiply(this.rotMatrix);c0||(f.hasTexture()?f.texture.hasTransparency:false)}}}c.sort(function(h,i){if(!h.sortKey.isTransparnt&&i.sortKey.isTransparnt)return-1;if(h.sortKey.isTransparnt&&!i.sortKey.isTransparnt)return 1;if(h.sortKey.isTransparnt)return h.sortKey.depth- +a.fillGradientBackground=function(){for(var b=this.frameWidth,c=this.frameHeight,f=this.bkgColorBuffer,d=(this.bkgColor1&16711680)>>16,e=(this.bkgColor1&65280)>>8,g=this.bkgColor1&255,h=(this.bkgColor2&16711680)>>16,i=(this.bkgColor2&65280)>>8,m=this.bkgColor2&255,n=this.isBackgroundOn?4278190080:0,t=0,j=0;j>1,i=e-h,m=0,n=0;for(g=0;g>16;b[n+1]=(e&65280)>>8;b[n+2]=e&255;b[n+3]=e>>>24;m+=t&1;n+=4}m+=g&1?i:-h}break;case "high":for(g=n=m=0;g>18;b[n+1]=(h&65280)+(i&65280)+(j&65280)+(y&65280)>>10;b[n+2]=(h&255)+(i&255)+(j&255)+(y&255)>>2;b[n+3]=h>>>24;m+=2;n+=4}m+=e}break;case "standard":default:for(n=m=0;m>16;b[n+1]=(e&65280)>>8;b[n+2]=e&255;b[n+3]=e>>>24}break}}}; +a.render=function(){if(!this.scene.isEmpty()){var b=this.scene.aabb;if(this.webglBackend){var c=this.frameWidth,f=this.frameHeight,d=b.lengthOfDiagonal();this.transformMatrix.identity();this.transformMatrix.translate(-0.5*(b.minX+b.maxX),-0.5*(b.minY+b.maxY),-0.5*(b.minZ+b.maxZ));this.transformMatrix.multiply(this.rotMatrix);this.transformMatrix.scale(2*this.zoomFactor/c,2*this.zoomFactor/f,-2/d);this.transformMatrix.translate(2*this.panning[0]/c,-2*this.panning[1]/f,0)}else{this.transformMatrix.identity(); +this.transformMatrix.translate(-0.5*(b.minX+b.maxX),-0.5*(b.minY+b.maxY),-0.5*(b.minZ+b.maxZ));this.transformMatrix.multiply(this.rotMatrix);this.transformMatrix.scale(this.zoomFactor,-this.zoomFactor,this.zoomFactor);this.transformMatrix.translate(0.5*this.frameWidth+this.panning[0],0.5*this.frameHeight+this.panning[1],0)}b=this.sortScene(this.transformMatrix);if(this.webglBackend)this.webglBackend.render(this.scene.getChildren(),this.transformMatrix,this.rotMatrix,this.renderMode,this.defaultMaterial, +this.sphereMap,this.isCullingDisabled);else for(c=0;c0||(e.hasTexture()?e.texture.hasTransparency:false)}}}c.sort(function(h,i){if(!h.sortKey.isTransparnt&&i.sortKey.isTransparnt)return-1;if(h.sortKey.isTransparnt&&!i.sortKey.isTransparnt)return 1;if(h.sortKey.isTransparnt)return h.sortKey.depth- i.sortKey.depth;return i.sortKey.depth-h.sortKey.depth});return c}; -a.renderPoint=function(b){var c=this.frameWidth,e=c-1,d=this.frameHeight-1,f=b.transformedVertexBuffer,g=this.colorBuffer,h=this.zBuffer,i=this.selectionBuffer,l=f.length/3,o=b.internalId;b=b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor;for(var u=0,j=0;u=0&&B=0&&mh[B]){h[B]=M;g[B]=b;i[B]=o}B++;if(M>h[B]){h[B]=M;g[B]=b;i[B]=o}B+=e;if(M>h[B]){h[B]=M;g[B]=b;i[B]=o}B++;if(M>h[B]){h[B]=M;g[B]=b; -i[B]=o}}}}; -a.renderWireframe=function(b){var c=this.frameWidth,e=c-1,d=this.frameHeight-1,f=b.indexBuffer,g=b.transformedVertexBuffer,h=b.transformedFaceNormalZBuffer,i=this.colorBuffer,l=this.zBuffer,o=this.selectionBuffer,u=b.faceCount,j=b.internalId,B=b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor;if(!h||h.length0?H:-H;if(H<0){do;while(f[M++]!=-1)}else{var x,K;x=f[M++]*3;K=f[M++]*3;H=x;for(var I=false;!I;){var F=~~(g[x]+0.5),p=~~(g[x+1]+0.5),r=g[x+2],w=~~(g[K]+0.5),s=~~(g[K+1]+0.5),v=g[K+2],k=w-F,D=s-p,A=v-r,t,n,T;if(Math.abs(k)>Math.abs(D)){t=k;n=k>0?1:-1;T=k!=0?n*D/k:0;k=k!=0?n*A/k:0}else{t=D;T=D>0?1:-1;n=D!=0?T*k/D:0;k=D!=0?T*A/D:0}F=F;p=p;r=r;if(t<0){F=w;p=s;r=v;t=-t;n=-n;T=-T;k=-k}for(w=0;w=0&&F=0&&pl[s]){l[s]=r;i[s]=B;o[s]=j}}F+= -n;p+=T;r+=k}if(K==H)I=true;else{x=K;K=f[M]!=-1?f[M++]*3:H}}M++}}}; -a.renderSolidFlat=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,l=this.selectionBuffer,o=b.faceCount,u=b.internalId,j=b.material?b.material:this.defaultMaterial,B=j.getPalette(),m=j.transparency==0,M=j.transparency*255,H=255-M;var fixForMacSafari=1*null;if(j.transparency!=1){if(!g||g.length0?p:-p;if(p<0){do;while(d[F++]!=-1)}else{p=B[~~(p*255)];var r,w,s;r=d[F++]*3;w=d[F++]*3;do{s=d[F++]*3;j[0]=~~(f[r]+0.5);x[0]=~~(f[r+1]+0.5);K[0]=f[r+2];j[1]=~~(f[w]+0.5);x[1]=~~(f[w+1]+0.5);K[1]=f[w+2];j[2]=~~(f[s]+0.5);x[2]=~~(f[s+1]+0.5);K[2]=f[s+2];w=x[0]x[1]?0:1;v=x[v]>x[2]?v:2;var k=3-v-w;if(w!=v){var D=j[v],A=K[v],t=x[v]-x[w];t=t!=0?t:1;var n=(j[v]-j[w])/ -t;t=(K[v]-K[w])/t;var T=j[v],y=K[v],E=x[v]-x[k];E=E!=0?E:1;var C=(j[v]-j[k])/E;E=(K[v]-K[k])/E;var q=j[k],la=K[k],z=x[k]-x[w];z=z!=0?z:1;var ra=(j[k]-j[w])/z;z=(K[k]-K[w])/z;var ma=x[v]*c;for(v=x[v];v>x[w];v--){if(v>=0&&vx[k]){G=~~T;sa=y}else{G=~~q;sa=la}if(Q>G){var da;da=Q;Q=G;G=da;da=V;V=sa;sa=da}if(Q<0)Q=0;if(G>=c)G=c-1;sa=Q!=G?(sa-V)/(G-Q):1;da=ma+Q;if(m){Q=Q;for(V=V;Q<=G;Q++,V+=sa){if(V>i[da]){i[da]=V;h[da]=p;l[da]=u}da++}}else{Q=Q;for(V=V;Qi[da]){var ya= -h[da];h[da]=(ya&16711680)*M+(p&16711680)*H>>8&16711680|(ya&65280)*M+(p&65280)*H>>8&65280|(ya&255)*M+(p&255)*H>>8&255;l[da]=u}da++}}}D-=n;A-=t;if(v>x[k]){T-=C;y-=E}else{q-=ra;la-=z}ma-=c}}w=s}while(d[F]!=-1);F++}}}}; -a.renderSolidSmooth=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedVertexNormalZBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,l=this.colorBuffer,o=this.zBuffer,u=this.selectionBuffer,j=b.faceCount,B=b.internalId,m=b.material?b.material:this.defaultMaterial,M=m.getPalette(),H=m.transparency==0,x=m.transparency*255,K=255-x;var fixForMacSafari=1*null;if(m.transparency!=1){if(!g||g.length0?s:-s;if(s<0){do;while(d[w++]!=-1) -}else{var v,k,D,A,t;s=d[w]*3;D=h[w];w++;k=d[w]*3;A=h[w];w++;do{v=d[w];v=v*3;t=h[w];w++;m[0]=~~(f[s]+0.5);I[0]=~~(f[s+1]+0.5);F[0]=f[s+2];m[1]=~~(f[k]+0.5);I[1]=~~(f[k+1]+0.5);F[1]=f[k+2];m[2]=~~(f[v]+0.5);I[2]=~~(f[v+1]+0.5);F[2]=f[v+2];p[0]=g[D];p[1]=g[A];p[2]=g[t];if(b){if(p[0]<0)p[0]=-p[0];if(p[1]<0)p[1]=-p[1];if(p[2]<0)p[2]=-p[2]}k=I[0]I[1]?0:1;n=I[n]>I[2]?n:2;A=3-n-k;if(k!=n){var T=m[n],y=F[n],E=p[n]*255,C=I[n]-I[k];C=C!=0?C:1;var q=(m[n]-m[k])/C,la=(F[n]- -F[k])/C;C=(p[n]-p[k])*255/C;var z=m[n],ra=F[n],ma=p[n]*255,Q=I[n]-I[A];Q=Q!=0?Q:1;var V=(m[n]-m[A])/Q,G=(F[n]-F[A])/Q;Q=(p[n]-p[A])*255/Q;var sa=m[A],da=F[A],ya=p[A]*255,ta=I[A]-I[k];ta=ta!=0?ta:1;var ea=(m[A]-m[k])/ta,Ea=(F[A]-F[k])/ta;ta=(p[A]-p[k])*255/ta;var Da=I[n]*c;for(n=I[n];n>I[k];n--){if(n>=0&&nI[A]){oa=~~z;ua=ra;ja=ma}else{oa=~~sa;ua=da;ja=ya}if(S>oa){var fa;fa=S;S=oa;oa=fa;fa=Y;Y=ua;ua=fa;fa=na;na=ja;ja=fa}ua=S!=oa?(ua-Y)/(oa-S):1;ja=S!=oa?(ja-na)/ -(oa-S):1;if(S<0){Y-=S*ua;na-=S*ja;S=0}if(oa>=c)oa=c-1;fa=Da+S;if(H){S=S;Y=Y;for(na=na;S<=oa;S++,Y+=ua,na+=ja){if(Y>o[fa]){o[fa]=Y;l[fa]=M[na>0?~~na:0];u[fa]=B}fa++}}else{S=S;Y=Y;for(na=na;So[fa]){var pa=M[na>0?~~na:0],va=l[fa];l[fa]=(va&16711680)*x+(pa&16711680)*K>>8&16711680|(va&65280)*x+(pa&65280)*K>>8&65280|(va&255)*x+(pa&255)*K>>8&255;u[fa]=B}fa++}}}T-=q;y-=la;E-=C;if(n>I[A]){z-=V;ra-=G;ma-=Q}else{sa-=ea;da-=Ea;ya-=ta}Da-=c}}k=v;A=t}while(d[w]!=-1);w++}}}}; -a.renderSolidTexture=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,l=this.selectionBuffer,o=b.faceCount,u=b.internalId,j=b.texture,B=!j.hasTransparency,m=b.texCoordBuffer,M=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,H=j.data,x=j.width,K=x-1,I=j.hasMipmap()?j.mipmaps:null,F=I?j.mipentries:null;var fixForMacSafari=1*null;if(!g||g.length0?A:-A;if(A<0){do;while(d[D++]!=-1)}else{var t,n,T,y,E;A=d[D]*3;T=M[D]*2;D++;t=d[D]*3;y=M[D]*2;D++;if(I){n=d[D]*3;E=M[D]*2;x=j.width;p[0]=f[A];r[0]=f[A+1];p[1]=f[t];r[1]=f[t+1];p[2]=f[n];r[2]=f[n+1];s[0]=m[T]*x;v[0]=m[T+1]*x;s[1]=m[y]*x;v[1]=m[y+1]*x;s[2]=m[E]*x;v[2]=m[E+1]*x;H=(p[1]-p[0])*(r[2]-r[0])-(r[1]-r[0])*(p[2]-p[0]);if(H<0)H=-H;H+=1;K= -(s[1]-s[0])*(v[2]-v[0])-(v[1]-v[0])*(s[2]-s[0]);if(K<0)K=-K;H=K/H;K=0;if(H=F[F.length-1]){K=F.length-1;x=1}else for(;H>=F[K+1];){K++;x/=2}H=I[K];K=x-1}do{n=d[D]*3;E=M[D]*2;D++;p[0]=~~(f[A]+0.5);r[0]=~~(f[A+1]+0.5);w[0]=f[A+2];p[1]=~~(f[t]+0.5);r[1]=~~(f[t+1]+0.5);w[1]=f[t+2];p[2]=~~(f[n]+0.5);r[2]=~~(f[n+1]+0.5);w[2]=f[n+2];s[0]=m[T]*x;v[0]=m[T+1]*x;s[1]=m[y]*x;v[1]=m[y+1]*x;s[2]=m[E]*x;v[2]=m[E+1]*x;t=r[0]r[1]?0:1;C=r[C]>r[2]?C:2;y=3-C-t;if(t!= -C){var q=p[C],la=w[C],z=s[C],ra=v[C],ma=r[C]-r[t];ma=ma!=0?ma:1;var Q=(p[C]-p[t])/ma,V=(w[C]-w[t])/ma,G=(s[C]-s[t])/ma;ma=(v[C]-v[t])/ma;var sa=p[C],da=w[C],ya=s[C],ta=v[C],ea=r[C]-r[y];ea=ea!=0?ea:1;var Ea=(p[C]-p[y])/ea,Da=(w[C]-w[y])/ea,S=(s[C]-s[y])/ea;ea=(v[C]-v[y])/ea;var Y=p[y],na=w[y],oa=s[y],ua=v[y],ja=r[y]-r[t];ja=ja!=0?ja:1;var fa=(p[y]-p[t])/ja,pa=(w[y]-w[t])/ja,va=(s[y]-s[t])/ja;ja=(v[y]-v[t])/ja;var Fa=r[C]*c;for(C=r[C];C>r[t];C--){if(C>=0&&Cr[y]){U=~~sa;ka=da;ha=ya;J=ta}else{U=~~Y;ka=na;ha=oa;J=ua}if(aa>U){var L;L=aa;aa=U;U=L;L=ga;ga=ka;ka=L;L=wa;wa=ha;ha=L;L=O;O=J;J=L}ka=aa!=U?(ka-ga)/(U-aa):1;ha=aa!=U?(ha-wa)/(U-aa):1;J=aa!=U?(J-O)/(U-aa):1;if(aa<0){ga-=aa*ka;wa-=aa*ha;O-=aa*J;aa=0}if(U>=c)U=c-1;L=Fa+aa;if(B){aa=aa;ga=ga;wa=wa;for(O=O;aa<=U;aa++,ga+=ka,wa+=ha,O+=J){if(ga>i[L]){i[L]=ga;h[L]=H[(O&K)*x+(wa&K)];l[L]=u}L++}}else{aa=aa;ga=ga;wa=wa;for(O=O;aai[L]){var Z=H[(O&K)*x+(wa&K)],ca=h[L],P=Z>> -24&255,X=255-P;h[L]=(ca&16711680)*X+(Z&16711680)*P>>8&16711680|(ca&65280)*X+(Z&65280)*P>>8&65280|(ca&255)*X+(Z&255)*P>>8&255;l[L]=u}L++}}}q-=Q;la-=V;z-=G;ra-=ma;if(C>r[y]){sa-=Ea;da-=Da;ya-=S;ta-=ea}else{Y-=fa;na-=pa;oa-=va;ua-=ja}Fa-=c}}t=n;y=E}while(d[D]!=-1);D++}}}; -a.renderTextureFlat=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,l=this.selectionBuffer,o=b.faceCount,u=b.internalId,j=b.material?b.material:this.defaultMaterial,B=j.getPalette(),m=b.texture,M=j.transparency==0&&!m.hasTransparency,H=~~((1-j.transparency)*255),x=b.texCoordBuffer,K=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,I=m.data,F=m.width,p=F-1,r=m.hasMipmap()?m.mipmaps: -null,w=r?m.mipentries:null;var fixForMacSafari=1*null;if(j.transparency!=1){if(!g||g.length0?n:-n;if(n<0){do;while(d[t++]!=-1)}else{n=B[~~(n*255)];var T,y,E,C,q,la;T=d[t]*3;C=K[t]*2;t++;y=d[t]*3;q=K[t]*2;t++;if(r){E=d[t]*3;la=K[t]*2;F=m.width;j[0]= -f[T];s[0]=f[T+1];j[1]=f[y];s[1]=f[y+1];j[2]=f[E];s[2]=f[E+1];k[0]=x[C]*F;D[0]=x[C+1]*F;k[1]=x[q]*F;D[1]=x[q+1]*F;k[2]=x[la]*F;D[2]=x[la+1]*F;I=(j[1]-j[0])*(s[2]-s[0])-(s[1]-s[0])*(j[2]-j[0]);if(I<0)I=-I;I+=1;p=(k[1]-k[0])*(D[2]-D[0])-(D[1]-D[0])*(k[2]-k[0]);if(p<0)p=-p;I=p/I;p=0;if(I=w[w.length-1]){p=w.length-1;F=1}else for(;I>=w[p+1];){p++;F/=2}I=r[p];p=F-1}do{E=d[t]*3;la=K[t]*2;t++;j[0]=~~(f[T]+0.5);s[0]=~~(f[T+1]+0.5);v[0]=f[T+2];j[1]=~~(f[y]+0.5);s[1]=~~(f[y+1]+0.5);v[1]=f[y+ -2];j[2]=~~(f[E]+0.5);s[2]=~~(f[E+1]+0.5);v[2]=f[E+2];k[0]=x[C]*F;D[0]=x[C+1]*F;k[1]=x[q]*F;D[1]=x[q+1]*F;k[2]=x[la]*F;D[2]=x[la+1]*F;y=s[0]s[1]?0:1;z=s[z]>s[2]?z:2;q=3-z-y;if(y!=z){var ra=j[z],ma=v[z],Q=k[z],V=D[z],G=s[z]-s[y];G=G!=0?G:1;var sa=(j[z]-j[y])/G,da=(v[z]-v[y])/G,ya=(k[z]-k[y])/G;G=(D[z]-D[y])/G;var ta=j[z],ea=v[z],Ea=k[z],Da=D[z],S=s[z]-s[q];S=S!=0?S:1;var Y=(j[z]-j[q])/S,na=(v[z]-v[q])/S,oa=(k[z]-k[q])/S;S=(D[z]-D[q])/S;var ua=j[q],ja=v[q],fa=k[q], -pa=D[q],va=s[q]-s[y];va=va!=0?va:1;var Fa=(j[q]-j[y])/va,aa=(v[q]-v[y])/va,ga=(k[q]-k[y])/va;va=(D[q]-D[y])/va;var wa=s[z]*c;for(z=s[z];z>s[y];z--){if(z>=0&&zs[q]){J=~~ta;L=ea;Z=Ea;ca=Da}else{J=~~ua;L=ja;Z=fa;ca=pa}if(O>J){var P;P=O;O=J;J=P;P=U;U=L;L=P;P=ka;ka=Z;Z=P;P=ha;ha=ca;ca=P}L=O!=J?(L-U)/(J-O):1;Z=O!=J?(Z-ka)/(J-O):1;ca=O!=J?(ca-ha)/(J-O):1;if(O<0){U-=O*L;ka-=O*Z;ha-=O*ca;O=0}if(J>=c)J=c-1;P=wa+O;if(M){O=O;U=U;ka=ka;for(ha=ha;O<=J;O++,U+=L,ka+=Z, -ha+=ca){if(U>i[P]){i[P]=U;var X=I[(ha&p)*F+(ka&p)],N=((n&16711680)>>16)*((X&16711680)>>8),ba=((n&65280)>>8)*((X&65280)>>8),W=(n&255)*(X&255)>>8;h[P]=N&16711680|ba&65280|W&255;l[P]=u}P++}}else{O=O;U=U;ka=ka;for(ha=ha;Oi[P]){W=I[(ha&p)*F+(ka&p)];X=h[P];var ia=(W>>24&255)*(H&255)>>8;N=((n&16711680)>>16)*((W&16711680)>>8);ba=((n&65280)>>8)*((W&65280)>>8);W=(n&255)*(W&255)>>8;if(ia>250)i[P]=U;else{var R=255-ia;N=N*ia+(X&16711680)*R>>8;ba=ba*ia+(X&65280)*R>>8;W=W*ia+(X&255)* -R>>8}h[P]=N&16711680|ba&65280|W&255;l[P]=u}P++}}}ra-=sa;ma-=da;Q-=ya;V-=G;if(z>s[q]){ta-=Y;ea-=na;Ea-=oa;Da-=S}else{ua-=Fa;ja-=aa;fa-=ga;pa-=va}wa-=c}}y=E;q=la}while(d[t]!=-1);t++}}}}; -a.renderTextureSmooth=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedVertexNormalZBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,l=this.colorBuffer,o=this.zBuffer,u=this.selectionBuffer,j=b.faceCount,B=b.internalId,m=b.material?b.material:this.defaultMaterial,M=m.getPalette(),H=b.texture,x=m.transparency==0&&!H.hasTransparency,K=~~((1-m.transparency)*255),I=b.texCoordBuffer, -F=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,p=H.data,r=H.width,w=r-1,s=H.hasMipmap()?H.mipmaps:null,v=s?H.mipentries:null;var fixForMacSafari=1*null;if(m.transparency!=1){if(!g||g.length0?E:-E;if(E<0){do;while(d[y++]!=-1)}else{var C,q,la,z,ra,ma,Q,V;E=d[y]*3;la=F[y]*2;ma=h[y];y++;q=d[y]*3;z=F[y]*2;Q=h[y];y++;if(s){C=d[y]*3;ra=F[y]*2;r=H.width;m[0]=f[E];k[0]=f[E+1];m[1]=f[q];k[1]=f[q+1];m[2]=f[C];k[2]=f[C+1];t[0]=I[la]*r;n[0]=I[la+1]*r;t[1]=I[z]*r;n[1]=I[z+1]*r;t[2]=I[ra]*r;n[2]=I[ra+1]*r;p=(m[1]-m[0])*(k[2]- -k[0])-(k[1]-k[0])*(m[2]-m[0]);if(p<0)p=-p;p+=1;w=(t[1]-t[0])*(n[2]-n[0])-(n[1]-n[0])*(t[2]-t[0]);if(w<0)w=-w;p=w/p;w=0;if(p=v[v.length-1]){w=v.length-1;r=1}else for(;p>=v[w+1];){w++;r/=2}p=s[w];w=r-1}do{C=d[y];C=C*3;ra=F[y]*2;V=h[y];y++;m[0]=~~(f[E]+0.5);k[0]=~~(f[E+1]+0.5);D[0]=f[E+2];m[1]=~~(f[q]+0.5);k[1]=~~(f[q+1]+0.5);D[1]=f[q+2];m[2]=~~(f[C]+0.5);k[2]=~~(f[C+1]+0.5);D[2]=f[C+2];t[0]=I[la]*r;n[0]=I[la+1]*r;t[1]=I[z]*r;n[1]=I[z+1]*r;t[2]=I[ra]*r;n[2]=I[ra+1]*r;A[0]=g[ma];A[1]= -g[Q];A[2]=g[V];if(b){if(A[0]<0)A[0]=-A[0];if(A[1]<0)A[1]=-A[1];if(A[2]<0)A[2]=-A[2]}q=k[0]k[1]?0:1;G=k[G]>k[2]?G:2;z=3-G-q;if(q!=G){Q=m[G];var sa=D[G],da=t[G],ya=n[G],ta=A[G]*255,ea=k[G]-k[q];ea=ea!=0?ea:1;var Ea=(m[G]-m[q])/ea,Da=(D[G]-D[q])/ea,S=(t[G]-t[q])/ea,Y=(n[G]-n[q])/ea;ea=(A[G]-A[q])*255/ea;var na=m[G],oa=D[G],ua=t[G],ja=n[G],fa=A[G]*255,pa=k[G]-k[z];pa=pa!=0?pa:1;var va=(m[G]-m[z])/pa,Fa=(D[G]-D[z])/pa,aa=(t[G]-t[z])/pa,ga=(n[G]-n[z])/pa;pa=(A[G]-A[z])* -255/pa;var wa=m[z],O=D[z],U=t[z],ka=n[z],ha=A[z]*255,J=k[z]-k[q];J=J!=0?J:1;var L=(m[z]-m[q])/J,Z=(D[z]-D[q])/J,ca=(t[z]-t[q])/J,P=(n[z]-n[q])/J;J=(A[z]-A[q])*255/J;var X=k[G]*c;for(G=k[G];G>k[q];G--){if(G>=0&&Gk[z]){$=~~na;xa=oa;za=ua;Aa=ja;Ba=fa}else{$=~~wa;xa=O;za=U;Aa=ka;Ba=ha}if(N>$){var qa;qa=N;N=$;$=qa;qa=ba;ba=xa;xa=qa;qa=W;W=za;za=qa;qa=ia;ia=Aa;Aa=qa;qa=R;R=Ba;Ba=qa}xa=N!=$?(xa-ba)/($-N):1;za=N!=$?(za-W)/($-N):1;Aa=N!=$?(Aa-ia)/($-N): -1;Ba=N!=$?(Ba-R)/($-N):0;if(N<0){ba-=N*xa;W-=N*za;ia-=N*Aa;R-=N*Ba;N=0}if($>=c)$=c-1;qa=X+N;if(x){N=N;ba=ba;R=R;W=W;for(ia=ia;N<=$;N++,ba+=xa,R+=Ba,W+=za,ia+=Aa){if(ba>o[qa]){o[qa]=ba;var Ca=M[R>0?~~R:0],Ha=p[(ia&w)*r+(W&w)],Ia=((Ca&16711680)>>16)*((Ha&16711680)>>8),Ja=((Ca&65280)>>8)*((Ha&65280)>>8);Ca=(Ca&255)*(Ha&255)>>8;l[qa]=Ia&16711680|Ja&65280|Ca&255;u[qa]=B}qa++}}else{N=N;ba=ba;R=R;W=W;for(ia=ia;N<$;N++,ba+=xa,R+=Ba,W+=za,ia+=Aa){if(ba>o[qa]){Ca=M[R>0?~~R:0];var Ga=p[(ia&w)*r+(W&w)];Ha=l[qa]; -var Ka=(Ga>>24&255)*(K&255)>>8;Ia=((Ca&16711680)>>16)*((Ga&16711680)>>8);Ja=((Ca&65280)>>8)*((Ga&65280)>>8);Ca=(Ca&255)*(Ga&255)>>8;if(Ka>250)o[qa]=ba;else{Ga=255-Ka;Ia=Ia*Ka+(Ha&16711680)*Ga>>8;Ja=Ja*Ka+(Ha&65280)*Ga>>8;Ca=Ca*Ka+(Ha&255)*Ga>>8}l[qa]=Ia&16711680|Ja&65280|Ca&255;u[qa]=B}qa++}}}Q-=Ea;sa-=Da;da-=S;ya-=Y;ta-=ea;if(G>k[z]){na-=va;oa-=Fa;ua-=aa;ja-=ga;fa-=pa}else{wa-=L;O-=Z;U-=ca;ka-=P;ha-=J}X-=c}}q=C;z=ra;Q=V}while(d[y]!=-1);y++}}}}; -a.renderSolidSphereMapped=function(b){var c=this.frameWidth,e=this.frameHeight,d=b.indexBuffer,f=b.transformedVertexBuffer,g=b.transformedVertexNormalBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,l=this.colorBuffer,o=this.zBuffer,u=this.selectionBuffer,j=b.faceCount,B=b.internalId,m=b.material?b.material:this.defaultMaterial,M=m.getPalette(),H=this.sphereMap,x=H.data;H=H.width;var K=H-1,I=m.transparency==0,F=m.transparency*255,p=255-F;var fixForMacSafari=1*null; -if(m.transparency!=1){if(!g||g.length0?t:-t;if(t<0){do;while(d[A++]!=-1)}else{var n,T,y,E,C;t=d[A]*3;y=h[A]*3;A++;n=d[A]*3;E=h[A]*3;A++;do{T=d[A]*3;C=h[A]*3;A++;m[0]=~~(f[t]+0.5);r[0]=~~(f[t+1]+0.5);w[0]=f[t+2];m[1]=~~(f[n]+0.5);r[1]=~~(f[n+1]+0.5);w[1]=f[n+2];m[2]=~~(f[T]+0.5);r[2]=~~(f[T+1]+0.5);w[2]=f[T+2];s[0]=g[y];v[0]=g[y+1];k[0]=g[y+2];s[1]=g[E];v[1]=g[E+1];k[1]=g[E+2];s[2]=g[C];v[2]=g[C+1];k[2]=g[C+2];if(b){if(k[0]<0)k[0]=-k[0];if(k[1]<0)k[1]=-k[1];if(k[2]<0)k[2]=-k[2]}n=r[0]< -r[1]?0:1;n=r[n]r[1]?0:1;q=r[q]>r[2]?q:2;E=3-q-n;if(n!=q){var la=m[q],z=w[q],ra=k[q]*255,ma=(s[q]/2+0.5)*H&K,Q=(0.5-v[q]/2)*H&K,V=r[q]-r[n];V=V!=0?V:1;var G=(m[q]-m[n])/V,sa=(w[q]-w[n])/V,da=(k[q]-k[n])*255/V,ya=(s[q]-s[n])/2*H/V;V=(v[n]-v[q])/2*H/V;var ta=m[q],ea=w[q],Ea=k[q]*255,Da=(s[q]/2+0.5)*H&K,S=(0.5-v[q]/2)*H&K,Y=r[q]-r[E];Y=Y!=0?Y:1;var na=(m[q]-m[E])/Y,oa=(w[q]-w[E])/Y,ua=(k[q]-k[E])*255/Y,ja=(s[q]-s[E])/2*H/Y;Y=(v[E]-v[q])/2*H/Y;var fa=m[E],pa=w[E],va=k[E]*255,Fa=(s[E]/ -2+0.5)*H&K,aa=(0.5-v[E]/2)*H&K,ga=r[E]-r[n];ga=ga!=0?ga:1;var wa=(m[E]-m[n])/ga,O=(w[E]-w[n])/ga,U=(k[E]-k[n])*255/ga,ka=(s[E]-s[n])/2*H/ga;ga=(v[n]-v[E])/2*H/ga;var ha=r[q]*c;for(q=r[q];q>r[n];q--){if(q>=0&&qr[E]){X=~~ta;N=ea;ba=Ea;W=Da;ia=S}else{X=~~fa;N=pa;ba=va;W=Fa;ia=aa}if(J>X){var R;R=J;J=X;X=R;R=L;L=N;N=R;R=Z;Z=ba;ba=R;R=ca;ca=W;W=R;R=P;P=ia;ia=R}N=J!=X?(N-L)/(X-J):1;ba=J!=X?(ba-Z)/(X-J):1;W=J!=X?(W-ca)/(X-J):1;ia=J!=X?(ia-P)/(X-J):1;if(J< -0){L-=J*N;Z-=J*ba;ca-=ca*W;P-=P*ia;J=0}if(X>=c)X=c-1;R=ha+J;if(I){J=J;L=L;Z=Z;ca=ca;for(P=P;J<=X;J++,L+=N,Z+=ba,ca+=W,P+=ia){if(L>o[R]){o[R]=L;var $=M[Z>0?~~Z:0],xa=x[(P&K)*H+(ca&K)],za=(($&16711680)>>16)*((xa&16711680)>>8),Aa=(($&65280)>>8)*((xa&65280)>>8);$=($&255)*(xa&255)>>8;l[R]=za&16711680|Aa&65280|$&255;u[R]=B}R++}}else{J=J;L=L;Z=Z;ca=ca;for(P=P;Jo[R]){$=M[Z>0?~~Z:0];var Ba=x[(P&K)*H+(ca&K)];xa=l[R];za=(($&16711680)>>16)*((Ba&16711680)>>8);Aa=(($&65280)>> -8)*((Ba&65280)>>8);$=($&255)*(Ba&255)>>8;za=za*p+(xa&16711680)*F>>8;Aa=Aa*p+(xa&65280)*F>>8;$=$*p+(xa&255)*F>>8;l[R]=za&16711680|Aa&65280|$&255;u[R]=B}R++}}}la-=G;z-=sa;ra-=da;ma-=ya;Q-=V;if(q>r[E]){ta-=na;ea-=oa;Ea-=ua;Da-=ja;S-=Y}else{fa-=wa;pa-=O;va-=U;Fa-=ka;aa-=ga}ha-=c}}n=T;E=C}while(d[A]!=-1);A++}}}};a.params=null;a.canvas=null;a.ctx2d=null;a.canvasData=null;a.bkgColorBuffer=null;a.colorBuffer=null;a.zBuffer=null;a.selectionBuffer=null;a.frameWidth=0;a.frameHeight=0;a.scene=null; -a.defaultMaterial=null;a.sphereMap=null;a.isLoaded=false;a.isFailed=false;a.needUpdate=false;a.needRepaint=false;a.initRotX=0;a.initRotY=0;a.initRotZ=0;a.zoomFactor=1;a.panning=[0,0];a.rotMatrix=null;a.transformMatrix=null;a.sceneUrl="";a.modelColor=13280792;a.bkgColor1=16777215;a.bkgColor2=16777088;a.renderMode="flat";a.definition="standard";a.isMipMappingOn=false;a.creaseAngle=-180;a.sphereMapUrl="";a.showProgressBar=true;a.buttonStates=null;a.keyStates=null;a.mouseX=0;a.mouseY=0; -a.onloadingstarted=null;a.onloadingcomplete=null;a.onloadingprogress=null;a.onloadingaborted=null;a.onloadingerror=null;a.onmousedown=null;a.onmouseup=null;a.onmousemove=null;a.onmousewheel=null;a.beforeupdate=null;a.afterupdate=null;a.mouseUsage="default";a.isDefaultInputHandlerEnabled=false;JSC3D.PickInfo=function(){this.canvasY=this.canvasX=0;this.depth=-Infinity;this.mesh=null};JSC3D.Scene=function(b){this.name=b||"";this.aabb=null;this.children=[];this.maxChildId=1};a=JSC3D.Scene.prototype; -a.init=function(){if(!this.isEmpty()){for(var b=0;b=0&&this.children.splice(b,1)};a.getChildren=function(){return this.children.slice(0)}; -a.forEachChild=function(b){if(typeof b=="function")for(var c=0;ce)this.aabb.minX=e;if(this.aabb.minY>d)this.aabb.minY=d;if(this.aabb.minZ>f)this.aabb.minZ=f;if(this.aabb.maxX=0?f:-180;this.isDoubleSided=g||false;this.isEnvironmentCast=h||false;this.internalId=0;this.texCoordBuffer=o||null;this.texCoordIndexBuffer=u||null;this.transformedVertexNormalBuffer= +a.renderPoint=function(b){var c=this.frameWidth,f=c-1,d=this.frameHeight-1,e=b.transformedVertexBuffer,g=this.colorBuffer,h=this.zBuffer,i=this.selectionBuffer,m=e.length/3,n=b.internalId;b=4278190080|(b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor);for(var t=0,j=0;t=0&&y=0&&kh[y]){h[y]=L;g[y]=b;i[y]=n}y++;if(L>h[y]){h[y]=L;g[y]=b;i[y]=n}y+=f;if(L>h[y]){h[y]=L;g[y]=b;i[y]=n}y++;if(L>h[y]){h[y]= +L;g[y]=b;i[y]=n}}}}; +a.renderWireframe=function(b){var c=this.frameWidth,f=c-1,d=this.frameHeight-1,e=b.indexBuffer,g=b.transformedVertexBuffer,h=b.transformedFaceNormalZBuffer,i=this.colorBuffer,m=this.zBuffer,n=this.selectionBuffer,t=b.faceCount,j=b.internalId,y=4278190080|(b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor),k=b.isDoubleSided||this.isCullingDisabled;if(!h||h.length0?B:-B;if(B<0){do;while(e[L++]!=-1)}else{var H,J;H=e[L++]*3;J=e[L++]*3;B=H;for(var O=false;!O;){var E=~~(g[H]+0.5),u=~~(g[H+1]+0.5),z=g[H+2],s=~~(g[J]+0.5),G=~~(g[J+1]+0.5),r=g[J+2],p=s-E,C=G-u,x=r-z,q,l,T;if(Math.abs(p)>Math.abs(C)){q=p;l=p>0?1:-1;T=p!=0?l*C/p:0;p=p!=0?l*x/p:0}else{q=C;T=C>0?1:-1;l=C!=0?T*p/C:0;p=C!=0?T*x/C:0}E=E;u=u;z=z;if(q<0){E=s;u=G;z=r;q=-q;l=-l;T=-T;p=-p}for(s=0;s=0&&E=0&&um[G]){m[G]=z;i[G]= +y;n[G]=j}}E+=l;u+=T;z+=p}if(J==B)O=true;else{H=J;J=e[L]!=-1?e[L++]*3:B}}L++}}}; +a.renderSolidFlat=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,t=b.internalId,j=b.material?b.material:this.defaultMaterial,y=j.getPalette(),k=j.transparency==0,L=~~(j.transparency*255),B=255-L,H=b.isDoubleSided||this.isCullingDisabled;if(j.transparency!=1){if(!g||g.length0?u:-u;if(u<0){do;while(d[E++]!=-1)}else{u=4278190080|y[~~(u*255)];var z,s,G;z=d[E++]*3;s=d[E++]*3;do{G=d[E++]*3;b[0]=~~(e[z]+0.5);j[0]=~~(e[z+1]+0.5);J[0]=e[z+2];b[1]=~~(e[s]+0.5);j[1]=~~(e[s+1]+0.5);J[1]=e[s+2];b[2]=~~(e[G]+0.5);j[2]=~~(e[G+1]+0.5);J[2]=e[G+2];s=j[0]j[1]?0:1;r=j[r]>j[2]?r:2;var p=3-r-s;if(s!=r){var C=b[r],x=J[r],q=j[r]-j[s];q=q!=0?q: +1;var l=(b[r]-b[s])/q;q=(J[r]-J[s])/q;var T=b[r],v=J[r],D=j[r]-j[p];D=D!=0?D:1;var A=(b[r]-b[p])/D;D=(J[r]-J[p])/D;var o=b[p],la=J[p],w=j[p]-j[s];w=w!=0?w:1;var ra=(b[p]-b[s])/w;w=(J[p]-J[s])/w;var ma=j[r]*c;for(r=j[r];r>j[s];r--){if(r>=0&&rj[p]){F=~~T;sa=v}else{F=~~o;sa=la}if(Q>F){var ea;ea=Q;Q=F;F=ea;ea=V;V=sa;sa=ea}if(Q<0)Q=0;if(F>=c)F=c-1;sa=Q!=F?(sa-V)/(F-Q):1;ea=ma+Q;if(k){Q=Q;for(V=V;Q<=F;Q++,V+=sa){if(V>i[ea]){i[ea]=V;h[ea]=u;m[ea]=t}ea++}}else{Q=Q;for(V=V;Qi[ea]){var za=h[ea];h[ea]=za&4278190080|B<<24|(za&16711680)*L+(u&16711680)*B>>8&16711680|(za&65280)*L+(u&65280)*B>>8&65280|(za&255)*L+(u&255)*B>>8&255;m[ea]=t}ea++}}}C-=l;x-=q;if(r>j[p]){T-=A;v-=D}else{o-=ra;la-=w}ma-=c}}s=G}while(d[E]!=-1);E++}}}}; +a.renderSolidSmooth=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedVertexNormalZBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,m=this.colorBuffer,n=this.zBuffer,t=this.selectionBuffer,j=b.faceCount,y=b.internalId,k=b.material?b.material:this.defaultMaterial,L=k.getPalette(),B=k.transparency==0,H=~~(k.transparency*255),J=255-H,O=b.isDoubleSided||this.isCullingDisabled;if(k.transparency!= +1){if(!g||g.length0?G: +-G;if(G<0){do;while(d[s++]!=-1)}else{var r,p,C,x,q;G=d[s]*3;C=h[s];s++;p=d[s]*3;x=h[s];s++;do{r=d[s];r=r*3;q=h[s];s++;b[0]=~~(e[G]+0.5);k[0]=~~(e[G+1]+0.5);E[0]=e[G+2];b[1]=~~(e[p]+0.5);k[1]=~~(e[p+1]+0.5);E[1]=e[p+2];b[2]=~~(e[r]+0.5);k[2]=~~(e[r+1]+0.5);E[2]=e[r+2];u[0]=g[C];u[1]=g[x];u[2]=g[q];if(O){if(u[0]<0)u[0]=-u[0];if(u[1]<0)u[1]=-u[1];if(u[2]<0)u[2]=-u[2]}p=k[0]k[1]?0:1;l=k[l]>k[2]?l:2;x=3-l-p;if(p!=l){var T=b[l],v=E[l],D=u[l]*255,A=k[l]-k[p];A=A!=0?A: +1;var o=(b[l]-b[p])/A,la=(E[l]-E[p])/A;A=(u[l]-u[p])*255/A;var w=b[l],ra=E[l],ma=u[l]*255,Q=k[l]-k[x];Q=Q!=0?Q:1;var V=(b[l]-b[x])/Q,F=(E[l]-E[x])/Q;Q=(u[l]-u[x])*255/Q;var sa=b[x],ea=E[x],za=u[x]*255,ua=k[x]-k[p];ua=ua!=0?ua:1;var fa=(b[x]-b[p])/ua,Ea=(E[x]-E[p])/ua;ua=(u[x]-u[p])*255/ua;var Da=k[l]*c;for(l=k[l];l>k[p];l--){if(l>=0&&lk[x]){oa=~~w;va=ra;ja=ma}else{oa=~~sa;va=ea;ja=za}if(S>oa){var ga;ga=S;S=oa;oa=ga;ga=Z;Z=va;va=ga;ga=na;na=ja;ja=ga}va=S!=oa?(va- +Z)/(oa-S):1;ja=S!=oa?(ja-na)/(oa-S):1;if(S<0){Z-=S*va;na-=S*ja;S=0}if(oa>=c)oa=c-1;ga=Da+S;if(B){S=S;Z=Z;for(na=na;S<=oa;S++,Z+=va,na+=ja){if(Z>n[ga]){n[ga]=Z;m[ga]=4278190080|L[na>0?~~na:0];t[ga]=y}ga++}}else{S=S;Z=Z;for(na=na;Sn[ga]){var pa=L[na>0?~~na:0],ta=m[ga];m[ga]=ta&4278190080|J<<24|(ta&16711680)*H+(pa&16711680)*J>>8&16711680|(ta&65280)*H+(pa&65280)*J>>8&65280|(ta&255)*H+(pa&255)*J>>8&255;t[ga]=y}ga++}}}T-=o;v-=la;D-=A;if(l>k[x]){w-=V;ra-=F;ma-=Q}else{sa-=fa;ea-= +Ea;za-=ua}Da-=c}}p=r;x=q}while(d[s]!=-1);s++}}}}; +a.renderSolidTexture=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,t=b.internalId,j=b.texture,y=!j.hasTransparency,k=b.texCoordBuffer,L=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,B=j.data,H=j.width,J=H-1,O=j.hasMipmap()?j.mipmaps:null,E=O?j.mipentries:null,u=b.isDoubleSided||this.isCullingDisabled;if(!g||g.length0?x:-x;if(x<0){do;while(d[C++]!=-1)}else{var q,l,T,v,D;x=d[C]*3;T=L[C]*2;C++;q=d[C]*3;v=L[C]*2;C++;if(O){l=d[C]*3;D=L[C]*2;H=j.width;b[0]=e[x];z[0]=e[x+1];b[1]=e[q];z[1]=e[q+1];b[2]=e[l];z[2]=e[l+1];G[0]=k[T]*H;r[0]=k[T+1]*H;G[1]=k[v]*H;r[1]=k[v+1]*H;G[2]=k[D]*H;r[2]= +k[D+1]*H;B=(b[1]-b[0])*(z[2]-z[0])-(z[1]-z[0])*(b[2]-b[0]);if(B<0)B=-B;B+=1;J=(G[1]-G[0])*(r[2]-r[0])-(r[1]-r[0])*(G[2]-G[0]);if(J<0)J=-J;B=J/B;J=0;if(B=E[E.length-1]){J=E.length-1;H=1}else for(;B>=E[J+1];){J++;H/=2}B=O[J];J=H-1}do{l=d[C]*3;D=L[C]*2;C++;b[0]=~~(e[x]+0.5);z[0]=~~(e[x+1]+0.5);s[0]=e[x+2];b[1]=~~(e[q]+0.5);z[1]=~~(e[q+1]+0.5);s[1]=e[q+2];b[2]=~~(e[l]+0.5);z[2]=~~(e[l+1]+0.5);s[2]=e[l+2];G[0]=k[T]*H;r[0]=k[T+1]*H;G[1]=k[v]*H;r[1]=k[v+1]*H;G[2]=k[D]*H;r[2]=k[D+1]*H; +q=z[0]z[1]?0:1;A=z[A]>z[2]?A:2;v=3-A-q;if(q!=A){var o=b[A],la=s[A],w=G[A],ra=r[A],ma=z[A]-z[q];ma=ma!=0?ma:1;var Q=(b[A]-b[q])/ma,V=(s[A]-s[q])/ma,F=(G[A]-G[q])/ma;ma=(r[A]-r[q])/ma;var sa=b[A],ea=s[A],za=G[A],ua=r[A],fa=z[A]-z[v];fa=fa!=0?fa:1;var Ea=(b[A]-b[v])/fa,Da=(s[A]-s[v])/fa,S=(G[A]-G[v])/fa;fa=(r[A]-r[v])/fa;var Z=b[v],na=s[v],oa=G[v],va=r[v],ja=z[v]-z[q];ja=ja!=0?ja:1;var ga=(b[v]-b[q])/ja,pa=(s[v]-s[q])/ja,ta=(G[v]-G[q])/ja;ja=(r[v]-r[q])/ja;var Fa= +z[A]*c;for(A=z[A];A>z[q];A--){if(A>=0&&Az[v]){U=~~sa;ka=ea;ia=za;I=ua}else{U=~~Z;ka=na;ia=oa;I=va}if(aa>U){var K;K=aa;aa=U;U=K;K=ha;ha=ka;ka=K;K=wa;wa=ia;ia=K;K=P;P=I;I=K}ka=aa!=U?(ka-ha)/(U-aa):1;ia=aa!=U?(ia-wa)/(U-aa):1;I=aa!=U?(I-P)/(U-aa):1;if(aa<0){ha-=aa*ka;wa-=aa*ia;P-=aa*I;aa=0}if(U>=c)U=c-1;K=Fa+aa;if(y){aa=aa;ha=ha;wa=wa;for(P=P;aa<=U;aa++,ha+=ka,wa+=ia,P+=I){if(ha>i[K]){i[K]=ha;h[K]=B[(P&J)*H+(wa&J)];m[K]=t}K++}}else{aa=aa;ha=ha;wa=wa;for(P= +P;aai[K]){var $=B[(P&J)*H+(wa&J)],ba=h[K],M=$>>24&255,W=255-M;h[K]=ba&4278190080|M<<24|(ba&16711680)*W+($&16711680)*M>>8&16711680|(ba&65280)*W+($&65280)*M>>8&65280|(ba&255)*W+($&255)*M>>8&255;m[K]=t}K++}}}o-=Q;la-=V;w-=F;ra-=ma;if(A>z[v]){sa-=Ea;ea-=Da;za-=S;ua-=fa}else{Z-=ga;na-=pa;oa-=ta;va-=ja}Fa-=c}}q=l;v=D}while(d[C]!=-1);C++}}}; +a.renderTextureFlat=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,t=b.internalId,j=b.material?b.material:this.defaultMaterial,y=j.getPalette(),k=b.texture,L=j.transparency==0&&!k.hasTransparency,B=~~((1-j.transparency)*255),H=b.texCoordBuffer,J=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,O=k.data,E=k.width,u=E-1,z=k.hasMipmap()?k.mipmaps: +null,s=z?k.mipentries:null,G=b.isDoubleSided||this.isCullingDisabled;if(j.transparency!=1){if(!g||g.length0?l:-l;if(l<0){do;while(d[q++]!=-1)}else{l=4278190080|y[~~(l*255)];var T,v,D,A,o,la;T=d[q]*3;A=J[q]*2;q++;v=d[q]*3;o=J[q]*2;q++; +if(z){D=d[q]*3;la=J[q]*2;E=k.width;b[0]=e[T];j[0]=e[T+1];b[1]=e[v];j[1]=e[v+1];b[2]=e[D];j[2]=e[D+1];p[0]=H[A]*E;C[0]=H[A+1]*E;p[1]=H[o]*E;C[1]=H[o+1]*E;p[2]=H[la]*E;C[2]=H[la+1]*E;O=(b[1]-b[0])*(j[2]-j[0])-(j[1]-j[0])*(b[2]-b[0]);if(O<0)O=-O;O+=1;u=(p[1]-p[0])*(C[2]-C[0])-(C[1]-C[0])*(p[2]-p[0]);if(u<0)u=-u;O=u/O;u=0;if(O=s[s.length-1]){u=s.length-1;E=1}else for(;O>=s[u+1];){u++;E/=2}O=z[u];u=E-1}do{D=d[q]*3;la=J[q]*2;q++;b[0]=~~(e[T]+0.5);j[0]=~~(e[T+1]+0.5);r[0]=e[T+2];b[1]= +~~(e[v]+0.5);j[1]=~~(e[v+1]+0.5);r[1]=e[v+2];b[2]=~~(e[D]+0.5);j[2]=~~(e[D+1]+0.5);r[2]=e[D+2];p[0]=H[A]*E;C[0]=H[A+1]*E;p[1]=H[o]*E;C[1]=H[o+1]*E;p[2]=H[la]*E;C[2]=H[la+1]*E;v=j[0]j[1]?0:1;w=j[w]>j[2]?w:2;o=3-w-v;if(v!=w){var ra=b[w],ma=r[w],Q=p[w],V=C[w],F=j[w]-j[v];F=F!=0?F:1;var sa=(b[w]-b[v])/F,ea=(r[w]-r[v])/F,za=(p[w]-p[v])/F;F=(C[w]-C[v])/F;var ua=b[w],fa=r[w],Ea=p[w],Da=C[w],S=j[w]-j[o];S=S!=0?S:1;var Z=(b[w]-b[o])/S,na=(r[w]-r[o])/S,oa=(p[w]-p[o])/S; +S=(C[w]-C[o])/S;var va=b[o],ja=r[o],ga=p[o],pa=C[o],ta=j[o]-j[v];ta=ta!=0?ta:1;var Fa=(b[o]-b[v])/ta,aa=(r[o]-r[v])/ta,ha=(p[o]-p[v])/ta;ta=(C[o]-C[v])/ta;var wa=j[w]*c;for(w=j[w];w>j[v];w--){if(w>=0&&wj[o]){I=~~ua;K=fa;$=Ea;ba=Da}else{I=~~va;K=ja;$=ga;ba=pa}if(P>I){var M;M=P;P=I;I=M;M=U;U=K;K=M;M=ka;ka=$;$=M;M=ia;ia=ba;ba=M}K=P!=I?(K-U)/(I-P):1;$=P!=I?($-ka)/(I-P):1;ba=P!=I?(ba-ia)/(I-P):1;if(P<0){U-=P*K;ka-=P*$;ia-=P*ba;P=0}if(I>=c)I=c-1;M=wa+P;if(L){P= +P;U=U;ka=ka;for(ia=ia;P<=I;P++,U+=K,ka+=$,ia+=ba){if(U>i[M]){i[M]=U;var W=O[(ia&u)*E+(ka&u)],N=((l&16711680)>>16)*((W&16711680)>>8),ca=((l&65280)>>8)*((W&65280)>>8),X=(l&255)*(W&255)>>8;h[M]=4278190080|N&16711680|ca&65280|X&255;m[M]=t}M++}}else{P=P;U=U;ka=ka;for(ia=ia;Pi[M]){X=O[(ia&u)*E+(ka&u)];W=h[M];var da=(X>>24&255)*(B&255)>>8;N=((l&16711680)>>16)*((X&16711680)>>8);ca=((l&65280)>>8)*((X&65280)>>8);X=(l&255)*(X&255)>>8;var R=W&4278190080|da<<24;if(da>250)i[M]=U; +else{var Y=255-da;N=N*da+(W&16711680)*Y>>8;ca=ca*da+(W&65280)*Y>>8;X=X*da+(W&255)*Y>>8}h[M]=R|N&16711680|ca&65280|X&255;m[M]=t}M++}}}ra-=sa;ma-=ea;Q-=za;V-=F;if(w>j[o]){ua-=Z;fa-=na;Ea-=oa;Da-=S}else{va-=Fa;ja-=aa;ga-=ha;pa-=ta}wa-=c}}v=D;o=la}while(d[q]!=-1);q++}}}}; +a.renderTextureSmooth=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedVertexNormalZBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,m=this.colorBuffer,n=this.zBuffer,t=this.selectionBuffer,j=b.faceCount,y=b.internalId,k=b.material?b.material:this.defaultMaterial,L=k.getPalette(),B=b.texture,H=k.transparency==0&&!B.hasTransparency,J=~~((1-k.transparency)*255),O=b.texCoordBuffer, +E=b.texCoordIndexBuffer?b.texCoordIndexBuffer:b.indexBuffer,u=B.data,z=B.width,s=z-1,G=B.hasMipmap()?B.mipmaps:null,r=G?B.mipentries:null,p=b.isDoubleSided||this.isCullingDisabled;if(k.transparency!=1){if(!g||g.length0?D:-D;if(D<0){do;while(d[v++]!=-1)}else{var A,o,la,w,ra,ma,Q,V;D=d[v]*3;la=E[v]*2;ma=h[v];v++;o=d[v]*3;w=E[v]*2;Q=h[v];v++;if(G){A=d[v]*3;ra=E[v]*2;z=B.width;b[0]=e[D];k[0]=e[D+1];b[1]=e[o];k[1]=e[o+1];b[2]=e[A];k[2]=e[A+1];q[0]=O[la]*z;l[0]=O[la+1]*z;q[1]=O[w]*z;l[1]=O[w+1]*z;q[2]=O[ra]*z;l[2]= +O[ra+1]*z;u=(b[1]-b[0])*(k[2]-k[0])-(k[1]-k[0])*(b[2]-b[0]);if(u<0)u=-u;u+=1;s=(q[1]-q[0])*(l[2]-l[0])-(l[1]-l[0])*(q[2]-q[0]);if(s<0)s=-s;u=s/u;s=0;if(u=r[r.length-1]){s=r.length-1;z=1}else for(;u>=r[s+1];){s++;z/=2}u=G[s];s=z-1}do{A=d[v];A=A*3;ra=E[v]*2;V=h[v];v++;b[0]=~~(e[D]+0.5);k[0]=~~(e[D+1]+0.5);C[0]=e[D+2];b[1]=~~(e[o]+0.5);k[1]=~~(e[o+1]+0.5);C[1]=e[o+2];b[2]=~~(e[A]+0.5);k[2]=~~(e[A+1]+0.5);C[2]=e[A+2];q[0]=O[la]*z;l[0]=O[la+1]*z;q[1]=O[w]*z;l[1]=O[w+1]*z;q[2]=O[ra]* +z;l[2]=O[ra+1]*z;x[0]=g[ma];x[1]=g[Q];x[2]=g[V];if(p){if(x[0]<0)x[0]=-x[0];if(x[1]<0)x[1]=-x[1];if(x[2]<0)x[2]=-x[2]}o=k[0]k[1]?0:1;F=k[F]>k[2]?F:2;w=3-F-o;if(o!=F){Q=b[F];var sa=C[F],ea=q[F],za=l[F],ua=x[F]*255,fa=k[F]-k[o];fa=fa!=0?fa:1;var Ea=(b[F]-b[o])/fa,Da=(C[F]-C[o])/fa,S=(q[F]-q[o])/fa,Z=(l[F]-l[o])/fa;fa=(x[F]-x[o])*255/fa;var na=b[F],oa=C[F],va=q[F],ja=l[F],ga=x[F]*255,pa=k[F]-k[w];pa=pa!=0?pa:1;var ta=(b[F]-b[w])/pa,Fa=(C[F]-C[w])/pa,aa=(q[F]-q[w])/ +pa,ha=(l[F]-l[w])/pa;pa=(x[F]-x[w])*255/pa;var wa=b[w],P=C[w],U=q[w],ka=l[w],ia=x[w]*255,I=k[w]-k[o];I=I!=0?I:1;var K=(b[w]-b[o])/I,$=(C[w]-C[o])/I,ba=(q[w]-q[o])/I,M=(l[w]-l[o])/I;I=(x[w]-x[o])*255/I;var W=k[F]*c;for(F=k[F];F>k[o];F--){if(F>=0&&Fk[w]){Y=~~na;ya=oa;Aa=va;Ba=ja;xa=ga}else{Y=~~wa;ya=P;Aa=U;Ba=ka;xa=ia}if(N>Y){var qa;qa=N;N=Y;Y=qa;qa=ca;ca=ya;ya=qa;qa=X;X=Aa;Aa=qa;qa=da;da=Ba;Ba=qa;qa=R;R=xa;xa=qa}ya=N!=Y?(ya-ca)/(Y-N):1;Aa=N!=Y? +(Aa-X)/(Y-N):1;Ba=N!=Y?(Ba-da)/(Y-N):1;xa=N!=Y?(xa-R)/(Y-N):0;if(N<0){ca-=N*ya;X-=N*Aa;da-=N*Ba;R-=N*xa;N=0}if(Y>=c)Y=c-1;qa=W+N;if(H){N=N;ca=ca;R=R;X=X;for(da=da;N<=Y;N++,ca+=ya,R+=xa,X+=Aa,da+=Ba){if(ca>n[qa]){n[qa]=ca;var Ca=L[R>0?~~R:0],Ga=u[(da&s)*z+(X&s)],Ja=((Ca&16711680)>>16)*((Ga&16711680)>>8),Ka=((Ca&65280)>>8)*((Ga&65280)>>8);Ca=(Ca&255)*(Ga&255)>>8;m[qa]=4278190080|Ja&16711680|Ka&65280|Ca&255;t[qa]=y}qa++}}else{N=N;ca=ca;R=R;X=X;for(da=da;Nn[qa]){Ca= +L[R>0?~~R:0];var Ha=u[(da&s)*z+(X&s)];Ga=m[qa];var Ia=(Ha>>24&255)*(J&255)>>8;Ja=((Ca&16711680)>>16)*((Ha&16711680)>>8);Ka=((Ca&65280)>>8)*((Ha&65280)>>8);Ca=(Ca&255)*(Ha&255)>>8;Ha=Ga&4278190080|Ia<<24;if(Ia>250)n[qa]=ca;else{var La=255-Ia;Ja=Ja*Ia+(Ga&16711680)*La>>8;Ka=Ka*Ia+(Ga&65280)*La>>8;Ca=Ca*Ia+(Ga&255)*La>>8}m[qa]=Ha|Ja&16711680|Ka&65280|Ca&255;t[qa]=y}qa++}}}Q-=Ea;sa-=Da;ea-=S;za-=Z;ua-=fa;if(F>k[w]){na-=ta;oa-=Fa;va-=aa;ja-=ha;ga-=pa}else{wa-=K;P-=$;U-=ba;ka-=M;ia-=I}W-=c}}o=A;w=ra;Q= +V}while(d[v]!=-1);v++}}}}; +a.renderSolidSphereMapped=function(b){var c=this.frameWidth,f=this.frameHeight,d=b.indexBuffer,e=b.transformedVertexBuffer,g=b.transformedVertexNormalBuffer,h=b.vertexNormalIndexBuffer?b.vertexNormalIndexBuffer:b.indexBuffer,i=b.transformedFaceNormalZBuffer,m=this.colorBuffer,n=this.zBuffer,t=this.selectionBuffer,j=b.faceCount,y=b.internalId,k=b.material?b.material:this.defaultMaterial,L=k.getPalette(),B=this.sphereMap,H=B.data;B=B.width;var J=B-1,O=k.transparency==0,E=~~(k.transparency*255),u=255- +E,z=b.isDoubleSided||this.isCullingDisabled;if(k.transparency!=1){if(!g||g.length0?q:-q;if(q<0){do;while(d[x++]!=-1)}else{var l,T,v,D,A;q=d[x]*3;v=h[x]*3;x++;l=d[x]*3;D=h[x]*3;x++;do{T=d[x]*3;A=h[x]*3;x++;b[0]=~~(e[q]+0.5);k[0]=~~(e[q+1]+0.5);s[0]=e[q+2];b[1]=~~(e[l]+0.5);k[1]=~~(e[l+1]+0.5);s[1]=e[l+2];b[2]=~~(e[T]+0.5);k[2]=~~(e[T+1]+0.5);s[2]=e[T+2];G[0]=g[v];r[0]=g[v+1];p[0]=g[v+2];G[1]=g[D];r[1]=g[D+1];p[1]=g[D+2];G[2]=g[A];r[2]=g[A+1];p[2]=g[A+2];if(z){if(p[0]<0)p[0]=-p[0];if(p[1]<0)p[1]=-p[1]; +if(p[2]<0)p[2]=-p[2]}l=k[0]k[1]?0:1;o=k[o]>k[2]?o:2;D=3-o-l;if(l!=o){var la=b[o],w=s[o],ra=p[o]*255,ma=(G[o]/2+0.5)*B&J,Q=(0.5-r[o]/2)*B&J,V=k[o]-k[l];V=V!=0?V:1;var F=(b[o]-b[l])/V,sa=(s[o]-s[l])/V,ea=(p[o]-p[l])*255/V,za=(G[o]-G[l])/2*B/V;V=(r[l]-r[o])/2*B/V;var ua=b[o],fa=s[o],Ea=p[o]*255,Da=(G[o]/2+0.5)*B&J,S=(0.5-r[o]/2)*B&J,Z=k[o]-k[D];Z=Z!=0?Z:1;var na=(b[o]-b[D])/Z,oa=(s[o]-s[D])/Z,va=(p[o]-p[D])*255/Z,ja=(G[o]-G[D])/2*B/Z;Z=(r[D]-r[o])/2*B/Z;var ga=b[D], +pa=s[D],ta=p[D]*255,Fa=(G[D]/2+0.5)*B&J,aa=(0.5-r[D]/2)*B&J,ha=k[D]-k[l];ha=ha!=0?ha:1;var wa=(b[D]-b[l])/ha,P=(s[D]-s[l])/ha,U=(p[D]-p[l])*255/ha,ka=(G[D]-G[l])/2*B/ha;ha=(r[l]-r[D])/2*B/ha;var ia=k[o]*c;for(o=k[o];o>k[l];o--){if(o>=0&&ok[D]){W=~~ua;N=fa;ca=Ea;X=Da;da=S}else{W=~~ga;N=pa;ca=ta;X=Fa;da=aa}if(I>W){var R;R=I;I=W;W=R;R=K;K=N;N=R;R=$;$=ca;ca=R;R=ba;ba=X;X=R;R=M;M=da;da=R}N=I!=W?(N-K)/(W-I):1;ca=I!=W?(ca-$)/(W-I):1;X=I!=W?(X-ba)/(W-I): +1;da=I!=W?(da-M)/(W-I):1;if(I<0){K-=I*N;$-=I*ca;ba-=ba*X;M-=M*da;I=0}if(W>=c)W=c-1;R=ia+I;if(O){I=I;K=K;$=$;ba=ba;for(M=M;I<=W;I++,K+=N,$+=ca,ba+=X,M+=da){if(K>n[R]){n[R]=K;var Y=L[$>0?~~$:0],ya=H[(M&J)*B+(ba&J)],Aa=((Y&16711680)>>16)*((ya&16711680)>>8),Ba=((Y&65280)>>8)*((ya&65280)>>8),xa=(Y&255)*(ya&255)>>8;m[R]=4278190080|Aa&16711680|Ba&65280|xa&255;t[R]=y}R++}}else{I=I;K=K;$=$;ba=ba;for(M=M;In[R]){Y=L[$>0?~~$:0];xa=H[(M&J)*B+(ba&J)];ya=m[R];Aa=((Y&16711680)>> +16)*((xa&16711680)>>8);Ba=((Y&65280)>>8)*((xa&65280)>>8);xa=(Y&255)*(xa&255)>>8;Y=(ya|Y)&4278190080;Aa=Aa*u+(ya&16711680)*E>>8;Ba=Ba*u+(ya&65280)*E>>8;xa=xa*u+(ya&255)*E>>8;m[R]=Y|Aa&16711680|Ba&65280|xa&255;t[R]=y}R++}}}la-=F;w-=sa;ra-=ea;ma-=za;Q-=V;if(o>k[D]){ua-=na;fa-=oa;Ea-=va;Da-=ja;S-=Z}else{ga-=wa;pa-=P;ta-=U;Fa-=ka;aa-=ha}ia-=c}}l=T;D=A}while(d[x]!=-1);x++}}}};a.params=null;a.canvas=null;a.ctx2d=null;a.canvasData=null;a.bkgColorBuffer=null;a.colorBuffer=null;a.zBuffer=null; +a.selectionBuffer=null;a.frameWidth=0;a.frameHeight=0;a.scene=null;a.defaultMaterial=null;a.sphereMap=null;a.isLoaded=false;a.isFailed=false;a.needUpdate=false;a.needRepaint=false;a.initRotX=0;a.initRotY=0;a.initRotZ=0;a.zoomFactor=1;a.panning=[0,0];a.rotMatrix=null;a.transformMatrix=null;a.sceneUrl="";a.modelColor=13280792;a.bkgColor1=16777215;a.bkgColor2=16777088;a.renderMode="flat";a.definition="standard";a.isCullingDisabled=false;a.isMipMappingOn=false;a.creaseAngle=-180;a.sphereMapUrl=""; +a.showProgressBar=true;a.buttonStates=null;a.keyStates=null;a.mouseX=0;a.mouseY=0;a.onloadingstarted=null;a.onloadingcomplete=null;a.onloadingprogress=null;a.onloadingaborted=null;a.onloadingerror=null;a.onmousedown=null;a.onmouseup=null;a.onmousemove=null;a.onmousewheel=null;a.onmouseclick=null;a.beforeupdate=null;a.afterupdate=null;a.mouseUsage="default";a.isDefaultInputHandlerEnabled=false;JSC3D.PickInfo=function(){this.canvasY=this.canvasX=0;this.depth=-Infinity;this.mesh=null}; +JSC3D.Scene=function(b){this.name=b||"";this.srcUrl="";this.aabb=null;this.children=[];this.maxChildId=1};a=JSC3D.Scene.prototype;a.init=function(){if(!this.isEmpty()){for(var b=0;b=0&&this.children.splice(b,1)};a.getChildren=function(){return this.children.slice(0)};a.forEachChild=function(b){if(typeof b=="function")for(var c=0;cf)this.aabb.minX=f;if(this.aabb.minY>d)this.aabb.minY=d;if(this.aabb.minZ>e)this.aabb.minZ=e;if(this.aabb.maxX=0?e:-180;this.isDoubleSided=g||false;this.isEnvironmentCast=h||false;this.internalId=0;this.texCoordBuffer=n||null;this.texCoordIndexBuffer=t||null;this.transformedVertexNormalBuffer= this.transformedFaceNormalZBuffer=this.transformedVertexNormalZBuffer=this.transformedVertexBuffer=null};a=JSC3D.Mesh.prototype; a.init=function(){if(!this.isTrivial()){if(this.faceCount==0){this.calcFaceCount();if(this.faceCount==0)return}if(!this.aabb){this.aabb=new JSC3D.AABB;this.calcAABB()}if(!this.faceNormalBuffer){this.faceNormalBuffer=new Array(this.faceCount*3);this.calcFaceNormals()}if(!this.vertexNormalBuffer)if(this.creaseAngle>=0)this.calcCreasedVertexNormals();else{this.vertexNormalBuffer=new Array(this.vertexBuffer.length);this.calcVertexNormals()}this.normalizeFaceNormals();this.transformedVertexBuffer=new Array(this.vertexBuffer.length)}}; a.isTrivial=function(){return!this.vertexBuffer||this.vertexBuffer.length<3||!this.indexBuffer||this.indexBuffer.length<3};a.setMaterial=function(b){this.material=b};a.setTexture=function(b){this.texture=b};a.hasTexture=function(){return this.texture!=null&&this.texture.hasData()&&this.texCoordBuffer!=null&&this.texCoordBuffer.length>=2&&(this.texCoordIndexBuffer==null||this.texCoordIndexBuffer.length>=3&&this.texCoordIndexBuffer.length>=this.indexBuffer.length)}; a.setRenderMode=function(b){this.renderMode=b};a.calcFaceCount=function(){this.faceCount=0;var b=this.indexBuffer;b[b.length-1]!=-1&&b.push(-1);for(var c=0;cc)c=f;if(gmaxY)maxY=g;if(hmaxZ)maxZ=h}this.aabb.minX=b;this.aabb.minY=minY;this.aabb.minZ=minZ;this.aabb.maxX=c;this.aabb.maxY=maxY;this.aabb.maxZ=maxZ}; -a.calcFaceNormals=function(){for(var b=this.vertexBuffer,c=this.indexBuffer,e=this.faceNormalBuffer,d=0,f=0;d=0){e+=3;var h=c[g];if(h)h.push(f);else c[g]=[f]}else f++}f=this.faceNormalBuffer;var i=new Array(f.length);JSC3D.Math3D.normalizeVectors(f,i);if(!this.vertexNormalBuffer||this.vertexNormalBuffer.length=0){var B=u*3;h=j*3;e[B]+=f[h];e[B+1]+=f[h+1];e[B+2]+=f[h+2];var m=i[h],M=i[h+1],H=i[h+2];h=c[g];for(g=0;go){e[B]+=f[x];e[B+1]+=f[x+1];e[B+2]+=f[x+2]}}}l.push(u++)}else{j++;l.push(-1)}}JSC3D.Math3D.normalizeVectors(e,e)};a.checkValid=function(){};a.name="";a.metadata=""; +a.calcAABB=function(){for(var b=minY=minZ=Infinity,c=maxY=maxZ=-Infinity,f=this.vertexBuffer,d=0;dc)c=e;if(gmaxY)maxY=g;if(hmaxZ)maxZ=h}this.aabb.minX=b;this.aabb.minY=minY;this.aabb.minZ=minZ;this.aabb.maxX=c;this.aabb.maxY=maxY;this.aabb.maxZ=maxZ}; +a.calcFaceNormals=function(){for(var b=this.vertexBuffer,c=this.indexBuffer,f=this.faceNormalBuffer,d=0,e=0;d=0){f+=3;var h=c[g];if(h)h.push(e);else c[g]=[e]}else e++}e=this.faceNormalBuffer;var i=new Array(e.length);JSC3D.Math3D.normalizeVectors(e,i);if(!this.vertexNormalBuffer||this.vertexNormalBuffer.length=0){var y=t*3;h=j*3;f[y]+=e[h];f[y+1]+=e[h+1];f[y+2]+=e[h+2];var k=i[h],L=i[h+1],B=i[h+2];h=c[g];for(g=0;gn){f[y]+=e[H];f[y+1]+=e[H+1];f[y+2]+=e[H+2]}}}m.push(t++)}else{j++;m.push(-1)}}JSC3D.Math3D.normalizeVectors(f,f)};a.checkValid=function(){};a.name="";a.metadata=""; a.visible=false;a.renderMode="flat";a.aabb=null;a.vertexBuffer=null;a.indexBuffer=null;a.vertexNormalBuffer=null;a.vertexNormalIndexBuffer=null;a.faceNormalBuffer=null;a.texCoordBuffer=null;a.texCoordIndexBuffer=null;a.material=null;a.texture=null;a.faceCount=0;a.creaseAngle=-180;a.isDoubleSided=false;a.isEnvironmentCast=false;a.internalId=0;a.transformedVertexBuffer=null;a.transformedVertexNormalZBuffer=null;a.transformedFaceNormalZBuffer=null;a.transformedVertexNormalBuffer=null; -JSC3D.Material=function(b,c,e,d,f){this.name=b||"";this.ambientColor=c||0;this.diffuseColor=e||8355711;this.transparency=d||0;this.simulateSpecular=f||false;this.palette=null};a=JSC3D.Material.prototype;a.getPalette=function(){if(!this.palette){this.palette=new Array(256);this.generatePalette()}return this.palette}; -a.generatePalette=function(){var b=(this.ambientColor&16711680)>>16,c=(this.ambientColor&65280)>>8,e=this.ambientColor&255,d=(this.diffuseColor&16711680)>>16,f=(this.diffuseColor&65280)>>8,g=this.diffuseColor&255;if(this.simulateSpecular){for(var h=0;h<204;){var i=b+h*d/204,l=c+h*f/204,o=e+h*g/204;if(i>255)i=255;if(l>255)l=255;if(o>255)o=255;this.palette[h++]=i<<16|l<<8|o}for(;h<256;){i=b+d+(h-204)*(255-d)/82;l=c+f+(h-204)*(255-f)/82;o=e+g+(h-204)*(255-g)/82;if(i>255)i=255;if(l>255)l=255;if(o>255)o= -255;this.palette[h++]=i<<16|l<<8|o}}else for(h=0;h<256;){i=b+h*d/256;l=c+h*f/256;o=e+h*g/256;if(i>255)i=255;if(l>255)l=255;if(o>255)o=255;this.palette[h++]=i<<16|l<<8|o}};a.name="";a.ambientColor=0;a.diffuseColor=8355711;a.transparency=0;a.simulateSpecular=false;a.palette=null;JSC3D.Texture=function(b,c){this.name=b||"";this.height=this.width=0;this.mipentries=this.mipmaps=this.data=null;this.hasTransparency=false;this.srcUrl="";this.onready=c&&typeof c=="function"?c:null};a=JSC3D.Texture.prototype; -a.createFromUrl=function(b,c){var e=this,d=new Image;d.onload=function(){e.data=null;e.mipmaps=null;e.mipentries=null;e.width=0;e.height=0;e.hasTransparency=false;e.srcUrl="";e.createFromImage(this,c);JSC3D.console&&JSC3D.console.logInfo('Finished loading texture image file "'+this.src+'".')};d.onerror=function(){e.data=null;e.mipmaps=null;e.mipentries=null;e.width=0;e.height=0;e.hasTransparency=false;e.srcUrl="";JSC3D.console&&JSC3D.console.logWarning('Failed to load texture image file "'+this.src+ -'". This texture will be discarded.')};d.src=b}; -a.createFromImage=function(b,c){if(!(b.width<=0||b.height<=0)){var e=false,d=JSC3D.Texture.cv;if(!d)try{d=document.createElement("canvas");JSC3D.Texture.cv=d;e=true}catch(f){return}var g=b.width>b.height?b.width:b.height;g=g<=32?32:g<=64?64:g<=128?128:g<=256?256:g<=512?512:1024;if(d.width!=g||d.height!=g){d.width=d.height=g;e=true}var h;try{var i=d.getContext("2d");e||i.clearRect(0,0,g,g);i.drawImage(b,0,0,g,g);h=i.getImageData(0,0,g,g).data}catch(l){return}e=h.length/4;this.data=new Array(e);for(var o= -i=0;i>1,e=1;e>>2)+((j&4278190080)>>>2)+((B&4278190080)>>>2)+((m&4278190080)>>>2)&4278190080)+((u&16711680)+(j&16711680)+(B&16711680)+(m&16711680)>> -2&16711680)+((u&65280)+(j&65280)+(B&65280)+(m&65280)>>2&65280)+((u&255)+(j&255)+(B&255)+(m&255)>>2&255);h+=2;i++}h+=g}this.mipmaps.push(d);this.mipentries.push(Math.pow(4,e));c>>=1}}};a.hasMipmap=function(){return this.mipmaps!=null};a.name="";a.data=null;a.mipmaps=null;a.mipentries=null;a.width=0;a.height=0;a.hasTransparency=false;a.srcUrl="";a.onready=null;JSC3D.Texture.cv=null;JSC3D.AABB=function(){this.minZ=this.maxZ=this.minY=this.maxY=this.minX=this.maxX=0}; -JSC3D.AABB.prototype.center=function(){return[(this.minX+this.maxX)/2,(this.minY+this.maxY)/2,(this.minZ+this.maxZ)/2]};JSC3D.AABB.prototype.lengthOfDiagonal=function(){var b=this.maxX-this.minX,c=this.maxY-this.minY,e=this.maxZ-this.minZ;return Math.sqrt(b*b+c*c+e*e)};JSC3D.Matrix3x4=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a=JSC3D.Matrix3x4.prototype; -a.identity=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a.scale=function(b,c,e){this.m00*=b;this.m01*=b;this.m02*=b;this.m03*=b;this.m10*=c;this.m11*=c;this.m12*=c;this.m13*=c;this.m20*=e;this.m21*=e;this.m22*=e;this.m23*=e};a.translate=function(b,c,e){this.m03+=b;this.m13+=c;this.m23+=e}; -a.rotateAboutXAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var e=c*this.m11-b*this.m21,d=c*this.m12-b*this.m22,f=c*this.m13-b*this.m23,g=c*this.m20+b*this.m10,h=c*this.m21+b*this.m11,i=c*this.m22+b*this.m12,l=c*this.m23+b*this.m13;this.m10=c*this.m10-b*this.m20;this.m11=e;this.m12=d;this.m13=f;this.m20=g;this.m21=h;this.m22=i;this.m23=l}}; -a.rotateAboutYAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var e=c*this.m01+b*this.m21,d=c*this.m02+b*this.m22,f=c*this.m03+b*this.m23,g=c*this.m20-b*this.m00,h=c*this.m21-b*this.m01,i=c*this.m22-b*this.m02,l=c*this.m23-b*this.m03;this.m00=c*this.m00+b*this.m20;this.m01=e;this.m02=d;this.m03=f;this.m20=g;this.m21=h;this.m22=i;this.m23=l}}; -a.rotateAboutZAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var e=c*this.m10+b*this.m00,d=c*this.m11+b*this.m01,f=c*this.m12+b*this.m02,g=c*this.m13+b*this.m03,h=c*this.m01-b*this.m11,i=c*this.m02-b*this.m12,l=c*this.m03-b*this.m13;this.m00=c*this.m00-b*this.m10;this.m01=h;this.m02=i;this.m03=l;this.m10=e;this.m11=d;this.m12=f;this.m13=g}}; -a.multiply=function(b){var c=b.m00*this.m01+b.m01*this.m11+b.m02*this.m21,e=b.m00*this.m02+b.m01*this.m12+b.m02*this.m22,d=b.m00*this.m03+b.m01*this.m13+b.m02*this.m23+b.m03,f=b.m10*this.m00+b.m11*this.m10+b.m12*this.m20,g=b.m10*this.m01+b.m11*this.m11+b.m12*this.m21,h=b.m10*this.m02+b.m11*this.m12+b.m12*this.m22,i=b.m10*this.m03+b.m11*this.m13+b.m12*this.m23+b.m13,l=b.m20*this.m00+b.m21*this.m10+b.m22*this.m20,o=b.m20*this.m01+b.m21*this.m11+b.m22*this.m21,u=b.m20*this.m02+b.m21*this.m12+b.m22*this.m22, -j=b.m20*this.m03+b.m21*this.m13+b.m22*this.m23+b.m23;this.m00=b.m00*this.m00+b.m01*this.m10+b.m02*this.m20;this.m01=c;this.m02=e;this.m03=d;this.m10=f;this.m11=g;this.m12=h;this.m13=i;this.m20=l;this.m21=o;this.m22=u;this.m23=j}; -JSC3D.Math3D={transformVectors:function(b,c,e){for(var d=0;d0){i=1/i;f*=i;g*=i;h*=i}c[d]=f;c[d+ -1]=g;c[d+2]=h}}}; -JSC3D.PlatformInfo=function(){for(var b={browser:"other",version:"n/a",isTouchDevice:document.createTouch!=undefined,supportTypedArrays:window.Uint32Array!=undefined,supportWebGL:window.WebGLRenderingContext!=undefined},c=[["firefox",/Firefox[\/\s](\d+(?:\.\d+)*)/],["chrome",/Chrome[\/\s](\d+(?:\.\d+)*)/],["opera",/Opera[\/\s](\d+(?:\.\d+)*)/],["safari",/Safari[\/\s](\d+(?:\.\d+)*)/],["webkit",/AppleWebKit[\/\s](\d+(?:\.\d+)*)/],["ie",/MSIE[\/\s](\d+(?:\.\d+)*)/],["ie",/Trident\/\d+\.\d+;\s.*rv:(\d+(?:\.\d+)*)/]],e, -d=0;d=this.data.length)return false;this.offset=b;return true};a.reset=function(){this.offset=0}; +JSC3D.Material=function(b,c,f,d,e){this.name=b||"";this.diffuseColor=f||8355711;this.ambientColor=typeof c=="number"?c:(this.diffuseColor&16711680)>>3&16711680|(this.diffuseColor&65280)>>3&65280|(this.diffuseColor&255)>>3;this.transparency=d||0;this.simulateSpecular=e||false;this.palette=null};a=JSC3D.Material.prototype;a.getPalette=function(){if(!this.palette){this.palette=new Array(256);this.generatePalette()}return this.palette}; +a.generatePalette=function(){var b=(this.ambientColor&16711680)>>16,c=(this.ambientColor&65280)>>8,f=this.ambientColor&255,d=(this.diffuseColor&16711680)>>16,e=(this.diffuseColor&65280)>>8,g=this.diffuseColor&255;if(this.simulateSpecular){for(var h=0;h<204;){var i=Math.max(b,h*d/204),m=Math.max(c,h*e/204),n=Math.max(f,h*g/204);if(i>255)i=255;if(m>255)m=255;if(n>255)n=255;this.palette[h++]=i<<16|m<<8|n}for(;h<256;){i=Math.max(b,d+(h-204)*(255-d)/82);m=Math.max(c,e+(h-204)*(255-e)/82);n=Math.max(f, +g+(h-204)*(255-g)/82);if(i>255)i=255;if(m>255)m=255;if(n>255)n=255;this.palette[h++]=i<<16|m<<8|n}}else for(h=0;h<256;){i=Math.max(b,h*d/256);m=Math.max(c,h*e/256);n=Math.max(f,h*g/256);if(i>255)i=255;if(m>255)m=255;if(n>255)n=255;this.palette[h++]=i<<16|m<<8|n}};a.name="";a.ambientColor=0;a.diffuseColor=8355711;a.transparency=0;a.simulateSpecular=false;a.palette=null; +JSC3D.Texture=function(b,c){this.name=b||"";this.height=this.width=0;this.mipentries=this.mipmaps=this.data=null;this.hasTransparency=false;this.srcUrl="";this.onready=c&&typeof c=="function"?c:null};a=JSC3D.Texture.prototype; +a.createFromUrl=function(b,c){var f=this,d=new Image;d.onload=function(){f.data=null;f.mipmaps=null;f.mipentries=null;f.width=0;f.height=0;f.hasTransparency=false;f.srcUrl="";f.createFromImage(this,c);JSC3D.console&&JSC3D.console.logInfo('Finished loading texture image file "'+this.src+'".')};d.onerror=function(){f.data=null;f.mipmaps=null;f.mipentries=null;f.width=0;f.height=0;f.hasTransparency=false;f.srcUrl="";JSC3D.console&&JSC3D.console.logWarning('Failed to load texture image file "'+this.src+ +'". This texture will be discarded.')};d.crossOrigin="anonymous";d.src=encodeURI(b)}; +a.createFromImage=function(b,c){if(!(b.width<=0||b.height<=0)){var f=false,d=JSC3D.Texture.cv;if(!d)try{d=document.createElement("canvas");JSC3D.Texture.cv=d;f=true}catch(e){return}var g=b.width>b.height?b.width:b.height;g=g<=16?16:g<=32?32:g<=64?64:g<=128?128:g<=256?256:g<=512?512:1024;if(d.width!=g||d.height!=g){d.width=d.height=g;f=true}var h;try{var i=d.getContext("2d");f||i.clearRect(0,0,g,g);i.drawImage(b,0,0,g,g);h=i.getImageData(0,0,g,g).data}catch(m){return}f=h.length/4;this.data=new Array(f); +for(var n=i=0;i>1,f=1;f>>2)+((j&4278190080)>>>2)+((y&4278190080)>>>2)+((k&4278190080)>>>2)&4278190080)+((t&16711680)+(j&16711680)+(y&16711680)+(k&16711680)>> +2&16711680)+((t&65280)+(j&65280)+(y&65280)+(k&65280)>>2&65280)+((t&255)+(j&255)+(y&255)+(k&255)>>2&255);h+=2;i++}h+=g}this.mipmaps.push(d);this.mipentries.push(Math.pow(4,f));c>>=1}}};a.hasMipmap=function(){return this.mipmaps!=null};a.name="";a.data=null;a.mipmaps=null;a.mipentries=null;a.width=0;a.height=0;a.hasTransparency=false;a.srcUrl="";a.onready=null;JSC3D.Texture.cv=null;JSC3D.AABB=function(){this.maxZ=this.maxY=this.maxX=this.minZ=this.minY=this.minX=0}; +JSC3D.AABB.prototype.center=function(b){if(b){b[0]=0.5*(this.minX+this.maxX);b[1]=0.5*(this.minY+this.maxY);b[2]=0.5*(this.minZ+this.maxZ)}else b=[0.5*(this.minX+this.maxX),0.5*(this.minY+this.maxY),0.5*(this.minZ+this.maxZ)];return b};JSC3D.AABB.prototype.lengthOfDiagonal=function(){var b=this.maxX-this.minX,c=this.maxY-this.minY,f=this.maxZ-this.minZ;return Math.sqrt(b*b+c*c+f*f)}; +JSC3D.Matrix3x4=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a=JSC3D.Matrix3x4.prototype;a.identity=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a.scale=function(b,c,f){this.m00*=b;this.m01*=b;this.m02*=b;this.m03*=b;this.m10*=c;this.m11*=c;this.m12*=c;this.m13*=c;this.m20*=f;this.m21*=f;this.m22*=f;this.m23*=f}; +a.translate=function(b,c,f){this.m03+=b;this.m13+=c;this.m23+=f};a.rotateAboutXAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m11-b*this.m21,d=c*this.m12-b*this.m22,e=c*this.m13-b*this.m23,g=c*this.m20+b*this.m10,h=c*this.m21+b*this.m11,i=c*this.m22+b*this.m12,m=c*this.m23+b*this.m13;this.m10=c*this.m10-b*this.m20;this.m11=f;this.m12=d;this.m13=e;this.m20=g;this.m21=h;this.m22=i;this.m23=m}}; +a.rotateAboutYAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m01+b*this.m21,d=c*this.m02+b*this.m22,e=c*this.m03+b*this.m23,g=c*this.m20-b*this.m00,h=c*this.m21-b*this.m01,i=c*this.m22-b*this.m02,m=c*this.m23-b*this.m03;this.m00=c*this.m00+b*this.m20;this.m01=f;this.m02=d;this.m03=e;this.m20=g;this.m21=h;this.m22=i;this.m23=m}}; +a.rotateAboutZAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m10+b*this.m00,d=c*this.m11+b*this.m01,e=c*this.m12+b*this.m02,g=c*this.m13+b*this.m03,h=c*this.m01-b*this.m11,i=c*this.m02-b*this.m12,m=c*this.m03-b*this.m13;this.m00=c*this.m00-b*this.m10;this.m01=h;this.m02=i;this.m03=m;this.m10=f;this.m11=d;this.m12=e;this.m13=g}}; +a.multiply=function(b){var c=b.m00*this.m01+b.m01*this.m11+b.m02*this.m21,f=b.m00*this.m02+b.m01*this.m12+b.m02*this.m22,d=b.m00*this.m03+b.m01*this.m13+b.m02*this.m23+b.m03,e=b.m10*this.m00+b.m11*this.m10+b.m12*this.m20,g=b.m10*this.m01+b.m11*this.m11+b.m12*this.m21,h=b.m10*this.m02+b.m11*this.m12+b.m12*this.m22,i=b.m10*this.m03+b.m11*this.m13+b.m12*this.m23+b.m13,m=b.m20*this.m00+b.m21*this.m10+b.m22*this.m20,n=b.m20*this.m01+b.m21*this.m11+b.m22*this.m21,t=b.m20*this.m02+b.m21*this.m12+b.m22*this.m22, +j=b.m20*this.m03+b.m21*this.m13+b.m22*this.m23+b.m23;this.m00=b.m00*this.m00+b.m01*this.m10+b.m02*this.m20;this.m01=c;this.m02=f;this.m03=d;this.m10=e;this.m11=g;this.m12=h;this.m13=i;this.m20=m;this.m21=n;this.m22=t;this.m23=j}; +JSC3D.Math3D={transformVectors:function(b,c,f){for(var d=0;d0){i=1/i;e*=i;g*=i;h*=i}c[d]=e;c[d+ +1]=g;c[d+2]=h}}};JSC3D.Util={ieXHRResponseBodyToString:function(b){b=(new VBArray(b)).toArray();for(var c="",f=0;f=this.data.length)return false;this.offset=b;return true};a.reset=function(){this.offset=0}; a.skip=function(b){if(this.offset+b>this.data.length)this.offset=this.data.length;else this.offset+=b};a.available=function(){return this.data.length-this.offset};a.eof=function(){return!(this.offsetthis.data.length)e=this.data.length-this.offset;for(c=0;cthis.data.length){this.offset=this.data.length;return NaN}for(var e=0,d=1,f=0;fthis.data.length){this.offset=this.data.length;return NaN}var e=b*8-c-1,d=(1<>1,g=b-1,h=this.data[this.offset+g].charCodeAt(0)&255;g+=-1;var i=-7,l=h&(1<<-i)-1;h>>=-i;for(i+=e;i>0;){l=l*256+(this.data[this.offset+g].charCodeAt(0)&255);g+=-1;i-=8}e=l&(1<<-i)-1;l>>=-i;for(i+=c;i>0;){e=e*256+(this.data[this.offset+g].charCodeAt(0)&255);g+=-1;i-=8}this.offset+=b;switch(l){case 0:l=1-f;break;case d:return e?NaN:(h?-1:1)*Infinity;default:e+=Math.pow(2, -c);l-=f;break}return(h?-1:1)*e*Math.pow(2,l-c)};JSC3D.LoaderSelector={registerLoader:function(b,c){if(typeof c=="function")JSC3D.LoaderSelector.loaderTable[b]=c},getLoader:function(b){b=JSC3D.LoaderSelector.loaderTable[b.toLowerCase()];if(!b)return null;var c;try{c=new b}catch(e){c=null}return c},loaderTable:{}}; -JSC3D.ObjLoader=function(b,c,e,d){this.onload=b&&typeof b=="function"?b:null;this.onerror=c&&typeof c=="function"?c:null;this.onprogress=e&&typeof e=="function"?e:null;this.onresource=d&&typeof d=="function"?d:null;this.requestCount=0;this.requests=[]};a=JSC3D.ObjLoader.prototype;a.loadFromUrl=function(b){var c="",e=b,d=b.lastIndexOf("/");if(d==-1)d=b.lastIndexOf("\\");if(d!=-1){c=b.substring(0,d+1);e=b.substring(d+1)}this.requestCount=0;this.loadObjFile(c,e)}; -a.abort=function(){for(var b=0;b0)for(var h=0;h0)switch(i[0]){case "v":if(i.length>3)for(var B=1;B<4;B++)l.push(parseFloat(i[B]));break;case "vn":break;case "vt":if(i.length>2){o.push(parseFloat(i[1]));o.push(1-parseFloat(i[2]))}break;case "f":if(i.length>3){for(B=1;B1)if(m[1]!=""){if(!g.texCoordIndexBuffer)g.texCoordIndexBuffer=[];g.texCoordIndexBuffer.push(parseInt(m[1])-1)}else if(m.length<3||m[2]==""){if(!g.texCoordIndexBuffer)g.texCoordIndexBuffer=[];g.texCoordIndexBuffer.push(M)}}g.indexBuffer.push(-1);g.texCoordIndexBuffer&&g.texCoordIndexBuffer.push(-1)}break;case "mtllib":if(i.length>1){h=i[1];d.push(h)}else h="";break;case "usemtl":if(i.length>1&&i[1]!=""&&h!=""){i=i[1];B=h+"-"+i;g=e[B];if(!g){g=new JSC3D.Mesh;g.name= -"obj-"+f++;g.indexBuffer=[];g.mtllib=h;g.mtl=i;e[B]=g}g=g}else g=u;break;case "#":default:break}}f=l.length>=3?new Array(l.length/3):null;h=o.length>=2?new Array(o.length/2):null;for(var H in e){g=e[H];if(l.length>=3&&g.indexBuffer.length>0){for(c=0;c=2&&g.texCoordIndexBuffer!=null&&g.texCoordIndexBuffer.length>0){for(c=0;c0)switch(f[0]){case "newmtl":e=f[1];f={};f.material=new JSC3D.Material;f.textureFileName="";c[e]=f;break;case "Ka":break;case "Kd":if(f.length==4&&!isNaN(f[1])){var g=parseFloat(f[1])*255&255,h=parseFloat(f[2])*255&255,i=parseFloat(f[3])*255&255;f=c[e];if(f!=null)f.material.diffuseColor=g<<16|h<<8|i}break;case "Ks":break;case "d":if(f.length==2&&!isNaN(f[1])){g=parseFloat(f[1]); -f=c[e];if(f!=null)f.material.transparency=1-g}break;case "illum":break;case "map_Kd":if(f.length==2){g=f[1];f=c[e];if(f!=null)f.textureFileName=g}break;case "#":default:break}}return c};a.setupTexture=function(b,c){var e=this,d=new JSC3D.Texture;d.onready=function(){for(var f=0;f127){d=true;break}if(JSC3D.console)JSC3D.console.logInfo("This is recognised as "+(d?"a binary":"an ASCII")+" STL file.");if(d){f.reset();f.skip(80);d=f.readUInt32();c=84+50*d;if(f.size()this.data.length)f=this.data.length-this.offset;for(c=0;cthis.data.length){this.offset=this.data.length;return NaN}for(var f=0,d=1,e=0;ethis.data.length){this.offset=this.data.length;return NaN}var f=b*8-c-1,d=(1<>1,g=b-1,h=this.data[this.offset+g].charCodeAt(0)&255;g+=-1;var i=-7,m=h&(1<<-i)-1;h>>=-i;for(i+=f;i>0;){m=m*256+(this.data[this.offset+g].charCodeAt(0)&255);g+=-1;i-=8}f=m&(1<<-i)-1;m>>=-i;for(i+=c;i>0;){f=f*256+(this.data[this.offset+g].charCodeAt(0)&255);g+=-1;i-=8}this.offset+=b;switch(m){case 0:m=1-e;break;case d:return f?NaN:(h?-1:1)*Infinity;default:f+=Math.pow(2, +c);m-=e;break}return(h?-1:1)*f*Math.pow(2,m-c)};JSC3D.LoaderSelector={registerLoader:function(b,c){if(typeof c=="function")JSC3D.LoaderSelector.loaderTable[b]=c},getLoader:function(b){b=JSC3D.LoaderSelector.loaderTable[b.toLowerCase()];if(!b)return null;var c;try{c=new b}catch(f){c=null}return c},loaderTable:{}}; +JSC3D.ObjLoader=function(b,c,f,d){this.onload=b&&typeof b=="function"?b:null;this.onerror=c&&typeof c=="function"?c:null;this.onprogress=f&&typeof f=="function"?f:null;this.onresource=d&&typeof d=="function"?d:null;this.requestCount=0;this.requests=[]};a=JSC3D.ObjLoader.prototype; +a.loadFromUrl=function(b){var c="",f=b,d="",e=b.indexOf("?");if(e>=0){d=b.substring(e);f=b=b.substring(0,e)}e=b.lastIndexOf("/");if(e==-1)e=b.lastIndexOf("\\");if(e!=-1){c=b.substring(0,e+1);f=b.substring(e+1)}this.requestCount=0;this.loadObjFile(c,f,d)};a.abort=function(){for(var b=0;b0)for(var i=0;i0)switch(i[0]){case "v":if(i.length>3)for(var y=1;y<4;y++)m.push(parseFloat(i[y]));break;case "vn":break;case "vt":if(i.length>2){n.push(parseFloat(i[1]));n.push(1-parseFloat(i[2]))}break;case "f":if(i.length>3){for(y=1;y1)if(k[1]!=""){if(!g.texCoordIndexBuffer)g.texCoordIndexBuffer=[];g.texCoordIndexBuffer.push(parseInt(k[1])-1)}else if(k.length<3||k[2]==""){if(!g.texCoordIndexBuffer)g.texCoordIndexBuffer=[];g.texCoordIndexBuffer.push(L)}}g.indexBuffer.push(-1);g.texCoordIndexBuffer&&g.texCoordIndexBuffer.push(-1)}break;case "mtllib":if(i.length>1){h=i[1];d.push(h)}else h="";break;case "usemtl":if(i.length>1&&i[1]!=""&&h!=""){i=i[1];y=h+"-"+i;g=f[y];if(!g){g=new JSC3D.Mesh;g.name= +"obj-"+e++;g.indexBuffer=[];g.mtllib=h;g.mtl=i;f[y]=g}g=g}else g=t;break;case "#":default:break}}e=m.length>=3?new Array(m.length/3):null;h=n.length>=2?new Array(n.length/2):null;for(var B in f){g=f[B];if(m.length>=3&&g.indexBuffer.length>0){for(c=0;c=2&&g.texCoordIndexBuffer!=null&&g.texCoordIndexBuffer.length>0){for(c=0;c0)switch(e[0]){case "newmtl":f=e[1];e={};e.material=new JSC3D.Material;e.material.name=f;e.textureFileName="";c[f]=e;break;case "Ka":case "ka":break;case "Kd":case "kd":if(e.length==4&&!isNaN(e[1])){var g=parseFloat(e[1])*255&255,h=parseFloat(e[2])*255&255,i=parseFloat(e[3])*255&255;e=c[f];if(e!=null)e.material.diffuseColor=g<<16|h<<8|i}break;case "Ks":case "ks":break; +case "d":if(e.length==2&&!isNaN(e[1])){g=parseFloat(e[1]);e=c[f];if(e!=null)e.material.transparency=1-g}break;case "illum":break;case "map_Kd":case "map_kd":if(e.length==2){g=e[1];e=c[f];if(e!=null)e.textureFileName=g}break;case "#":default:break}}return c};a.setupTexture=function(b,c){var f=this,d=new JSC3D.Texture;d.onready=function(){for(var e=0;e127){d=true;break}if(JSC3D.console)JSC3D.console.logInfo("This is recognised as "+(d?"a binary":"an ASCII")+" STL file.");if(d){e.reset();e.skip(80);d=e.readUInt32();c=84+50*d;if(e.size()File Index
-

jsc3d.js

+

..\jsc3d.js

@@ -241,7 +241,7 @@

jsc3d.js

- Documentation generated by JsDoc Toolkit 2.1.0 on Thu Nov 20 2014 00:20:57 GMT+0800 (CST) + Documentation generated by JsDoc Toolkit 2.1.0 on Wed Sep 16 2015 21:31:50 GMT+0200 (CEST)
\ No newline at end of file diff --git a/jsc3d/docs/index.html b/jsc3d/docs/index.html index 9674309..080cb3d 100644 --- a/jsc3d/docs/index.html +++ b/jsc3d/docs/index.html @@ -8,176 +8,176 @@ -