diff options
63 files changed, 1325 insertions, 799 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js index a35f473d..ee9f24a4 100644 --- a/assets/canvas-runtime.js +++ b/assets/canvas-runtime.js | |||
@@ -121,13 +121,12 @@ NinjaCvsRt.GLRuntime = function ( canvas, jObj, assetPath ) | |||
121 | // all "live" materials | 121 | // all "live" materials |
122 | this._materials = []; | 122 | this._materials = []; |
123 | 123 | ||
124 | // provide the mapping for the asset directory | 124 | // provide the mapping for the asset directory |
125 | if (assetPath) | 125 | if (assetPath) { |
126 | { | 126 | this._assetPath = assetPath.slice(); |
127 | this._assetPath = assetPath.slice(); | 127 | if (this._assetPath[this._assetPath.length - 1] != '/') |
128 | if (this._assetPath[this._assetPath.length-1] != '/') | 128 | this._assetPath += '/'; |
129 | this._assetPath += '/'; | 129 | } |
130 | } | ||
131 | 130 | ||
132 | if(this._assetPath !== undefined) { | 131 | if(this._assetPath !== undefined) { |
133 | RDGE.globals.engine.setAssetPath(this._assetPath); | 132 | RDGE.globals.engine.setAssetPath(this._assetPath); |
@@ -289,23 +288,23 @@ NinjaCvsRt.GLRuntime = function ( canvas, jObj, assetPath ) | |||
289 | 288 | ||
290 | this.importObject = function( jObj, parent ) | 289 | this.importObject = function( jObj, parent ) |
291 | { | 290 | { |
292 | var type = jObj.type | 291 | var type = jObj.type; |
293 | var obj; | 292 | var obj; |
294 | switch (type) | 293 | switch (type) |
295 | { | 294 | { |
296 | case 1: | 295 | case 1: |
297 | obj = new NinjaCvsRt.RuntimeRectangle(); | 296 | obj = new NinjaCvsRt.RuntimeRectangle(); |
298 | obj.importJSON( jObj, parent ); | 297 | obj.importJSON( jObj ); |
299 | break; | 298 | break; |
300 | 299 | ||
301 | case 2: // circle | 300 | case 2: // circle |
302 | obj = new NinjaCvsRt.RuntimeOval(); | 301 | obj = new NinjaCvsRt.RuntimeOval(); |
303 | obj.importJSON( jObj, parent ); | 302 | obj.importJSON( jObj ); |
304 | break; | 303 | break; |
305 | 304 | ||
306 | case 3: // line | 305 | case 3: // line |
307 | obj = new NinjaCvsRt.RuntimeLine(); | 306 | obj = new NinjaCvsRt.RuntimeLine(); |
308 | obj.importJSON( jObj, parent ); | 307 | obj.importJSON( jObj ); |
309 | break; | 308 | break; |
310 | 309 | ||
311 | default: | 310 | default: |
@@ -514,7 +513,7 @@ NinjaCvsRt.RuntimeGeomObj = function () | |||
514 | case "pulse": mat = new NinjaCvsRt.RuntimePulseMaterial(); break; | 513 | case "pulse": mat = new NinjaCvsRt.RuntimePulseMaterial(); break; |
515 | 514 | ||
516 | default: | 515 | default: |
517 | console.log( "material type: " + materialType + " is not supported" ); | 516 | console.log( "material type: " + shaderName + " is not supported" ); |
518 | break; | 517 | break; |
519 | } | 518 | } |
520 | 519 | ||
@@ -638,7 +637,7 @@ NinjaCvsRt.RuntimeGeomObj = function () | |||
638 | 637 | ||
639 | return mat; | 638 | return mat; |
640 | }; | 639 | }; |
641 | 640 | ||
642 | this.MatrixRotationZ = function( angle ) | 641 | this.MatrixRotationZ = function( angle ) |
643 | { | 642 | { |
644 | var mat = this.MatrixIdentity(4); | 643 | var mat = this.MatrixIdentity(4); |
@@ -742,7 +741,7 @@ NinjaCvsRt.RuntimeRectangle = function () | |||
742 | ctx.quadraticCurveTo( width-inset, inset, width-inset-rad, inset ); | 741 | ctx.quadraticCurveTo( width-inset, inset, width-inset-rad, inset ); |
743 | 742 | ||
744 | // do the top of the rectangle | 743 | // do the top of the rectangle |
745 | pt = [inset, inset] | 744 | pt = [inset, inset]; |
746 | rad = tlRad - inset; | 745 | rad = tlRad - inset; |
747 | if (rad < 0) rad = 0; | 746 | if (rad < 0) rad = 0; |
748 | pt[0] += rad; | 747 | pt[0] += rad; |
@@ -771,34 +770,81 @@ NinjaCvsRt.RuntimeRectangle = function () | |||
771 | var w = world.getViewportWidth(), | 770 | var w = world.getViewportWidth(), |
772 | h = world.getViewportHeight(); | 771 | h = world.getViewportHeight(); |
773 | 772 | ||
774 | // render the fill | 773 | var c, |
775 | ctx.beginPath(); | 774 | inset, |
776 | var c = null, inset = 0; | 775 | gradient, |
777 | if (this._fillColor) | 776 | colors, |
778 | { | 777 | len, |
779 | c = "rgba(" + 255*this._fillColor[0] + "," + 255*this._fillColor[1] + "," + 255*this._fillColor[2] + "," + this._fillColor[3] + ")"; | 778 | n, |
780 | ctx.fillStyle = c; | 779 | position, |
781 | 780 | cs; | |
782 | ctx.lineWidth = lw; | 781 | // render the fill |
783 | inset = Math.ceil( lw ) + 0.5; | 782 | ctx.beginPath(); |
784 | this.renderPath( inset, ctx ); | 783 | if (this._fillColor) { |
785 | ctx.fill(); | 784 | inset = Math.ceil( lw ) + 0.5; |
786 | ctx.closePath(); | 785 | |
787 | } | 786 | if(this._fillColor.gradientMode) { |
787 | if(this._fillColor.gradientMode === "radial") { | ||
788 | gradient = ctx.createRadialGradient(w/2, h/2, 0, w/2, h/2, Math.max(w/2, h/2)-inset); | ||
789 | } else { | ||
790 | gradient = ctx.createLinearGradient(inset, h/2, w-2*inset, h/2); | ||
791 | } | ||
792 | colors = this._fillColor.color; | ||
788 | 793 | ||
789 | // render the stroke | 794 | len = colors.length; |
790 | ctx.beginPath(); | ||
791 | if (this._strokeColor) | ||
792 | { | ||
793 | c = "rgba(" + 255*this._strokeColor[0] + "," + 255*this._strokeColor[1] + "," + 255*this._strokeColor[2] + "," + this._strokeColor[3] + ")"; | ||