diff --git a/src/osgShadow/OccluderGeometry.cpp b/src/osgShadow/OccluderGeometry.cpp index 6024906da..c198bd9b1 100644 --- a/src/osgShadow/OccluderGeometry.cpp +++ b/src/osgShadow/OccluderGeometry.cpp @@ -159,8 +159,9 @@ struct TriangleIndexCollector OccluderGeometry::Vec3List& _vertices; OccluderGeometry::UIntList& _triangleIndices; unsigned int _baseIndex; + osg::Matrix* _matrix; - TriangleIndexCollector(OccluderGeometry::Vec3List& vertices, OccluderGeometry::UIntList& triangleIndices): + TriangleIndexCollector(OccluderGeometry::Vec3List& vertices, OccluderGeometry::UIntList& triangleIndices, osg::Matrix* matrix): _vertices(vertices), _triangleIndices(triangleIndices) { @@ -179,37 +180,78 @@ typedef osg::TriangleIndexFunctor TriangleIndexCollector struct TriangleCollector { - OccluderGeometry::Vec3List& _vertices; - OccluderGeometry::UIntList& _triangleIndices; + OccluderGeometry::Vec3List* _vertices; + OccluderGeometry::UIntList* _triangleIndices; + osg::Matrix* _matrix; typedef std::vector VertexPointers; VertexPointers _vertexPointers; OccluderGeometry::Vec3List _tempoaryTriangleVertices; - TriangleCollector(OccluderGeometry::Vec3List& vertices, OccluderGeometry::UIntList& triangleIndices): - _vertices(vertices), - _triangleIndices(triangleIndices) + TriangleCollector():_matrix(0) { } + + void set(OccluderGeometry::Vec3List* vertices, OccluderGeometry::UIntList* triangleIndices, osg::Matrix* matrix) { + _vertices = vertices; + _triangleIndices = triangleIndices; + _matrix = matrix; } + // bool intersect(const Vec3& v1,const Vec3& v2,const Vec3& v3,float& r) inline void operator () (const osg::Vec3& v1,const osg::Vec3& v2,const osg::Vec3& v3, bool treatVertexDataAsTemporary) { if (treatVertexDataAsTemporary) { + osg::notify(osg::NOTICE)<<"Triangle temp ("< maxVertex) maxVertex = *itr; + } + + unsigned int base = _vertices->size(); + unsigned int numberNewVertices = (maxVertex - minVertex); + + osg::notify(osg::NOTICE)<<"base = "<accept(tc); + + tc.copyToLocalData(); + + for(Vec3List::iterator vitr = _vertices.begin(); + vitr != _vertices.end(); + ++vitr) { - osg::notify(osg::NOTICE)<<" matrix"<<*matrix<