Index: samples/o3d-webgl/shape.js |
=================================================================== |
--- samples/o3d-webgl/shape.js (revision 41482) |
+++ samples/o3d-webgl/shape.js (working copy) |
@@ -94,7 +94,7 @@ |
* @param {o3d.Element} element The element to add. |
*/ |
o3d.Shape.prototype.removeElement = function(element) { |
- |
+ o3d.removeFromArray(this.elements, element); |
}; |
@@ -108,15 +108,25 @@ |
o3d.Shape.prototype.writeToDrawLists = |
function(drawListInfos, world, transform) { |
var elements = this.elements; |
+ |
+ // Iterate through elements of this shape. |
for (var i = 0; i < elements.length; ++i) { |
var element = elements[i]; |
+ |
+ // For each element look at the DrawElements for that element. |
for (var j = 0; j < element.drawElements.length; ++j) { |
var drawElement = element.drawElements[j]; |
- var materialDrawList = drawElement.material.drawList; |
+ var material = drawElement.material || drawElement.owner.material; |
+ var materialDrawList = material.drawList; |
+ |
+ // Iterate through the drawlists we might write to. |
for (var k = 0; k < drawListInfos.length; ++k) { |
var drawListInfo = drawListInfos[k]; |
var list = drawListInfo.list; |
var context = drawListInfo.context; |
+ |
+ // If any of those drawlists matches the material on the drawElement, |
+ // add the drawElement to the list. |
if (materialDrawList == list) { |
list.list_.push({ |
view: context.view, |
@@ -130,3 +140,5 @@ |
} |
} |
}; |
+ |
+ |