Added Optimizer::FlattenBillboardsVisitor.

This commit is contained in:
Robert Osfield
2006-07-18 11:03:46 +00:00
parent e016cdafb2
commit a74801a0ee
3 changed files with 139 additions and 4 deletions

View File

@@ -76,6 +76,7 @@ class OSGUTIL_EXPORT Optimizer
TRISTRIP_GEOMETRY = 0x200,
TESSELATE_GEOMETRY = 0x400,
OPTIMIZE_TEXTURE_SETTINGS = 0x800,
FLATTEN_BILLBOARDS = 0x1000,
DEFAULT_OPTIMIZATIONS = FLATTEN_STATIC_TRANSFORMS |
REMOVE_REDUNDANT_NODES |
REMOVE_LOADED_PROXY_NODES |
@@ -546,6 +547,26 @@ class OSGUTIL_EXPORT Optimizer
};
/** Flatten MatrixTransform/Billboard pairs.*/
class OSGUTIL_EXPORT FlattenBillboardVisitor : public BaseOptimizerVisitor
{
public:
FlattenBillboardVisitor(Optimizer* optimizer=0):
BaseOptimizerVisitor(optimizer, FLATTEN_BILLBOARDS) {}
typedef std::vector<osg::NodePath> NodePathList;
typedef std::map<osg::Billboard*, NodePathList > BillboardNodePathMap;
virtual void reset();
virtual void apply(osg::Billboard& billboard);
void process();
BillboardNodePathMap _billboards;
};
};
inline bool BaseOptimizerVisitor::isOperationPermissibleForObject(const osg::StateSet* object) const