diff options
Diffstat (limited to 'assets/canvas-runtime.js')
-rw-r--r-- | assets/canvas-runtime.js | 4075 |
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> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, 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 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -36,42 +37,42 @@ var NinjaCvsRt = NinjaCvsRt || {}; | |||
36 | window.addEventListener('load', loadCanvasData, false); | 37 | window.addEventListener('load', loadCanvasData, false); |
37 | //Load data function (on document loaded) | 38 | //Load data function (on document loaded) |
38 | function loadCanvasData (e) { | 39 | function 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 |
64 | NinjaCvsRt.initWebGl = function (rootElement, directory, data) { | 65 | NinjaCvsRt.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 | /////////////////////////////////////////////////////////////////////// |
81 | NinjaCvsRt.CanvasDataManager = Object.create(Object.prototype, { | 82 | NinjaCvsRt.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 | /////////////////////////////////////////////////////////////////////// |
147 | NinjaCvsRt.GLRuntime = Object.create(Object.prototype, { | 148 | NinjaCvsRt.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 | ||
156 | _renderer: { value: null, writable: true }, |