116typedef AtNode* (*AtProcGetNode)(
const AtNode* node,
void* user_ptr,
int i);
175#define AI_PROCEDURAL_NODE_EXPORT_METHODS(tag) \
176AI_INSTANCE_COMMON_SHAPE_METHODS \
179procedural_num_nodes; \
180procedural_get_node; \
181static AtProceduralNodeMethods ai_proc_mtds = { \
184 ProceduralNumNodes, \
188static AtNodeMethods ai_node_mtds = { \
192const AtNodeMethods* tag = &ai_node_mtds;
194#define procedural_init \
195static int ProceduralInit(AtNode* node, void** user_ptr)
197#define procedural_cleanup \
198static int ProceduralCleanup(const AtNode* node, void* user_ptr)
200#define procedural_num_nodes \
201static int ProceduralNumNodes(const AtNode* node, void* user_ptr)
203#define procedural_get_node \
204static AtNode* ProceduralGetNode(const AtNode* node, void* user_ptr, int i)
206#define procedural_update \
207static void Update(AtRenderSession* render_session, AtNode* node); \
208AI_OPTIONAL_METHOD_INSTALL(ai_common_mtds, Update) \
209static void Update(AtRenderSession* render_session, AtNode* node)
211#define procedural_finish \
212static void Finish(AtNode* node); \
213AI_OPTIONAL_METHOD_INSTALL(ai_common_mtds, Finish) \
214static void Finish(AtNode* node)
216#define procedural_viewport \
217static int ProceduralViewport(const AtNode* node, AtUniverse* universe, AtProcViewportMode mode, const AtParamValueMap* params); \
218AI_OPTIONAL_METHOD_INSTALL(ai_proc_mtds, ProceduralViewport) \
219static int ProceduralViewport(const AtNode* node, AtUniverse* universe, AtProcViewportMode mode, const AtParamValueMap* params)
Version number information and checking of backwards-compatibility.
AtProcViewport ProceduralViewport
This is called to get a viewport representation of the given procedural node.
Definition: ai_procedural.h:161
int(* AtProcNumNodes)(const AtNode *node, void *user_ptr)
Procedural node count method.
Definition: ai_procedural.h:96
AtProcViewportMode
Enum with the different modes available for a procedural viewport representation.
Definition: ai_procedural.h:122
int(* AtProcCleanup)(const AtNode *node, void *user_ptr)
Procedural cleanup method.
Definition: ai_procedural.h:78
AtProcCleanup Cleanup
This is called last and should clean up any (temporary) memory used by the procedural.
Definition: ai_procedural.h:158
int(* AtProcViewport)(const AtNode *node, AtUniverse *universe, AtProcViewportMode mode, const AtParamValueMap *params)
Procedural viewport representation method.
Definition: ai_procedural.h:154
int(* AtProcFuncPtr)(AtProceduralNodeMethods *methods)
Procedural function pointer entry-point symbol.
Definition: ai_procedural.h:172
AtNode *(* AtProcGetNode)(const AtNode *node, void *user_ptr, int i)
Procedural node fetching method.
Definition: ai_procedural.h:116
AI_API int AiProceduralViewport(const AtNode *node, AtUniverse *universe, AtProcViewportMode mode=AI_PROC_BOXES, const AtParamValueMap *params=NULL)
Procedural viewport representation method.
Definition: ai_procedural.cpp:6
AtProcInit Init
This is called before expanding the procedural.
Definition: ai_procedural.h:157
AtProcNumNodes NumNodes
This is called to find out how many nodes this procedural will generate.
Definition: ai_procedural.h:159
int(* AtProcInit)(AtNode *node, void **user_ptr)
Procedural init method.
Definition: ai_procedural.h:62
AtProcGetNode GetNode
This is called NumNodes times, once for each node the procedural creates.
Definition: ai_procedural.h:160
3D axis-aligned bounding box (uses single-precision)
Definition: ai_bbox.h:33
This represents a node in Arnold.
Definition: ai_procedural.h:156
This represents a universe in Arnold.