From 8e43a46e3d79323fe06dc7771bc611a2c3c85c5c Mon Sep 17 00:00:00 2001 From: hwc487 Date: Mon, 30 Jan 2012 16:15:12 -0800 Subject: Renderer startup handling of non-animated materials. Changed zoom from the document bar to keep the location center of the viewable portion of the document fixed. --- js/controllers/elements/canvas-controller.js | 8 ++++ js/helper-classes/RDGE/GLWorld.js | 10 ++++- js/helper-classes/RDGE/Materials/FlatMaterial.js | 2 +- .../RDGE/Materials/LinearGradientMaterial.js | 2 +- .../RDGE/Materials/RadialGradientMaterial.js | 2 +- js/stage/stage.reel/stage.js | 51 +++++++++++++++------- 6 files changed, 55 insertions(+), 20 deletions(-) (limited to 'js') diff --git a/js/controllers/elements/canvas-controller.js b/js/controllers/elements/canvas-controller.js index 7af7e824..b5df3911 100644 --- a/js/controllers/elements/canvas-controller.js +++ b/js/controllers/elements/canvas-controller.js @@ -33,5 +33,13 @@ exports.CanvasController = Montage.create(ElementController, { ElementController.setProperty(el, p, value); } } + }, + + setProperties: { + value: function(el, props, index) { + for(var p in props) { + el.elementModel.controller.setProperty(el, p, props[p][index]); + } + } } }); \ No newline at end of file diff --git a/js/helper-classes/RDGE/GLWorld.js b/js/helper-classes/RDGE/GLWorld.js index dd9b6977..b84bb585 100644 --- a/js/helper-classes/RDGE/GLWorld.js +++ b/js/helper-classes/RDGE/GLWorld.js @@ -248,9 +248,17 @@ function GLWorld( canvas, use3D ) if (!this.hasAnimatedMaterials()) { this.myScene.render(); - this._canvas.task.stop(); + //this._canvas.task.stop(); + this._renderCount = 3; } } + else if (this._renderCount >= 0) + { + this._renderCount--; + if (this._renderCount == 0) + this._canvas.task.stop(); + } + } } else diff --git a/js/helper-classes/RDGE/Materials/FlatMaterial.js b/js/helper-classes/RDGE/Materials/FlatMaterial.js index db66ca42..f342eef8 100644 --- a/js/helper-classes/RDGE/Materials/FlatMaterial.js +++ b/js/helper-classes/RDGE/Materials/FlatMaterial.js @@ -29,7 +29,7 @@ function FlatMaterial() this.getColor = function() { return this._color; } this.getShaderName = function() { return this._shaderName; } - this.isAnimated = function() { return true; } + this.isAnimated = function() { return false; } //////////////////////////////////s///////////////////////////////////// // Methods diff --git a/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js b/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js index f026cd15..ce965296 100644 --- a/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js +++ b/js/helper-classes/RDGE/Materials/LinearGradientMaterial.js @@ -98,7 +98,7 @@ function LinearGradientMaterial() this._shader.default.u_cos_sin_angle.set([Math.cos(a), Math.sin(a)]); } - this.isAnimated = function() { return true; } + this.isAnimated = function() { return false; } /////////////////////////////////////////////////////////////////////// // Material Property Accessors diff --git a/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js b/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js index 5f912dec..cf91f1aa 100644 --- a/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js +++ b/js/helper-classes/RDGE/Materials/RadialGradientMaterial.js @@ -92,7 +92,7 @@ function RadialGradientMaterial() this._shader.default.u_colorCount.set([c]); } - this.isAnimated = function() { return true; } + this.isAnimated = function() { return false; } /////////////////////////////////////////////////////////////////////// diff --git a/js/stage/stage.reel/stage.js b/js/stage/stage.reel/stage.js index 3e0b852e..92ab4033 100644 --- a/js/stage/stage.reel/stage.js +++ b/js/stage/stage.reel/stage.js @@ -787,14 +787,9 @@ exports.Stage = Montage.create(Component, { var userContent = this.application.ninja.currentDocument.documentRoot; if (userContent) { - var w = userContent.offsetWidth, - h = userContent.offsetHeight; - if(userContent.width) - w = userContent.width; - if(userContent.height) - h = userContent.height; - var localPt = [ w/2, h/2, 0]; - var globalPt = this.stageDeps.viewUtils.localToGlobal( localPt, userContent ); + var w = this._canvas.width, + h = this._canvas.height; + var globalPt = [w/2, h/2, 0]; this.stageDeps.viewUtils.setStageZoom( globalPt, value/100 ); @@ -811,6 +806,36 @@ exports.Stage = Montage.create(Component, { } }, + getPlaneForView: + { + value: function( side ) + { + var plane = [0,0,1,0]; + switch(side) + { + case "top": + plane[1] = 1; + plane[3] = this.application.ninja.currentDocument.documentRoot.offsetHeight / 2.0; + break; + + case "side": + plane[0] = 1; + plane[3] = this.application.ninja.currentDocument.documentRoot.offsetWidth / 2.0; + break; + + case "front": + plane = [0,0,1,0]; + break; + + default: + console.log( "unrecognized view in snapManager.getPlaneForView: " + side ); + break; + } + + return plane; + } + }, + setStageView: { value: function(side) { var mat, @@ -821,32 +846,26 @@ exports.Stage = Montage.create(Component, { currentDoc.elementModel.props3D.ResetRotationValues(); - switch(side) { + switch(side){ case "top": mat = Matrix.RotationX(Math.PI * 270.0/180.0); - drawUtils.drawXY = drawUtils.drawYZ = false; drawUtils.drawXZ = drawUtils.isDrawingGrid(); - workingPlane = [0,1,0,0]; break; case "side": mat = Matrix.RotationY(Math.PI * 270/180); - drawUtils.drawXY = drawUtils.drawXZ = false; drawUtils.drawYZ = drawUtils.isDrawingGrid(); - workingPlane = [1,0,0,0]; break; case "front": mat = Matrix.I(4); - drawUtils.drawYZ = drawUtils.drawXZ = false; drawUtils.drawXY = drawUtils.isDrawingGrid(); - workingPlane = [0,0,1,0]; break; } - + workingPlane = this.getPlaneForView( side ); this.stageDeps.viewUtils.setMatrixForElement(currentDoc, mat, false); -- cgit v1.2.3