TagFilter now prevents unnecessary expansion.

In SubNetwork/AllDescendants mode, the tagFilter is used to prevent expansion into branches of the hierarchy that were not requested. For a heavy asset, filtering by a "Proxy" tag was expanding in 25 seconds and creating 22000 nodes. It is now expanding in 3 seconds and creating 3000 nodes.
Promoting tagFilter to all SceneCache nodes.

Not actually using it yet.
Finished promoting tagFilter.

SceneCache Xform and Geo pass the tagFilter through to matching children during expansion and push. Xfrom still uses it to limit expansion and control visibility. Geo just passes it on to the SOP, which uses it to limit objects loaded.
Making struct to hold the expansion parameters.

Simplifying the function signatures rather than adding yet another argument to all of them. I probably should have done this before adding the tagFilter...
Promoting shapeFilter to all SceneCache nodes.

SceneCache Xform and Geo just pass it through to the SOP, as with the attributeFilter.
HoudiniScene recognizes user defined tags on OBJs.

It gets a space separated list of tags, which can be defined on any OBJ node, by making a string parm named ieTags
Adding ieTags output parameter to SceneCache OBJs.

This is a space separated list of tags, which are exported when caching with the SceneCache ROP (via HoudiniScene).
HoudiniScene uses PrimitiveGroups to define extra tags on SOPs.

Users can now define extra tags on hierarchy inside a flattened SOP by making a Houdini PrimitiveGroup with the prefix "ieTag_" and assigning the relative prims to it.
Added clear() method IECoreGL.ShaderLoader, which allows reloading GLSL shaders on the fly.
Fixing description on tagFilter parm
Merge pull request #124 from andrewkaufman/tagFilterImprovements

Tag Improvements in Houdini
Fixed Windows build issue in FromMayaPlugConverter.

Many thanks to Sun HaoHui for finding it.
Fixed shared data problem

Fixed a problem where the global shared data was getting created and destroyed multiple times if there were multiple procedurals in a rib
Hiding the top level SceneCache OBJ during expansion.

Also using setDisplay instead of setVisible, to control visibility of a single node without effecting parent nodes. On a heavy asset, this reduces expansion time from 442.3s (7.38m) to 17.12s.
Moved the work of sceneChanged() into updateState()

By deferring calculations until the node actually cooks, we shave another 12% (2 seconds) off the expansion time.
Merge pull request #125 from danieldresser/clearShaderLoader

Added clear() method IECoreGL.ShaderLoader
Merge pull request #129 from andrewkaufman/expansionTime

Houdini SceneCache Expansion optimizations
Merge pull request #128 from davidsminor/autoInstancingGlobalHandlesFix

Fixed shared data problem
HoudiniScene can use a default time during evaluation.

Added get/setDefaultTime methods, which provide a default cooking time for methods that do not accept time as an argument (e.g. hasObject or childNames). In a HoudiniScene which points at a SOP, it is necessary to use time in these methods. The default time will pass through to children automatically. If left unset, CHgetEvalTime() will be used
for these queries.
Setting default HoudiniScene time from SceneCache ROP.

This prevents double cooking when the current cache time does not match Houdini's current eval time.