All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
18.5: Major Changes In The HDK

UT_Pair no longer used and deprecated

The template class UT_Pair is no longer used in the HDK and now deprecated along with the UT_IntPair class. The entire UT_Pair.h header will be removed in a future release. Please use std::pair instead.

Hash values are now different

The OP_Node::getLock() method has now changed to return a bool instead of returning an int of values from the OP_NodeFlags::OP_LockTypes enum. This method now returns true if the lock flag is not equal to OP_NodeFlags::OP_UNLOCKED and false otherwise.

The OP_Node::setLock() method has been removed in favour of new OP_Node::setSoftLock() and OP_Node::setHardLock() methods in order to clarify what happens when setLock() is called.

The old OP_Node::getLock() and OP_Node::setLock() methods have been renamed to OP_Node::getLockState() and OP_Node::setLockState() and also now explicitly specify OP_NodeFlags::OP_LockTypes in their interface instead of the ambiguous int. Similarly, OP_Node::setModelLock() has its function signature improved as well.

Hash values are now different

Houdini's internal namespaced boost has been updated from version 1.61 to version 1.72. Notable changes include SYShashCombine() which now use a different algorithm. As a result SYShash() and various hash() methods now return different values. For UT_Set, UT_Map, UT_StringSet, UT_StringMap, this results in different iteration order of elements.


CE_Context::releaseBuffer() now requires the provided buffer to be an rvalue reference instead of a const reference, as it transfers ownership back to the memory pool.


GU_PrimPacked stores a reference to the implementation of the packed primitive. In H18.0, the implementation was moved to a "shared" representation. This improves performance of copying and other operations on packed primitives.

The previous method, GU_PrimPacked::implementation() returned an reference to the shared implementation, while GU_PrimPacked::hardenImplementation() would ensure the implementation was unique and could be modified.

The GU_PrimPacked::implementation() method has been deprecated since it wasn't clear that this was returning a reference to the shared object. The new method is GU_PrimPacked::sharedImplementation().