OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010, Google Inc. | 2 * Copyright 2010, Google Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 o3d.Shape.prototype.addElement = function(element) { | 87 o3d.Shape.prototype.addElement = function(element) { |
88 this.elements.push(element); | 88 this.elements.push(element); |
89 }; | 89 }; |
90 | 90 |
91 | 91 |
92 /** | 92 /** |
93 * Removes and element to the list of elements for this shape. | 93 * Removes and element to the list of elements for this shape. |
94 * @param {o3d.Element} element The element to add. | 94 * @param {o3d.Element} element The element to add. |
95 */ | 95 */ |
96 o3d.Shape.prototype.removeElement = function(element) { | 96 o3d.Shape.prototype.removeElement = function(element) { |
97 | 97 o3d.removeFromArray(this.elements, element); |
98 }; | 98 }; |
99 | 99 |
100 | 100 |
101 /** | 101 /** |
102 * Called when the tree traversal finds this shape in the transform tree. | 102 * Called when the tree traversal finds this shape in the transform tree. |
103 * Adds objects to the given drawlists if the drawlist of the material matches. | 103 * Adds objects to the given drawlists if the drawlist of the material matches. |
104 * @param {Array.<Object>} drawListInfos A list of objects containing | 104 * @param {Array.<Object>} drawListInfos A list of objects containing |
105 * drawlists and matrix info. | 105 * drawlists and matrix info. |
106 * @param {o3d.math.Matrix4} world The world matrix. | 106 * @param {o3d.math.Matrix4} world The world matrix. |
107 */ | 107 */ |
108 o3d.Shape.prototype.writeToDrawLists = | 108 o3d.Shape.prototype.writeToDrawLists = |
109 function(drawListInfos, world, transform) { | 109 function(drawListInfos, world, transform) { |
110 var elements = this.elements; | 110 var elements = this.elements; |
| 111 |
| 112 // Iterate through elements of this shape. |
111 for (var i = 0; i < elements.length; ++i) { | 113 for (var i = 0; i < elements.length; ++i) { |
112 var element = elements[i]; | 114 var element = elements[i]; |
| 115 |
| 116 // For each element look at the DrawElements for that element. |
113 for (var j = 0; j < element.drawElements.length; ++j) { | 117 for (var j = 0; j < element.drawElements.length; ++j) { |
114 var drawElement = element.drawElements[j]; | 118 var drawElement = element.drawElements[j]; |
115 var materialDrawList = drawElement.material.drawList; | 119 var material = drawElement.material || drawElement.owner.material; |
| 120 var materialDrawList = material.drawList; |
| 121 |
| 122 // Iterate through the drawlists we might write to. |
116 for (var k = 0; k < drawListInfos.length; ++k) { | 123 for (var k = 0; k < drawListInfos.length; ++k) { |
117 var drawListInfo = drawListInfos[k]; | 124 var drawListInfo = drawListInfos[k]; |
118 var list = drawListInfo.list; | 125 var list = drawListInfo.list; |
119 var context = drawListInfo.context; | 126 var context = drawListInfo.context; |
| 127 |
| 128 // If any of those drawlists matches the material on the drawElement, |
| 129 // add the drawElement to the list. |
120 if (materialDrawList == list) { | 130 if (materialDrawList == list) { |
121 list.list_.push({ | 131 list.list_.push({ |
122 view: context.view, | 132 view: context.view, |
123 projection: context.projection, | 133 projection: context.projection, |
124 world: world, | 134 world: world, |
125 transform: transform, | 135 transform: transform, |
126 drawElement: drawElement | 136 drawElement: drawElement |
127 }); | 137 }); |
128 } | 138 } |
129 } | 139 } |
130 } | 140 } |
131 } | 141 } |
132 }; | 142 }; |
| 143 |
| 144 |
OLD | NEW |