diff options
Diffstat (limited to 'js/lib')
-rwxr-xr-x | js/lib/NJUtils.js | 32 | ||||
-rwxr-xr-x | js/lib/drawing/world.js | 153 | ||||
-rwxr-xr-x | js/lib/geom/circle.js | 54 | ||||
-rwxr-xr-x | js/lib/geom/geom-obj.js | 154 | ||||
-rwxr-xr-x | js/lib/geom/line.js | 44 | ||||
-rwxr-xr-x | js/lib/geom/rectangle.js | 67 | ||||
-rwxr-xr-x | js/lib/rdge/materials/bump-metal-material.js | 40 | ||||
-rw-r--r-- | js/lib/rdge/materials/cloud-material.js | 300 | ||||
-rwxr-xr-x | js/lib/rdge/materials/flat-material.js | 21 | ||||
-rw-r--r-- | js/lib/rdge/materials/julia-material.js | 6 | ||||
-rwxr-xr-x | js/lib/rdge/materials/linear-gradient-material.js | 53 | ||||
-rw-r--r-- | js/lib/rdge/materials/mandel-material.js | 6 | ||||
-rw-r--r-- | js/lib/rdge/materials/plasma-material.js | 18 | ||||
-rw-r--r-- | js/lib/rdge/materials/pulse-material.js | 44 | ||||
-rw-r--r-- | js/lib/rdge/materials/radial-blur-material.js | 57 | ||||
-rwxr-xr-x | js/lib/rdge/materials/radial-gradient-material.js | 54 | ||||
-rw-r--r-- | js/lib/rdge/materials/taper-material.js | 27 | ||||
-rw-r--r-- | js/lib/rdge/materials/twist-vert-material.js | 28 | ||||
-rwxr-xr-x | js/lib/rdge/materials/uber-material.js | 180 | ||||
-rw-r--r-- | js/lib/rdge/materials/water-material.js | 103 |
20 files changed, 1349 insertions, 92 deletions
diff --git a/js/lib/NJUtils.js b/js/lib/NJUtils.js index 4f1082f9..904aa41e 100755 --- a/js/lib/NJUtils.js +++ b/js/lib/NJUtils.js | |||
@@ -96,15 +96,45 @@ exports.NJUtils = Object.create(Object.prototype, { | |||
96 | value: function(el, selection, controller, isShape) { | 96 | value: function(el, selection, controller, isShape) { |
97 | var p3d = Montage.create(Properties3D).init(el); | 97 | var p3d = Montage.create(Properties3D).init(el); |
98 | var shapeProps = null; | 98 | var shapeProps = null; |
99 | var pi = controller + "Pi"; | ||
100 | |||
99 | if(isShape) { | 101 | if(isShape) { |
100 | shapeProps = Montage.create(ShapeModel); | 102 | shapeProps = Montage.create(ShapeModel); |
101 | } | 103 | } |
102 | 104 | ||
105 | if(el.controller) { | ||
106 | |||
107 | var componentInfo = Montage.getInfoForObject(el.controller); | ||
108 | var componentName = componentInfo.objectName.toLowerCase(); | ||
109 | |||
110 | controller = "component"; | ||
111 | isShape = false; | ||
112 | |||
113 | switch(componentName) { | ||
114 | case "feedreader": | ||
115 | selection = "Feed Reader"; | ||
116 | pi = "FeedReaderPi"; | ||
117 | break; | ||
118 | case "map": | ||
119 | selection = "Map"; | ||
120 | pi = "MapPi"; | ||
121 | break; | ||
122 | case "youtubechannel": | ||
123 | selection = "Youtube Channel"; | ||
124 | pi = "YoutubeChannelPi"; | ||
125 | break; | ||
126 | case "picasacarousel": | ||
127 | selection = "Picasa Carousel"; | ||
128 | pi = "PicasaCarouselPi"; | ||
129 | break; | ||
130 | } | ||
131 | } | ||
132 | |||
103 | el.elementModel = Montage.create(ElementModel, { | 133 | el.elementModel = Montage.create(ElementModel, { |
104 | type: { value: el.nodeName}, | 134 | type: { value: el.nodeName}, |
105 | selection: { value: selection}, | 135 | selection: { value: selection}, |
106 | controller: { value: ControllerFactory.getController(controller)}, | 136 | controller: { value: ControllerFactory.getController(controller)}, |
107 | pi: { value: controller + "Pi"}, | 137 | pi: { value: pi}, |
108 | props3D: { value: p3d}, | 138 | props3D: { value: p3d}, |
109 | shapeModel: { value: shapeProps} | 139 | shapeModel: { value: shapeProps} |
110 | }); | 140 | }); |
diff --git a/js/lib/drawing/world.js b/js/lib/drawing/world.js index 049145ce..781695b6 100755 --- a/js/lib/drawing/world.js +++ b/js/lib/drawing/world.js | |||
@@ -117,6 +117,8 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) { | |||
117 | 117 | ||
118 | this.getRenderer = function() { return this.renderer; }; | 118 | this.getRenderer = function() { return this.renderer; }; |
119 | 119 | ||
120 | // Flag to play/pause animation at authortime | ||
121 | this._previewAnimation = true; | ||
120 | //////////////////////////////////////////////////////////////////////////////////// | 122 | //////////////////////////////////////////////////////////////////////////////////// |
121 | // RDGE | 123 | // RDGE |
122 | // local variables | 124 | // local variables |
@@ -236,7 +238,7 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) { | |||
236 | if (this._canvas.task) { | 238 | if (this._canvas.task) { |
237 | this._firstRender = false; | 239 | this._firstRender = false; |
238 | 240 | ||
239 | if (!this.hasAnimatedMaterials()) { | 241 | if (!this.hasAnimatedMaterials() || !this._previewAnimation) { |
240 | this._canvas.task.stop(); | 242 | this._canvas.task.stop(); |
241 | //this._renderCount = 10; | 243 | //this._renderCount = 10; |
242 | } | 244 | } |
@@ -363,6 +365,7 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) { | |||
363 | if (this._useWebGL) { | 365 | if (this._useWebGL) { |
364 | rdgeStarted = true; | 366 | rdgeStarted = true; |
365 | this._canvas.rdgeid = this._canvas.getAttribute( "data-RDGE-id" ); | 367 | this._canvas.rdgeid = this._canvas.getAttribute( "data-RDGE-id" ); |
368 | g_Engine.unregisterCanvas( this._canvas ) | ||
366 | g_Engine.registerCanvas(this._canvas, this); | 369 | g_Engine.registerCanvas(this._canvas, this); |
367 | RDGEStart( this._canvas ); | 370 | RDGEStart( this._canvas ); |
368 | this._canvas.task.stop() | 371 | this._canvas.task.stop() |
@@ -729,6 +732,74 @@ World.prototype.getShapeFromPoint = function( offsetX, offsetY ) { | |||
729 | } | 732 | } |
730 | }; | 733 | }; |
731 | 734 | ||
735 | |||
736 | |||
737 | World.prototype.exportJSON = function() | ||
738 | { | ||
739 | // world properties | ||
740 | var worldObj = | ||
741 | { | ||
742 | 'version' : 1.1, | ||
743 | 'id' : this.getCanvas().getAttribute( "data-RDGE-id" ), | ||
744 | 'fov' : this._fov, | ||
745 | 'zNear' : this._zNear, | ||
746 | 'zFar' : this._zFar, | ||
747 | 'viewDist' : this._viewDist, | ||
748 | 'webGL' : this._useWebGL | ||
749 | }; | ||
750 | |||
751 | // RDGE scenegraph | ||
752 | if (this._useWebGL) | ||
753 | worldObj.scenedata = this.myScene.exportJSON(); | ||
754 | |||
755 | // object data | ||
756 | var strArray = []; | ||
757 | this.exportObjectsJSON( this._geomRoot, worldObj ); | ||
758 | |||
759 | // You would think that the RDGE export function | ||
760 | // would not be destructive of the data. You would be wrong... | ||
761 | // We need to rebuild everything | ||
762 | if (this._useWebGL) | ||
763 | { | ||
764 | var root = this._rootNode; | ||
765 | root.children = new Array(); | ||
766 | if (worldObj.children && (worldObj.children.length === 1)) | ||
767 | { | ||
768 | this.init(); | ||
769 | this._geomRoot = undefined; | ||
770 | this.importObjectsJSON( worldObj.children[0] ); | ||
771 | } | ||
772 | } | ||
773 | |||
774 | // convert the object to a string | ||
775 | var jStr = JSON.stringify( worldObj ); | ||
776 | |||
777 | // prepend some version information to the string. | ||
778 | // this string is also used to differentiate between JSON | ||
779 | // and pre-JSON versions of fileIO. | ||
780 | // the ending ';' in the version string is necessary | ||
781 | jStr = "v1.0;" + jStr; | ||
782 | |||
783 | return jStr; | ||
784 | } | ||
785 | |||
786 | World.prototype.exportObjectsJSON = function( obj, parentObj ) | ||
787 | { | ||
788 | if (!obj) return; | ||
789 | |||
790 | var jObj = obj.exportJSON(); | ||
791 | if (!parentObj.children) parentObj.children = []; | ||
792 | parentObj.children.push( jObj ); | ||
793 | |||
794 | if (obj.getChild()) { | ||
795 | this.exportObjectsJSON( obj.getChild (), jObj ); | ||
796 | } | ||
797 | |||
798 | if (obj.getNext()) | ||
799 | this.exportObjectsJSON( obj.getNext(), parentObj ); | ||
800 | } | ||
801 | |||
802 | /* | ||
732 | World.prototype.export = function() | 803 | World.prototype.export = function() |
733 | { | 804 | { |
734 | var exportStr = "GLWorld 1.0\n"; | 805 | var exportStr = "GLWorld 1.0\n"; |
@@ -791,6 +862,7 @@ World.prototype.exportObjects = function( obj ) { | |||
791 | 862 | ||
792 | return rtnStr; | 863 | return rtnStr; |
793 | }; | 864 | }; |
865 | */ | ||
794 | 866 | ||
795 | World.prototype.findTransformNodeByMaterial = function( materialNode, trNode ) { | 867 | World.prototype.findTransformNodeByMaterial = function( materialNode, trNode ) { |
796 | //if (trNode == null) trNode = this._ctrNode; | 868 | //if (trNode == null) trNode = this._ctrNode; |
@@ -810,6 +882,85 @@ World.prototype.findTransformNodeByMaterial = function( materialNode, trNode ) | |||
810 | return rtnNode; | 882 | return rtnNode; |
811 | }; | 883 | }; |
812 | 884 | ||
885 | World.prototype.importJSON = function( jObj ) | ||
886 | { | ||
887 | if (jObj.webGL) | ||
888 | { | ||
889 | // start RDGE | ||
890 | rdgeStarted = true; | ||
891 | var id = this._canvas.getAttribute( "data-RDGE-id" ); | ||
892 | this._canvas.rdgeid = id; | ||
893 | g_Engine.registerCanvas(this._canvas, this); | ||
894 | RDGEStart( this._canvas ); | ||
895 | this._canvas.task.stop() | ||
896 | } | ||
897 | |||
898 | // import the objects | ||
899 | // there should be exactly one child of the parent object | ||
900 | if (jObj.children && (jObj.children.length === 1)) | ||
901 | this.importObjectsJSON( jObj.children[0] ); | ||
902 | else | ||
903 | throw new Error ("unrecoverable canvas import error - inconsistent root object: " + jObj.children ); | ||
904 | |||
905 | if (!this._useWebGL) | ||
906 | { | ||
907 | // render using canvas 2D | ||
908 | this.render(); | ||
909 | } | ||
910 | else | ||