User guide
70
If you wish to query an inherited attribute, you need to use the utility function in FnGeolibCookInterface.h:
Foundry::Katana:GetGlobalAttr.
To learn more about some of the subtleties with regards to Ops running as a result of execOp, refer to the chapter
on the Op API on page176
Recompiling Existing SGG and AMP Plug-ins
Source Locations
The Katana plug-in APIs have undergone a re-factor and, as such, source files have been moved into a more
organized structure. Consequently, includes and Makefiles may need to be updated. The new folder structure uses
the following conventions:
• client - files declaring or implementing a client of a particular plug-in API. In this case, a C++ wrapper class for a
specific functionality is provided. The class only acts as a convenience wrapper around a suite. Client classes are
meant to be used where writing plug-ins to access functionality provided by Katana, for example, FnAttribute or
FnScenegraphIterator.
• plugin - files used to implement a plug-in for an API. Usually a base class is provided and it's meant to be extended
when writing plug-ins, for example, FnScenegraphGenerator.
• suite - C-only structs defining, through function pointers, the interface with the Katana core.
For example, consider the FnScenegraphGenerator or FnScenegraphIterator pair. FnScenegraphIterator
provides an interface to access a feature in Katana (access scene graph locations' data), so it represents a client for a
specific suite, FnScenegraphIteratorSuite. FnScenegraphGenerator, on the other hand, provides a base class to
implement a Scene Graph Generator plug-in.
Additional Build-ins
To avoid some issues with initialization of certain API suites, you may also need to add the following sources to build
into your plug-in, if you don’t have them already:
• FnAsset/client/FnDefaultAssetPlugin.cpp
• FnAsset/client/FnDefaultFileSequencePlugin.cpp
Behavioral Differences for SGGs
In pre-2.0v1 versions of Katana, there were often extra calls to getLocalAttr for attributes that were never named
in getLocalAttrNames. This was because of the ‘pull’ nature of the architecture - the viewer and similar features -
ask for many attributes to influence their behavior.
9 PORTING PLUG-INS | RECOMPILING EXISTING SGG AND AMP PLUG-INS