aboutsummaryrefslogtreecommitdiff
path: root/assets/canvas-runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/canvas-runtime.js')
-rw-r--r--assets/canvas-runtime.js4075
1 files changed, 2038 insertions, 2037 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js
index ce392f34..4ab377c6 100644
--- a/assets/canvas-runtime.js
+++ b/assets/canvas-runtime.js
@@ -1,24 +1,25 @@
1/* <copyright> 1/* <copyright>
2Copyright (c) 2012, Motorola Mobility, Inc 2Copyright (c) 2012, Motorola Mobility LLC.
3All Rights Reserved. 3All Rights Reserved.
4BSD License.
5 4
6Redistribution and use in source and binary forms, with or without 5Redistribution and use in source and binary forms, with or without
7modification, are permitted provided that the following conditions are met: 6modification, are permitted provided that the following conditions are met:
8 7
9 - Redistributions of source code must retain the above copyright notice, 8* Redistributions of source code must retain the above copyright notice,
10 this list of conditions and the following disclaimer. 9 this list of conditions and the following disclaimer.
11 - Redistributions in binary form must reproduce the above copyright 10
12 notice, this list of conditions and the following disclaimer in the 11* Redistributions in binary form must reproduce the above copyright notice,
13 documentation and/or other materials provided with the distribution. 12 this list of conditions and the following disclaimer in the documentation
14 - Neither the name of Motorola Mobility nor the names of its contributors 13 and/or other materials provided with the distribution.
15 may be used to endorse or promote products derived from this software 14
16 without specific prior written permission. 15* Neither the name of Motorola Mobility LLC nor the names of its
16 contributors may be used to endorse or promote products derived from this
17 software without specific prior written permission.
17 18
18THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -36,42 +37,42 @@ var NinjaCvsRt = NinjaCvsRt || {};
36window.addEventListener('load', loadCanvasData, false); 37window.addEventListener('load', loadCanvasData, false);
37//Load data function (on document loaded) 38//Load data function (on document loaded)
38function loadCanvasData (e) { 39function loadCanvasData (e) {
39 //Cleaning up events 40 //Cleaning up events
40 window.removeEventListener('load', loadCanvasData, false); 41 window.removeEventListener('load', loadCanvasData, false);
41 //Getting tag with data, MUST contain attribute 42 //Getting tag with data, MUST contain attribute
42 var xhr, tag = document.querySelectorAll(['script[data-ninja-canvas-lib]'])[0]; 43 var xhr, tag = document.querySelectorAll(['script[data-ninja-canvas-lib]'])[0];
43 //Checking for data to be external file 44 //Checking for data to be external file
44 if (tag.getAttribute('data-ninja-canvas-json') !== null) { 45 if (tag.getAttribute('data-ninja-canvas-json') !== null) {
45 //Loading JSON data 46 //Loading JSON data
46 xhr = new XMLHttpRequest(); 47 xhr = new XMLHttpRequest();
47 xhr.open("GET", tag.getAttribute('data-ninja-canvas-json'), false); 48 xhr.open("GET", tag.getAttribute('data-ninja-canvas-json'), false);
48 xhr.send(); 49 xhr.send();
49 //Checking for data 50 //Checking for data
50 if (xhr.readyState === 4) { 51 if (xhr.readyState === 4) {
51 //Calling method to initialize all webGL/canvas(es) 52 //Calling method to initialize all webGL/canvas(es)
52 NinjaCvsRt.initWebGl(document.body, tag.getAttribute('data-ninja-canvas-libpath'), xhr.response); 53 NinjaCvsRt.initWebGl(document.body, tag.getAttribute('data-ninja-canvas-libpath'), xhr.response);
53 } else { 54 } else {
54 //TODO: Add error for users 55 //TODO: Add error for users
55 } 56 }
56 } else {//Data in document itself 57 } else {//Data in document itself
57 //Calling method to initialize all webGL/canvas(es) 58 //Calling method to initialize all webGL/canvas(es)
58 NinjaCvsRt.initWebGl(document.body, tag.getAttribute('data-ninja-canvas-libpath'), document.querySelectorAll(['script[data-ninja-canvas]'])[0].innerHTML); 59 NinjaCvsRt.initWebGl(document.body, tag.getAttribute('data-ninja-canvas-libpath'), document.querySelectorAll(['script[data-ninja-canvas]'])[0].innerHTML);
59 } 60 }
60} 61}
61 62
62/////////////////////////////////////////////////////////////////////// 63///////////////////////////////////////////////////////////////////////
63//Loading webGL/canvas data 64//Loading webGL/canvas data
64NinjaCvsRt.initWebGl = function (rootElement, directory, data) { 65NinjaCvsRt.initWebGl = function (rootElement, directory, data) {
65 var cvsDataMngr, ninjaWebGlData = JSON.parse((data.replace('(', '')).replace(')', '')); 66 var cvsDataMngr, ninjaWebGlData = JSON.parse((data.replace('(', '')).replace(')', ''));
66 if (ninjaWebGlData && ninjaWebGlData.data) { 67 if (ninjaWebGlData && ninjaWebGlData.data) {
67 for (var n=0; ninjaWebGlData.data[n]; n++) { 68 for (var n=0; ninjaWebGlData.data[n]; n++) {
68 ninjaWebGlData.data[n] = unescape(ninjaWebGlData.data[n]); 69 ninjaWebGlData.data[n] = unescape(ninjaWebGlData.data[n]);
69 } 70 }
70 } 71 }
71 //Creating data manager 72 //Creating data manager
72 cvsDataMngr = Object.create(NinjaCvsRt.CanvasDataManager, {}); 73 cvsDataMngr = Object.create(NinjaCvsRt.CanvasDataManager, {});
73 //Loading data to canvas(es) 74 //Loading data to canvas(es)
74 cvsDataMngr.loadGLData(rootElement, ninjaWebGlData.data, directory); 75 cvsDataMngr.loadGLData(rootElement, ninjaWebGlData.data, directory);
75}; 76};
76 77
77/////////////////////////////////////////////////////////////////////// 78///////////////////////////////////////////////////////////////////////
@@ -80,64 +81,64 @@ NinjaCvsRt.initWebGl = function (rootElement, directory, data) {
80/////////////////////////////////////////////////////////////////////// 81///////////////////////////////////////////////////////////////////////
81NinjaCvsRt.CanvasDataManager = Object.create(Object.prototype, { 82NinjaCvsRt.CanvasDataManager = Object.create(Object.prototype, {
82 83
83 loadGLData: { 84 loadGLData: {
84 value: function(root, valueArray, assetPath) { 85 value: function(root, valueArray, assetPath) {
85 if (assetPath) 86 if (assetPath)
86 this._assetPath = assetPath.slice(); 87 this._assetPath = assetPath.slice();
87 88
88 var value = valueArray; 89 var value = valueArray;
89 var nWorlds = value.length; 90 var nWorlds = value.length;
90 for (var i=0; i<nWorlds; i++) 91 for (var i=0; i<nWorlds; i++)
91 { 92 {
92 var importStr = value[i]; 93 var importStr = value[i];
93 94
94 // there should be some version information in 95 // there should be some version information in
95 // the form of 'v0.0;' Pull that off. (the trailing ';' should 96 // the form of 'v0.0;' Pull that off. (the trailing ';' should
96 // be in the first 24 characters). 97 // be in the first 24 characters).
97 var index = importStr.indexOf( ';' ); 98 var index = importStr.indexOf( ';' );
98 if ((importStr[0] === 'v') && (index < 24)) 99 if ((importStr[0] === 'v') && (index < 24))
99 { 100 {
100 // JSON format. pull off the version info 101 // JSON format. pull off the version info
101 importStr = importStr.substr( index+1 ); 102 importStr = importStr.substr( index+1 );
102 103
103 var jObj = JSON.parse( importStr ); 104 var jObj = JSON.parse( importStr );
104 var id = jObj.id; 105 var id = jObj.id;
105 if (id) 106 if (id)
106 { 107 {
107 var canvas = this.findCanvasWithID( id, root ); 108 var canvas = this.findCanvasWithID( id, root );
108 if (canvas) 109 if (canvas)
109 { 110 {
110// new NinjaCvsRt.GLRuntime( canvas, jObj, assetPath ); 111// new NinjaCvsRt.GLRuntime( canvas, jObj, assetPath );
111 var glRt = Object.create(NinjaCvsRt.GLRuntime, {}); 112 var glRt = Object.create(NinjaCvsRt.GLRuntime, {});
112 glRt.renderWorld(canvas, jObj, this._assetPath); 113 glRt.renderWorld(canvas, jObj, this._assetPath);
113 } 114 }
114 else 115 else
115 { 116 {
116 console.log( "***** COULD NOT FIND CANVAS WITH ID " + id + " *****" ); 117 console.log( "***** COULD NOT FIND CANVAS WITH ID " + id + " *****" );
117 } 118 }
118 } 119 }
119 } 120 }
120 } 121 }
121 } 122 }
122 }, 123 },
123 124
124 findCanvasWithID: { 125 findCanvasWithID: {
125 value: function(id, elt) { 126 value: function(id, elt) {
126 var cid = elt.getAttribute( "data-RDGE-id" ); 127 var cid = elt.getAttribute( "data-RDGE-id" );
127 if (cid == id) return elt; 128 if (cid == id) return elt;
128 129
129 if (elt.children) 130 if (elt.children)
130 { 131 {
131 var nKids = elt.children.length; 132 var nKids = elt.children.length;
132 for (var i=0; i<nKids; i++) 133 for (var i=0; i<nKids; i++)
133 { 134 {
134 var child = elt.children[i]; 135 var child = elt.children[i];
135 var foundElt = this.findCanvasWithID( id, child ); 136 var foundElt = this.findCanvasWithID( id, child );
136 if (foundElt) return foundElt; 137 if (foundElt) return foundElt;
137 } 138 }
138 } 139 }
139 } 140 }
140 } 141 }
141}); 142});
142 143
143/////////////////////////////////////////////////////////////////////// 144///////////////////////////////////////////////////////////////////////
@@ -145,267 +146,267 @@ NinjaCvsRt.CanvasDataManager = Object.create(Object.prototype, {
145// Manages runtime fora WebGL canvas 146// Manages runtime fora WebGL canvas
146/////////////////////////////////////////////////////////////////////// 147///////////////////////////////////////////////////////////////////////
147NinjaCvsRt.GLRuntime = Object.create(Object.prototype, { 148NinjaCvsRt.GLRuntime = Object.create(Object.prototype, {
148 /////////////////////////////////////////////////////////////////////// 149 ///////////////////////////////////////////////////////////////////////
149 // Instance variables 150 // Instance variables
150 /////////////////////////////////////////////////////////////////////// 151 ///////////////////////////////////////////////////////////////////////
151 _canvas: { value: null, writable: true }, 152 _canvas: { value: null, writable: true },
152 _context : { value: null, writable: true }, 153 _context : { value: null, writable: true },
153 //this._importStr = importStr; 154 //this._importStr = importStr;
154 _jObj: { value: null, writable: true }, 155 _jObj: { value: null, writable: true },
155 156