C API

This section contains documentation specific to the C language API of Eddy. For general API documentation which applies for all languages, see API Introduction.

Note

Although we call this API the ‘C’ API, it is really a C++ API but written in a C-like style. For example it uses C++ namespaces and reference parameters. A true C API could be implemented as a trivial wrapper around the current API, let us know if this is something you need.

Resources and ResourceHandles

All objects created by the C API are known as resources, and are referred to by the eddy_api::ResourceHandle typedef.

Every ResourceHandle returned by a function in the API must be explicitly released using eddy_api::ReleaseResource(). This applies even when the API is used to create two different ResourceHandles which refer to the same internal object - both handles must be released.

Results and error handling

Almost every function in the C API returns a value of type eddy_api::Result. It is recommended to check every returned error code, as this will usually be the only indication that an error occurred. If the returned value is not EDDY_RESULT_SUCCESS, then more detailed information about the error that occurred can be obtained from the eddy_api::GetLastErrorString() function.

Reference

Core functions

Result eddy_api::Startup()

Starts up and initializes the Eddy library, this must be the first function called.

Result eddy_api::Shutdown()

Shuts downs and cleans up the Eddy library.

Result eddy_api::ReleaseResource(ResourceHandle handle)

Releases a resource that has been previously created by another function.

Parameters
  • handle: The handle of the resource to be released.

Result eddy_api::ReleaseAllResources()

Releases all resources that have been previously created by another functions.

Result eddy_api::IsSameResource(ResourceHandle handleA, ResourceHandle handleB, bool *isSame)

Checks if two resource handles actually refer to the same data.

Parameters
  • handleA: The first handle to compare.

  • handleB: The second handle to compare.

  • isSame: Set to true if the handles are references to the same internal object, false otherwise.

Simple type resources

Result eddy_api::CreateFloat(ResourceHandle *handle, float value)

Creates a resource that wraps a float value.

Parameters
  • handle: Stores the newly created handle to the resource.

  • value: The float value to wrap in a resource.

Result eddy_api::CreateDouble(ResourceHandle *handle, double value)

Creates a resource that wraps a double value.

Parameters
  • handle: Stores the newly created handle to the resource.

  • value: The double value to wrap in a resource.

Result eddy_api::CreateInt(ResourceHandle *handle, int value)

Creates a resource that wraps an int value.

Parameters
  • handle: Stores the newly created handle to the resource.

  • value: The int value to wrap in a resource.

Result eddy_api::CreateString(ResourceHandle *handle, const char *value)

Creates a resource that wraps a string value.

Parameters
  • handle: Stores the newly created handle to the resource.

  • value: The string value to wrap in a resource.

Result eddy_api::IsFloat(ResourceHandle handle, bool *isFloat)

Checks if the specified resource is wrapping a float.

Parameters
  • handle: Handle of the resource to check.

  • isFloat: Set to true if the resource is a float.

Result eddy_api::IsDouble(ResourceHandle handle, bool *isDouble)

Checks if the specified resource is wrapping a double.

Parameters
  • handle: Handle of the resource to check.

  • isDouble: Set to true if the resource is a double.

Result eddy_api::IsInt(ResourceHandle handle, bool *isInt)

Checks if the specified resource is wrapping an int.

Parameters
  • handle: Handle of the resource to check.

  • isInt: Set to true if the resource is an int.

Result eddy_api::IsString(ResourceHandle handle, bool *isString)

Checks if the specified resource is wrapping a string.

Parameters
  • handle: Handle of the resource to check.

  • isString: Set to true if the resource is a string.

Result eddy_api::GetFloat(ResourceHandle handle, float *value)

Gets the float value stored in a resource.

Parameters
  • handle: Handle of the resource that stores the value.

  • value: Set to the float value from the resource.

Result eddy_api::GetDouble(ResourceHandle handle, double *value)

Gets the double value stored in a resource.

Parameters
  • handle: Handle of the resource that stores the value.

  • value: Set to the double value from the resource.

Result eddy_api::GetInt(ResourceHandle handle, int *value)

Gets the int value stored in a resource.

Parameters
  • handle: Handle of the resource that stores the value.

  • value: Set to the int value from the resource.

Result eddy_api::GetV3f(ResourceHandle handle, V3f *value)

Gets the V3f value stored in a resource.

Parameters
  • handle: Handle of the resource that stores the value.

  • value: Set to the V3f value from the resource.

Result eddy_api::GetString(ResourceHandle handle, SET_STRING_CALLBACK callback, void *callbackData)

Gets the string value stored in a resource.

Parameters
  • handle: Handle of the resource that stores the value.

  • callback: Callback function that will receive the string value from the resource.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::GetStringSize(ResourceHandle handle, size_t *size)

Gets the size of a string value stored in a resource, including the null terminator.

Parameters
  • handle: Handle of the resource that stores the value.

  • size: Set to the size of the string, including the null terminator.

Result eddy_api::GetStringBuffer(ResourceHandle handle, char *buffer, size_t bufferSize)

Gets the string value stored in a resource, copying it to the specified buffer.

Parameters
  • handle: Handle of the resource that stores the value.

  • buffer: Buffer into which the string will be copied.

  • bufferSize: Size of the provided buffer. If the buffer is not big enough an error will be returned.

Node functions

Result eddy_api::CreateNode(ResourceHandle *nodeHandle, const char *type, const char *name)

Creates a node of the specified type. See Node Reference for the available node types.

Parameters
  • nodeHandle: Stores the newly created handle to the node.

  • type: The type of the node to create.

  • name: An optional name for the node, used only for debugging and in error messages. Can be a nullptr.

Result eddy_api::NodeSetName(ResourceHandle nodeHandle, const char *nodeName)

Sets the name of a node. The name is used only for debugging and in error messages.

Parameters
  • nodeHandle: Handle of the node resource.

  • nodeName: New name for the node.

Result eddy_api::NodeAddProperty(ResourceHandle nodeHandle, const char *propertyName, const char *dataType, const ResourceHandle *defaultValueHandle, int flags)

Adds a new property to a node. See Node data types for valid values for the dataType parameter.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the new property to add.

  • dataType: Type of the new property.

  • defaultValueHandle: Optional pointer to a resource to use as the default value for this property. Must be the same type as the property. Set to nullptr to use a standard default for the type.

  • flags: A combination of the eddy_api::PropertyFlags for the new property.

Result eddy_api::NodeRemoveProperty(ResourceHandle nodeHandle, const char *propertyName)

Removes a property from a node.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property to remove.

Result eddy_api::NodePropertyList(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets a list of names of all the properties on a node.

Parameters
  • nodeHandle: Handle of the node resource.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeHasProperty(ResourceHandle nodeHandle, const char *propertyName, bool *hasProperty)

Checks if a node has a property with the given name.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property to check.

  • hasProperty: Pointer to value which will be set to true if the node has a property with the given name.

Result eddy_api::NodePropertyDataType(ResourceHandle nodeHandle, const char *propertyName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the type of a property. See Node data types for the possible result types.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • callback: Callback which will receive the name of the property data type.

  • callbackData: User data for the callback.

Result eddy_api::NodePropertyDefaultValue(ResourceHandle nodeHandle, const char *propertyName, ResourceHandle *value)

Gets the default value of a property as a resource.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • value: Handle which will be set to a resource containing the default value of this property. Note that this is always a new handle, so it must be freed using eddy_api::ReleaseResource like any other handle.

Result eddy_api::NodeIsPropertyKeyable(ResourceHandle nodeHandle, const char *propertyName, bool *isKeyable)

Checks if a property is keyable.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • isKeyable: Pointer to value which will be set to true if the property is keyable.

Result eddy_api::NodeIsPropertyPluggable(ResourceHandle nodeHandle, const char *propertyName, bool *isPluggable)

Checks if a property is pluggable.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • isPluggable: Pointer to value which will be set to true if the property is pluggable.

Result eddy_api::NodePropertyRequiresReset(ResourceHandle nodeHandle, const char *propertyName, bool *requiresReset)

Checks if a property requires an evaluator reset when it is modified.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • requiresReset: Pointer to value which will be set to true if the property requires an evaluator reset when modified.

Result eddy_api::NodePropertyAllowFieldPlug(ResourceHandle nodeHandle, const char *propertyName, bool *allowFieldPlug)

Checks if a property is allowed to be overridden by a field plug of a matching type.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • allowFieldPlug: Pointer to value which will be set to true if the property is allowed to be overridden by a field plug.

Result eddy_api::NodePropertyAllowShaderPlug(ResourceHandle nodeHandle, const char *propertyName, bool *allowShaderPlug)

Checks if a property is allowed to be overridden by a shader network plug.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • allowShaderPlug: Pointer to value which will be set to true if the property is allowed to be overridden by a shader network plug.

Result eddy_api::NodeIsPropertyUser(ResourceHandle nodeHandle, const char *propertyName, bool *isUser)

Checks if a property has the user flag.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • isUser: Pointer to value which will be set to true if the property is a user property.

Result eddy_api::NodeResetPropertyToDefault(ResourceHandle nodeHandle, const char *propertyName)

Resets a property to its default value.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property to reset to its default.

Result eddy_api::NodeIsPropertyKeyed(ResourceHandle nodeHandle, const char *propertyName, bool *isKeyed)

Checks if a property has key values assigned to it.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property.

  • isKeyed: Pointer to value which will be set to true if the property has keyed values.

Result eddy_api::NodeAddInputPlug(ResourceHandle nodeHandle, const char *plugName, const char *dataType, int flags)

Adds a new input plug to a node. See Node data types for valid values for the dataType parameter.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the new plug to add.

  • dataType: Type of the new plug.

  • flags: A combination of the eddy_api::PlugFlags for the new plug.

Result eddy_api::NodeRemoveInputPlug(ResourceHandle nodeHandle, const char *plugName)

Removes the named input plug from the node.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of plug to remove.

Result eddy_api::NodeAddOutputPlug(ResourceHandle nodeHandle, const char *plugName, const char *dataType, const char *evaluationMode, int flags)

Adds a new output plug to a node. See Node data types for valid values for the dataType parameter.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the new plug to add.

  • dataType: Type of the new plug.

  • evaluationMode: Evaluation mode of the new plug.

  • flags: A combination of the eddy_api::PlugFlags for the new plug.

Result eddy_api::NodeRemoveOutputPlug(ResourceHandle nodeHandle, const char *plugName)

Removes the named output plug from the node.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of plug to remove.

Result eddy_api::NodeAddFieldInputPlug(ResourceHandle nodeHandle, const char *plugName, const char *subType, int flags)

Adds a new field input plug to a node. See Field plug types for valid values for the field type parameter.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the new field plug to add.

  • subType: Sub-type of the new plug.

  • flags: A combination of the eddy_api::PlugFlags for the new plug.

Result eddy_api::NodeAddFieldOutputPlug(ResourceHandle nodeHandle, const char *plugName, const char *subType, const char *evaluationMode, int flags)

Adds a new field output plug to a node. See Field plug types for valid values for the field type parameter.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the new field plug to add.

  • subType: Sub-type of the new plug.

  • evaluationMode: Evaluation mode of the new plug.

  • flags: A combination of the eddy_api::PlugFlags for the new plug.

Result eddy_api::NodeAddPropertyOverridePlug(ResourceHandle nodeHandle, const char *propertyName)

Adds a plug that overrides the specified property. The type of the plug will take into account the AllowFieldPlug and AllowShaderPlug flags on the property.

Parameters
  • nodeHandle: Handle of the node resource.

  • propertyName: Name of the property to be overridden.

Result eddy_api::NodeInputPlugList(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets a list of names of all the input plugs on a node.

Parameters
  • nodeHandle: Handle of the node resource.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeOutputPlugList(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets a list of names of all the output plugs on a node.

Parameters
  • nodeHandle: Handle of the node resource.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeHasInputPlug(ResourceHandle nodeHandle, const char *plugName, bool *hasInputPlug)

Tests if a node has an input plug with the specified name.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug to check.

  • hasInputPlug: Value that will be set to true if the node has an input plug with the given name.

Result eddy_api::NodeInputPlugDataType(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the data type of an input plug. See Node data types for the possible result types.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug whose data type will be returned.

  • callback: Callback that will receive the data type of the plug.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeInputPlugSubType(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the sub-type of an input plug.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug whose sub-type will be returned.

  • callback: Callback that will receive the sub-type of the plug.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeIsInputPlugOptional(ResourceHandle nodeHandle, const char *plugName, bool *isOptional)

Checks if an input plug is optional.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug to check.

  • isOptional: Value that will be set to true if the plug is optional.

Result eddy_api::NodeIsInputPlugArray(ResourceHandle nodeHandle, const char *plugName, bool *isArray)

Checks if an input plug is an array plug.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug to check.

  • isArray: Value that will be set to true if the plug is an array plug.

Result eddy_api::NodeIsInputPlugUser(ResourceHandle nodeHandle, const char *plugName, bool *isUser)

Checks if an input plug is a user plug.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug to check.

  • isUser: Value that will be set to true if the plug is a user plug.

Result eddy_api::NodeHasOutputPlug(ResourceHandle nodeHandle, const char *plugName, bool *hasOutputPlug)

Tests if a node has an output plug with the specified name.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug to check.

  • hasOutputPlug: Value that will be set to true if the node has an output plug with the given name.

Result eddy_api::NodeOutputPlugDataType(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the data type of an output plug. See Node data types for the possible result types.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug whose data type will be returned.

  • callback: Callback that will receive the data type of the plug.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeOutputPlugSubType(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the sub-type of an output plug.

Parameters
  • nodeHandle: Handle of the node resource.

  • plugName: Name of the plug whose field type will be returned.

  • callback: Callback that will receive the sub-type of the plug.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeUpdateAutoProperties(ResourceHandle nodeHandle, bool *isChanged)

Automatically adds and removes the dynamic properties and plugs that the node itself will manage. This is used for example by the expression nodes, which parse the supplied script to determine what properties and plugs are required.

Parameters
  • nodeHandle: Handle of the node resource.

  • isChanged: Value which will be set to true if any properties or plugs were modified. Can be set to nullptr.

Result eddy_api::NodeDependencyHash(ResourceHandle nodeHandle, size_t *hash)

Computes a hash of all the node properties and all of its upstream inputs.

Parameters
  • nodeHandle: Handle of the node resource.

  • hash: Value which will be set to the resulting hash.

Result eddy_api::NodeDependencyHashAtTime(ResourceHandle nodeHandle, Ticks ticks, size_t *hash)

Computes a hash of all the node properties and all of its upstream inputs at a given time

Parameters
  • nodeHandle: Handle of the node resource.

  • ticks: time of the context

  • hash: Value which will be set to the resulting hash.

Node property setter functions

Result eddy_api::NodeSetProperty(ResourceHandle nodeHandle, const char *propertyName, ResourceHandle valueHandle)

Sets a unkeyed value on a property on the specified node. This will remove any existing keyed values.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property to set.

  • valueHandle: The handle of the value to set. This should match the type of the property.

Result eddy_api::NodeSetPropertyKey(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, ResourceHandle valueHandle)

Sets a keyed value on a property on the specified node.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property to set.

  • ticks: The key time at which to set the property.

  • valueHandle: The handle of the value to set. This should match the type of the property.

The following are convenient helper functions for setting properties directly from simple values. Unlike the NodeSetProperty and NodeSetPropertyKey functions they do not require creating a ResourceHandle to store the value being set on the property.

Result eddy_api::NodeSetPropertyFloat(ResourceHandle nodeHandle, const char *propertyName, float value)
Result eddy_api::NodeSetPropertyBool(ResourceHandle nodeHandle, const char *propertyName, bool value)
Result eddy_api::NodeSetPropertyDouble(ResourceHandle nodeHandle, const char *propertyName, double value)
Result eddy_api::NodeSetPropertyInt(ResourceHandle nodeHandle, const char *propertyName, int value)
Result eddy_api::NodeSetPropertyV2f(ResourceHandle nodeHandle, const char *propertyName, const V2f &value)
Result eddy_api::NodeSetPropertyV2i(ResourceHandle nodeHandle, const char *propertyName, const V2i &value)
Result eddy_api::NodeSetPropertyV3f(ResourceHandle nodeHandle, const char *propertyName, const V3f &value)
Result eddy_api::NodeSetPropertyV3i(ResourceHandle nodeHandle, const char *propertyName, const V3i &value)
Result eddy_api::NodeSetPropertyV4f(ResourceHandle nodeHandle, const char *propertyName, const V4f &value)
Result eddy_api::NodeSetPropertyV4i(ResourceHandle nodeHandle, const char *propertyName, const V4i &value)
Result eddy_api::NodeSetPropertyColor3f(ResourceHandle nodeHandle, const char *propertyName, const V3f &value)
Result eddy_api::NodeSetPropertyM44f(ResourceHandle nodeHandle, const char *propertyName, const M44f &value)
Result eddy_api::NodeSetPropertyBox3f(ResourceHandle nodeHandle, const char *propertyName, const Box3f &value)
Result eddy_api::NodeSetPropertyString(ResourceHandle nodeHandle, const char *propertyName, const char *value)
Result eddy_api::NodeSetPropertyKeyFloat(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, float value)
Result eddy_api::NodeSetPropertyKeyBool(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, bool value)
Result eddy_api::NodeSetPropertyKeyDouble(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, double value)
Result eddy_api::NodeSetPropertyKeyInt(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, int value)
Result eddy_api::NodeSetPropertyKeyV2f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V2f &value)
Result eddy_api::NodeSetPropertyKeyV2i(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V2i &value)
Result eddy_api::NodeSetPropertyKeyV3f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V3f &value)
Result eddy_api::NodeSetPropertyKeyV3i(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V3i &value)
Result eddy_api::NodeSetPropertyKeyV4f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V4f &value)
Result eddy_api::NodeSetPropertyKeyV4i(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V4i &value)
Result eddy_api::NodeSetPropertyKeyColor3f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const V3f &value)
Result eddy_api::NodeSetPropertyKeyBox3f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const Box3f &value)
Result eddy_api::NodeSetPropertyKeyM44f(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const M44f &value)
Result eddy_api::NodeSetPropertyKeyString(ResourceHandle nodeHandle, const char *propertyName, Ticks ticks, const char *value)

Node property getter functions

Result eddy_api::NodeGetProperty(ResourceHandle nodeHandle, const char *propertyName, ResourceHandle *value)

Gets the value of the specified property on a node. This can only be used if the property is unkeyed.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property to get.

  • value: Stores the resource handle containing the value of the property. This is a new handle, so it must be freed using eddy_api::ReleaseResource like any other handle.

The following are convenient helper functions for getting the value of properties directly as simple values. Unlike the NodeGetProperty function they do not require using a ResourceHandle to store the value retrieved from the property.

Result eddy_api::NodeGetPropertyFloat(ResourceHandle nodeHandle, const char *propertyName, float *value)
Result eddy_api::NodeGetPropertyDouble(ResourceHandle nodeHandle, const char *propertyName, double *value)
Result eddy_api::NodeGetPropertyInt(ResourceHandle nodeHandle, const char *propertyName, int *value)
Result eddy_api::NodeGetPropertyBool(ResourceHandle nodeHandle, const char *propertyName, bool *value)
Result eddy_api::NodeGetPropertyV2f(ResourceHandle nodeHandle, const char *propertyName, V2f *value)
Result eddy_api::NodeGetPropertyV2i(ResourceHandle nodeHandle, const char *propertyName, V2i *value)
Result eddy_api::NodeGetPropertyV3f(ResourceHandle nodeHandle, const char *propertyName, V3f *value)
Result eddy_api::NodeGetPropertyV3i(ResourceHandle nodeHandle, const char *propertyName, V3i *value)
Result eddy_api::NodeGetPropertyV4f(ResourceHandle nodeHandle, const char *propertyName, V4f *value)
Result eddy_api::NodeGetPropertyV4i(ResourceHandle nodeHandle, const char *propertyName, V4i *value)
Result eddy_api::NodeGetPropertyColor3f(ResourceHandle nodeHandle, const char *propertyName, V3f *value)
Result eddy_api::NodeGetPropertyBox3f(ResourceHandle nodeHandle, const char *propertyName, Box3f *value)
Result eddy_api::NodeGetPropertyM44f(ResourceHandle nodeHandle, const char *propertyName, M44f *value)
Result eddy_api::NodeGetPropertyString(ResourceHandle nodeHandle, const char *propertyName, SET_STRING_CALLBACK callback, void *callbackData)

Node connection functions

Result eddy_api::NodeConnect(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName)

Creates a connection between two plugs on two different nodes. This can fail if the plugs are not compatible or if there is an existing connection blocking the new connection.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node. This can be a nullptr if the output plug can be deduced, i.e. if there is only one output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node. This can be a nullptr if the input plug can be deduced, i.e. if there is only one input plug with a matching type on the target node.

Result eddy_api::NodeForceConnect(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName)

Creates a connection between two plugs on two different nodes, removing any existing connections that are blocking this connection. This can fail if the plugs are not compatible.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node. This can be a nullptr if the output plug can be deduced, i.e. if there is only one output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node. This can be a nullptr if the input plug can be deduced, i.e. if there is only one input plug with a matching type on the target node.

Result eddy_api::NodeCanConnect(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName, bool *canConnect)

Queries if a connection can be created between two plugs. If either of the plug names are nullptr and the plug cannot be deduced, this will set canConnect to false rather than failing.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node. This can be a nullptr if the output plug can be deduced, i.e. if there is only one output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node. This can be a nullptr if the input plug can be deduced, i.e. if there is only one input plug with a matching type on the target node.

  • canConnect: Stores the result of the query.

Result eddy_api::NodeCanForceConnect(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName, bool *canConnect)

Queries if a connection can be created between two plugs, if existing connections are allowed to be removed. If either of the plug names are nullptr and the plug cannot be deduced, this will set canConnect to false rather than failing.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node. This can be a nullptr if the output plug can be deduced, i.e. if there is only one output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node. This can be a nullptr if the input plug can be deduced, i.e. if there is only one input plug with a matching type on the target node.

  • canConnect: Stores the result of the query.

Result eddy_api::NodeIsConnected(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName, bool *isConnected)

Tests if two plugs are currently connected.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node.

  • isConnected: Stores the result of the query.

Result eddy_api::NodeDisconnect(ResourceHandle sourceNodeHandle, const char *sourcePlugName, ResourceHandle targetNodeHandle, const char *targetPlugName)

Disconnects two plugs which are currently connected.

Parameters
  • sourceNodeHandle: The handle of the source node.

  • sourcePlugName: The name of the output plug on the source node.

  • targetNodeHandle: The handle of the target node.

  • targetPlugName: The name of the input plug on the target node.

Result eddy_api::NodeDisconnectAll(ResourceHandle nodeHandleA, ResourceHandle nodeHandleB)

Disconnects all connections between the two specified nodes.

Parameters
  • nodeHandleA: The handle of the first node.

  • nodeHandleB: The handle of the second node.

Result eddy_api::NodeIsInputPlugConnected(ResourceHandle nodeHandle, const char *plugName, bool *isConnected)

Tests if the specified input plug has any connections.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: The name of the plug.

  • isConnected: Stores the result of the query.

Result eddy_api::NodeIsInputPlugConnectedToNode(ResourceHandle nodeHandle, const char *plugName, ResourceHandle sourceNodeHandle, bool *isConnected)

Tests if the specified input plug is connected to a plug on the specified source node.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: The name of the plug.

  • sourceNodeHandle: The handle of the node to which to check if the plug is connected.

  • isConnected: Stores the result of the query.

Result eddy_api::NodeIsOutputPlugConnected(ResourceHandle nodeHandle, const char *plugName, bool *isConnected)

Tests if the specified output plug has any connections.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: The name of the plug.

  • isConnected: Stores the result of the query.

Result eddy_api::NodeDisconnectAllConnections(ResourceHandle nodeHandle)

Disconnects all connections on all plugs on the specified node.

Parameters
  • nodeHandle: The handle of the node.

Result eddy_api::NodeDisconnectInputPlug(ResourceHandle nodeHandle, const char *plugName)

Disconnect all connections on the specified input plug.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: The name of the plug.

Result eddy_api::NodeDisconnectOutputPlug(ResourceHandle nodeHandle, const char *plugName)

Disconnect all connections on the specified output plug.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: The name of the plug.

Evaluator functions

Result eddy_api::CreateEvaluator(ResourceHandle *evaluatorHandle)

Creates a new Evaluator.

Parameters
  • evaluatorHandle: Stores the new handle for the Evaluator resource.

Result eddy_api::EvaluatorReset(ResourceHandle evaluatorHandle)

Resets the evaluator, clearing any existing stored simulation data.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

Result eddy_api::EvaluatorIsReset(ResourceHandle evaluatorHandle, bool *isReset)

Checks if the evaluator is currently in a reset state. This is true when the evaluator is created or reset, until the first evaluation.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

  • isReset: Stores the result of the query.

Result eddy_api::EvaluatorResetNode(ResourceHandle evaluatorHandle, ResourceHandle nodeHandle)

Resets a specific node in the evaluator. This will clear the simulation data of this specific node only.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

  • nodeHandle: The handle of the node.

Result eddy_api::EvaluatorIsPlugConnectionsValid(ResourceHandle evaluatorHandle, ResourceHandle nodeHandle, bool *isValid)

Checks if all the plug connections on the specified node are valid, i.e. if all the required inputs are connected and of the correct type.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

  • nodeHandle: The handle of the node.

  • isValid: Stores the result of the query.

Result eddy_api::EvaluatorIsPlugConnectionsValidTree(ResourceHandle evaluatorHandle, ResourceHandle nodeHandle, bool *isValid)

Checks if all the plug connections on the specified node are valid, and checks the entire upstream tree also, i.e. if all the required upstream inputs are connected and of the correct type.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

  • nodeHandle: The handle of the node.

  • isValid: Stores the result of the query.

Result eddy_api::Evaluate(ResourceHandle evaluatorHandle, ResourceHandle nodeHandle, const char *plugName, double startTicks, double endTicks, float fps, ResourceHandle *resultHandle)

Evaluates the specified output plug on a node.

Parameters
  • evaluatorHandle: The handle of the Evaluator.

  • nodeHandle: The handle of the node.

  • plugName: The name of the plug to evaluate. This can be a nullptr if the node only has one output plug.

  • startTicks: The start time of the evaluation step, in ticks. Can be the same as the endTicks when not stepping.

  • endTicks: The end time of the evaluation step, in ticks. Can be the same as the startTicks when not stepping.

  • fps: The frames-per-second.

  • resultHandle: Stores the result of the evaluation. Can be a nullptr if a result is not required. This is a new handle, so it must be freed using eddy_api::ReleaseResource like any other handle.

NodeLayout functions

Result eddy_api::NodeLayoutDisplayName(ResourceHandle nodeHandle, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name of the node type from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutDisplayCategory(ResourceHandle nodeHandle, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display category of the node from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutInputPlugNames(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets the names of the input plugs that are included in the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutInputPlugDisplayName(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name for the specified input plug in the layout.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutAddInputPlug(ResourceHandle nodeHandle, const char *plugName, const char *plugDisplayName)

Adds an input plug to the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

  • plugDisplayName: Displayed name of the plug.

Result eddy_api::NodeLayoutRemoveInputPlug(ResourceHandle nodeHandle, const char *plugName)

Removes an input plug from the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

Result eddy_api::NodeLayoutRemoveAllInputPlugs(ResourceHandle nodeHandle)

Removes all input plugs from the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

Result eddy_api::NodeLayoutOutputPlugNames(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets the names of the output plugs that are included in the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutOutputPlugDisplayName(ResourceHandle nodeHandle, const char *plugName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name for the specified output plug in the layout.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutAddOutputPlug(ResourceHandle nodeHandle, const char *plugName, const char *plugDisplayName)

Adds an output plug to the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

  • plugDisplayName: Displayed name of the plug.

Result eddy_api::NodeLayoutRemoveOutputPlug(ResourceHandle nodeHandle, const char *plugName)

Removes an output plug from the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

  • plugName: Name of the plug.

Result eddy_api::NodeLayoutRemoveAllOutputPlugs(ResourceHandle nodeHandle)

Removes all output plugs from the layout of the node.

Parameters
  • nodeHandle: The handle of the node.

Result eddy_api::NodeLayoutTabNames(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Returns all of the tab names from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutTabDisplayName(ResourceHandle nodeHandle, const char *tabName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name of the specified tab from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • tabName: The name of the group.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutTabGroupNames(ResourceHandle nodeHandle, const char *tabName, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets all the properties that are contained in the specified tab in the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • tabName: The name of the tab.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutGroupNames(ResourceHandle nodeHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Returns all of the group names from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutGroupDisplayName(ResourceHandle nodeHandle, const char *groupName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name of the specified group from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutGroupPropertyNames(ResourceHandle nodeHandle, const char *groupName, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets all the properties that are contained in the specified group in the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutGroupEnabled(ResourceHandle nodeHandle, const char *groupName, bool *isEnabled)

Checks if a group is currently enabled in the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

  • isEnabled: Stores the result of the query.

Result eddy_api::NodeLayoutGroupHasTabParent(ResourceHandle nodeHandle, const char *groupName, bool *hasParent)

Checks if a group is placed within a Tab parent

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

  • hasParent: Stores the result of the query.

Result eddy_api::NodeLayoutPropertyDisplayName(ResourceHandle nodeHandle, const char *propertyName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the display name of the specified property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutPropertyTooltip(ResourceHandle nodeHandle, const char *propertyName, SET_STRING_CALLBACK callback, void *callbackData)

Gets the tooltip for the specified property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • callback: Callback function that will receive the string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutPropertyEnumValues(ResourceHandle nodeHandle, const char *propertyName, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets all the allowed enum values for the specified enum property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutPropertyEnumDisplayValues(ResourceHandle nodeHandle, const char *propertyName, PUSH_STRING_CALLBACK callback, void *callbackData)

Gets all the allowed enum display values for the specified enum property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • callback: Callback function that will be called once for each string value.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::NodeLayoutPropertyScalarRange(ResourceHandle nodeHandle, const char *propertyName, bool *hasMin, bool *hasMax, bool *hasSoftMin, bool *hasSoftMax, double *minValue, double *maxValue, double *softMinValue, double *softMaxValue)

Gets the allowed ranges for a scalar property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • hasMin: Specifies if the property has a minimum value which should be enforced.

  • hasMax: Specifies if the property has a maximum value which should be enforced.

  • hasSoftMin: Specifies if the property has a soft minimum value which should be suggested by the UI.

  • hasSoftMax: Specifies if the property has a soft maximum value which should be suggested by the UI.

  • minValue: The minimum value allowed for the property.

  • maxValue: The maximum value allowed for the property.

  • softMinValue: The minimum value which should be suggested by the UI for the property.

  • softMaxValue: The maximum value which should be suggested by the UI for the property.

Result eddy_api::NodeLayoutPropertyVectorRange(ResourceHandle nodeHandle, const char *propertyName, bool *hasMin, bool *hasMax, bool *hasSoftMin, bool *hasSoftMax, V3d *minValue, V3d *maxValue, V3d *softMinValue, V3d *softMaxValue)

Gets the allowed ranges for a vector property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • hasMin: Specifies if the property has a minimum value which should be enforced.

  • hasMax: Specifies if the property has a maximum value which should be enforced.

  • hasSoftMin: Specifies if the property has a soft minimum value which should be suggested by the UI.

  • hasSoftMax: Specifies if the property has a soft maximum value which should be suggested by the UI.

  • minValue: The minimum value allowed for the property.

  • maxValue: The maximum value allowed for the property.

  • softMinValue: The minimum value which should be suggested by the UI for the property.

  • softMaxValue: The maximum value which should be suggested by the UI for the property.

Result eddy_api::NodeLayoutPropertyFlags(ResourceHandle nodeHandle, const char *propertyName, bool *isEditable, bool *isFilePath, bool *isFilePathWrite, bool *isFilePathRead, bool *isMultiline, bool *isColor)

Gets various flags for a property from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • isEditable: Specifies if the property should be allowed to be edited by the user.

  • isFilePath: Specifies that the property represents a file path.

  • isFilePathWrite: Specifies that the property is a file path that will be used for writing.

  • isFilePathRead: Specifies that the property is a file path that will be used for reading.

  • isMultiline: Specifies that the property is a multiple line string.

  • isColor: Specifies that the property is a color.

Result eddy_api::NodeLayoutPropertyEnabled(ResourceHandle nodeHandle, const char *propertyName, bool *isEnabled)

Checks if the specified property is currently enabled in the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • propertyName: The name of the property.

  • isEnabled: Stores the result of the query.

Result eddy_api::NodeLayoutAddGroupProperty(ResourceHandle nodeHandle, const char *groupName, const char *propertyName, const char *propertyDisplayName, const char *propertyShortDisplayName, const char *tooltip)

Adds a new property to the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

  • propertyName: The name of the property.

  • propertyDisplayName: The display name of the property. Can be a nullptr, in which case it will be the same as the property name.

  • propertyShortDisplayName: A short display name for the property. Used when a property is exposed as a plug. Can be a nullptr, in which case it will be the same as the regular display name.

  • tooltip: A tooltip describing the property. Can be a nullptr.

Result eddy_api::NodeLayoutRemoveAllGroupProperties(ResourceHandle nodeHandle, const char *groupName)

Removes all properties in the specified group from the node layout.

Parameters
  • nodeHandle: The handle of the node.

  • groupName: The name of the group.

ChannelList functions

Result eddy_api::CreateChannelList(ResourceHandle *channelInfoMapHandle)

Creates an empty ChannelList object

Parameters
  • channelInfoMapHandle: Stores the newly created handle to the resource.

Result eddy_api::ChannelListAddScalarChannel(ResourceHandle channelListHandle, const char *channelName, bool enabled, float defaultValue, bool canInterpolate, const char *interpolationMode)

Add a scalar channel definition to a ChannelList object. See Interpolation Types for valid values for the interpolationMode parameter.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the new channel.

  • enabled: Specifies if the channel is enabled. For example used by cache loaders to determine if this channel should be loaded.

  • defaultValue: Default value of the new channel.

  • canInterpolate: Specifies if the channel requires an interpolator. Channels based on an implicit field will not need an interpolator, voxel based channels will need the interpolation mode specified.

  • interpolationMode: The interpolation mode for this channel, if it requires interpolation. Can be nullptr if canInterpolate is false.

Result eddy_api::ChannelListAddIntChannel(ResourceHandle channelListHandle, const char *channelName, bool enabled, int defaultValue)

Add a integer channel definition to a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the new channel.

  • enabled: Specifies if the channel is enabled. For example used by cache loaders to determine if this channel should be loaded.

  • defaultValue: Default value of the new channel.

Result eddy_api::ChannelListAddVectorChannel(ResourceHandle channelListHandle, const char *channelName, bool enabled, const V3f &defaultValue, bool canInterpolate, const char *interpolationMode, const char *vectorTransformType)

Add a vector channel definition to a ChannelList object. See Interpolation Types for valid values for the interpolationMode parameter, and :ref:api-vector-transform-types` for valid values for the vectorTransformType parameter.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the new channel.

  • enabled: Specifies if the channel is enabled. For example used by cache loaders to determine if this channel should be loaded.

  • defaultValue: Default value of the new channel.

  • canInterpolate: Specifies if the channel requires an interpolator. Channels based on an implicit field will not need an interpolator, voxel based channels will need the interpolation mode specified.

  • interpolationMode: The interpolation mode for this channel, if it requires interpolation. Can be nullptr if canInterpolate is false.

  • vectorTransformType: The transformation type for this vector channel.

Result eddy_api::ChannelListDeleteChannel(ResourceHandle channelListHandle, const char *channelName)

Delete a channel from a ChannelList object

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel to be deleted.

Result eddy_api::ChannelListIsDynamic(ResourceHandle channelListHandle, bool *isDynamic)

Queries if a ChannelList object is in dynamic mode (i.e. allowing user channel creation/deletion)

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • isDynamic: Stores the result of the query.

Result eddy_api::ChannelListChannelNames(ResourceHandle channelListHandle, PUSH_STRING_CALLBACK callback, void *callbackData)

Gather all the channel names contained in a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • callback: Callback function that will receive the string values from the resource.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::ChannelListChannelType(ResourceHandle channelListHandle, const char *channelName, SET_STRING_CALLBACK callback, void *callbackData)

Query the type of a specific channel. See Node data types for the possible result values.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • callback: Callback function that will receive the string value from the resource.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::ChannelListChannelEnabled(ResourceHandle channelListHandle, const char *channelName, bool *enabled)

Query if it the channel has been enabled.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • enabled: Reference to the variable used to store the result.

Result eddy_api::ChannelListChannelCanInterpolate(ResourceHandle channelListHandle, const char *channelName, bool *canInterpolate)

Query if the channel can be interpolated.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • canInterpolate: Reference to the variable used to store the result.

Result eddy_api::ChannelListChannelInterpolationMode(ResourceHandle channelListHandle, const char *channelName, SET_STRING_CALLBACK callback, void *callbackData)

Query the interpolation mode of a specific channel. See Interpolation Types for the possible result values.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • callback: Callback function that will receive the string value from the resource.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::ChannelListChannelVectorTransformType(ResourceHandle channelListHandle, const char *channelName, SET_STRING_CALLBACK callback, void *callbackData)

Query the vector transform type of a specific channel. See Vector Transform Types for the possible result values.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • callback: Callback function that will receive the string value from the resource.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::ChannelListChannelDefaultValue(ResourceHandle channelListHandle, const char *channelName, ResourceHandle *defaultValue)

Query the default value of a specific channel.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelName: Name of the channel used for this query.

  • defaultValue: Handle of the resource used to store the resulting typed defaultValue. Note that this is always a new handle, so it must be freed using eddy_api::ReleaseResource like any other handle.

Result eddy_api::ChannelListParseCacheFile(ResourceHandle channelListHandle, const char *fileName)

Parse the contents of a supported cache file and populate a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • fileName: name of the cache file. Supported file types are : OpenVDB (*.vdb ).

Result eddy_api::ChannelListParseParticleCacheFile(ResourceHandle channelListHandle, const char *fileName)

Parse the contents of a supported particle cache file and populate a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • fileName: name of the particle cache file. Supported file types are : OpenVDB Points (*.vdb ).

Result eddy_api::ChannelListParseChannelSet(ResourceHandle channelListHandle, ResourceHandle channelSetDataHandle)

Parse the contents of a ChannelSet object and populate a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • channelSetDataHandle: Handle of the resource that stores the ChannelSet object.

Result eddy_api::ChannelListParseParticleSystem(ResourceHandle channelListHandle, ResourceHandle particleSystemDataHandle)

Parse the contents of a ParticleSystem object and populate a ChannelList object.

Parameters
  • channelListHandle: Handle of the resource that stores the ChannelList object.

  • particleSystemDataHandle: Handle of the resource that stores the ChannelSet object.

Image functions

Result eddy_api::CreateImage(ResourceHandle *imageHandle, const void *sourceData, const char *sourceFormatName, const char *formatName, int width, int height, bool invertY)

Creates a new image resource from the given source data. See Image Formats for valid values for the sourceFormatName and formatName parameters.

Parameters
  • imageHandle: Stores the new handle for the image resource.

  • sourceData: Source image data, must be in the format specified by sourceFormatName.

  • sourceFormatName: Format of the source data.

  • formatName: Format of the new image resource. If this is different that the sourceFormatName then the data will be converted.

  • width: Width of the image in pixels.

  • height: Height of the image in pixels.

  • invertY: Specifies if the image data should be flipped. Image data usually starts at the top-left, however if this is true then the image data will be interpreted as starting at the bottom left.

Result eddy_api::ImageSize(ResourceHandle imageHandle, int *width, int *height)

Gets the size of an image.

Parameters
  • imageHandle: The handle of the image resource.

  • width: Pointer to the variable that will store the width of the image.

  • height: Pointer to the variable that will store the height of the image.

Result eddy_api::ImageFormat(ResourceHandle imageHandle, SET_STRING_CALLBACK callback, void *callbackData)

Gets the format of an image. See Image Formats for the list of formats that can be returned.

Parameters
  • imageHandle: The handle of the image resource.

  • callback: Callback function that will receive the image format name.

  • callbackData: User data that will be passed to the callback.

Result eddy_api::ImageGetData(ResourceHandle imageHandle, void *buffer)

Copies the pixel data from an image into the given buffer.

Parameters
  • imageHandle: The handle of the image resource.

  • buffer: The pointer to the buffer which will store the returned image data.

ImageGenerator functions

Result eddy_api::ImageGeneratorGetData(ResourceHandle imageGeneratorHandle, int x, int y, int w, int h, const char *formatName, int rowStride, void *imageData)

Requests image data from an ImageGenerator. This will cause the source of the image to actually be evaluated for the requested region. See Image Formats for valid values for the formatName parameter.

Parameters
  • imageGeneratorHandle: The handle of the ImageGenerator resource.

  • x: Left pixel coordinate of the image region to return.

  • y: Top pixel coordinate of the image region to return.

  • w: Width of the image region to return.

  • h: Height of the image region to return.

  • formatName: Format of the image data to return. If this is different to the native ImageGenerator format then it will be converted as needed.

  • rowStride: Stride in bytes between rows in the returned image data.

  • imageData: Buffer to store the returned image data.

DeepImage functions

Result eddy_api::CreateDeepImage(ResourceHandle *deepImageHandle, const char *formatName, int width, int height)

Creates a new deep image resource. See Image Formats for valid values for the formatName parameter.

Parameters
  • deepImageHandle: Stores the new handle for the deep image resource.

  • formatName: Format of the new image resource. If this is different that the sourceFormatName then the data will be converted.

  • width: Width of the image in pixels.

  • height: Height of the image in pixels.

Result eddy_api::DeepImageGetNumPixelSamples(ResourceHandle deepImageHandle, int x, int y, int *numDeepSamples)

Get the number of deep samples for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • numDeepSamples: Pointer to the variable that will store the number of deep samples for this pixel.

Result eddy_api::DeepImageSetNumPixelSamples(ResourceHandle deepImageHandle, int x, int y, int numDeepSamples)

Sets the number of deep samples for a given pixel in a DeepImage. This can be set only once for each pixel.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • numDeepSamples: The number of deep samples for this pixel.

Result eddy_api::DeepImageReserveSamples(ResourceHandle deepImageHandle, int totalSampleCount)

Reserves memory for deep samples which will be added. Setting this in advance will avoid unnecessary re-allocation.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • totalSampleCount: The total number of deep samples which should be reserved for the image.

Result eddy_api::DeepImagePixelSamples(ResourceHandle deepImageHandle, int x, int y, void *sampleValues)

Copies the deep colour samples for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • sampleValues: Pointer to the data array into which the deep sample colour values will be copied. This must be large enough to store all the deep sample values for this pixel, given the format.

Result eddy_api::DeepImageSetPixelSamples(ResourceHandle deepImageHandle, int x, int y, const void *sampleValues)

Sets the deep colour samples for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • sampleValues: Pointer to the data array which contains the new deep sample colour values. They must be in the correct format for the image.

Result eddy_api::DeepImagePixelFrontZ(ResourceHandle deepImageHandle, int x, int y, float *frontZValues)

Copies the deep sample front Z values for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • frontZValues: Pointer to the data array into which the deep sample front Z values will be copied. This must be large enough to store all the deep samples for this pixel.

Result eddy_api::DeepImageSetPixelFrontZ(ResourceHandle deepImageHandle, int x, int y, const float *frontZValues)

Sets the deep sample front Z values for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • frontZValues: Pointer to the data array which contains the new deep sample front Z values.

Result eddy_api::DeepImagePixelBackZ(ResourceHandle deepImageHandle, int x, int y, float *backZValues)

Copies the deep sample back Z values for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • backZValues: Pointer to the data array into which the deep sample back Z values will be copied. This must be large enough to store all the deep samples for this pixel.

Result eddy_api::DeepImageSetPixelBackZ(ResourceHandle deepImageHandle, int x, int y, const float *backZValues)

Sets the deep sample back Z values for a given pixel in a DeepImage.

Parameters
  • deepImageHandle: The handle for the deep image resource.

  • x: X coordinate of the pixel.

  • y: Y coordinate of the pixel.

  • backZValues: Pointer to the data array which contains the new deep sample back Z values.

DeepImageGenerator functions

Result eddy_api::CreateDeepImageGenerator(ResourceHandle *deepImageGeneratorHandle, const char *formatName, int width, int height, DEEP_IMAGE_GENERATOR_CALLBACK callback, void *callbackData)

Creates a new deep image generator resource. See Image Formats for valid values for the formatName parameter.

Parameters
  • deepImageGeneratorHandle: Stores the new handle for the deep image generator resource.

  • formatName: Format of the new deep image generator resource.

  • width: Width of the image in pixels.

  • height: Height of the image in pixels.

  • callback: Callback function which will be called to provide the deep image data.

  • callbackData: User data which will be passed to the callback.

Result eddy_api::DeepImageGeneratorGetData(ResourceHandle deepImageGeneratorHandle, int x, int y, int w, int h, ResourceHandle deepImageHandle)

Requests deep image data from an DeepImageGenerator. This will cause the source of the image to actually be evaluated for the requested region.

Parameters
  • deepImageGeneratorHandle: The handle of the DeepImageGenerator resource.

  • x: Left pixel coordinate of the image region to return.

  • y: Top pixel coordinate of the image region to return.

  • w: Width of the image region to return.

  • h: Height of the image region to return.

  • deepImageHandle: Handle to a DeepImage that will be filled in with the resulting deep data.

Mesh functions

Result eddy_api::CreateMesh(ResourceHandle *handle)

Creates a new Mesh resource.

Parameters
  • handle: Stores the new handle for the Mesh resource.

Result eddy_api::MeshSetVertices(ResourceHandle handle, unsigned int numVertices, const V3f *vertices)

Set the vertices of the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • numVertices: The number of vertices.

  • vertices: An array of the vertices, these will be copied into the mesh.

Result eddy_api::MeshSetTriangles(ResourceHandle handle, unsigned int numTriangles, const unsigned int *indices)

Sets the faces of the mesh to be the given triangles.

Parameters
  • handle: The handle of the Mesh resource.

  • numTriangles: The number of triangles.

  • indices: An array of vertex indices, these will be copied into the mesh. There should be three indices for each triangle.

Result eddy_api::MeshSetQuads(ResourceHandle handle, unsigned int numQuads, const unsigned int *indices)

Sets the faces of the mesh to be the given quads.

Parameters
  • handle: The handle of the Mesh resource.

  • numQuads: The number of quads.

  • indices: An array of vertex indices, these will be copied into the mesh. There should be four indices for each quad.

Result eddy_api::MeshSetPolygons(ResourceHandle handle, unsigned int numIndices, const unsigned int *indices)

Sets the faces of the mesh to be the given polygons.

Parameters
  • handle: The handle of the Mesh resource.

  • numIndices: The number of indices in the array (note this is not the number of polygons).

  • indices: An array of vertex indices, these will be copied into the mesh. Each polygon is defined in the index list first by a count of the number of vertices in the polygon, followed by that many vertex indices.

Result eddy_api::MeshAddScalarVertexChannel(ResourceHandle handle, const char *channelName, const float *data)

Adds a scalar vertex channel to the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the new channel.

  • data: An array of values for the new channel. Can be a nullptr to leave the channel uninitialized, otherwise the array should contain one value for each vertex in the mesh.

Result eddy_api::MeshAddVectorVertexChannel(ResourceHandle handle, const char *channelName, const char *vectorTransformTypeName, const V3f *data)

Adds a vector vertex channel to the mesh. See Vector Transform Types for valid values for the vectorTransformTypeName parameter.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the new channel.

  • vectorTransformTypeName: Specifies the transformation type for this channel.

  • data: An array of values for the new channel. Can be a nullptr to leave the channel uninitialized, otherwise the array should contain one value for each vertex in the mesh.

Result eddy_api::MeshAddScalarFaceVaryingChannel(ResourceHandle handle, const char *channelName, const float *data)

Adds a scalar face-varying channel to the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the new channel.

  • data: An array of values for the new channel. Can be a nullptr to leave the channel uninitialized, otherwise the array should contain one value for each corner of each face in the mesh. E.g. for a triangle mesh, the array should contain 3*numTriangles values.

Result eddy_api::MeshAddVectorFaceVaryingChannel(ResourceHandle handle, const char *channelName, const char *vectorTransformTypeName, const V3f *data)

Adds a vector face-varying channel to the mesh. See Vector Transform Types for valid values for the vectorTransformTypeName parameter.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the new channel.

  • vectorTransformTypeName: Specifies the transformation type for this channel.

  • data: An array of values for the new channel. Can be a nullptr to leave the channel uninitialized, otherwise the array should contain one value for each corner of each face in the mesh. E.g. for a triangle mesh, the array should contain 3*numTriangles values.

Result eddy_api::MeshSetScalarVertexChannelData(ResourceHandle handle, const char *channelName, const float *data)

Sets the contents of a scalar vertex channel in the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the channel.

  • data: An array of values for the new channel. The array should contain one value for each vertex in the mesh.

Result eddy_api::MeshSetVectorVertexChannelData(ResourceHandle handle, const char *channelName, const V3f *data)

Sets the contents of a vector vertex channel in the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the channel.

  • data: An array of values for the new channel. The array should contain one value for each vertex in the mesh.

Result eddy_api::MeshSetScalarFaceVaryingChannelData(ResourceHandle handle, const char *channelName, const float *data)

Sets the contents of a scalar face-varying channel in the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the channel.

  • data: An array of values for the new channel. The array should contain one value for each corner of each face in the mesh. E.g. for a triangle mesh, the array should contain 3*numTriangles values.

Result eddy_api::MeshSetVectorFaceVaryingChannelData(ResourceHandle handle, const char *channelName, const V3f *data)

Sets the contents of a vector face-varying channel in the mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • channelName: Name of the channel.

  • data: An array of values for the new channel. The array should contain one value for each corner of each face in the mesh. E.g. for a triangle mesh, the array should contain 3*numTriangles values.

Result eddy_api::MeshTriangulate(ResourceHandle handle)

Triangulates a mesh.

Parameters
  • handle: The handle of the Mesh resource.

Result eddy_api::MeshRepair(ResourceHandle handle)

Repairs a mesh.

Parameters
  • handle: The handle of the Mesh resource.

Result eddy_api::MeshFillHoles(ResourceHandle handle, float maxArea)

Fills holes in a mesh.

Parameters
  • handle: The handle of the Mesh resource.

  • maxArea: Maximum area of the holes to fill.

Result eddy_api::MeshOrientNormals(ResourceHandle handle)

Orients the normals of a mesh.

Parameters
  • handle: The handle of the Mesh resource.

CompoundMesh functions

Result eddy_api::CreateCompoundMesh(ResourceHandle *handle, int numMeshes, const int *keys, const M44f *transforms, const ResourceHandle *meshHandles)

Creates a new CompoundMesh resource from a list of meshes and transforms.

Parameters
  • handle: Stores the new handle for the CompoundMesh resource.

  • numMeshes: Number of meshes contained in this CompoundMesh.

  • keys: An array of keys, one for each mesh. The keys are used to uniquely identify meshes when interpolating between different CompoundMeshes.

  • transforms: An array of transforms, one for each mesh.

  • meshHandles: An array of handles to the meshes.

Ramp functions

Result eddy_api::CreateScalarRamp(ResourceHandle *handle, float minValue, float maxValue, int numSamples, float *values)

Creates a new scalar ramp resource from a list of samples.

Parameters
  • handle: Stores the new handle for the Ramp resource.

  • minValue: Value at which the ramp should start, corresponding to the first entry in the values array.

  • maxValue: Value at which the ramp should end, corresponding to the last entry in the values array.

  • numSamples: The number of floats in the values array.

  • values: An array of values defining the ramp.

ParticleSystem functions

Result eddy_api::CreateParticleSystem(ResourceHandle *particleSystemHandle)

Creates a new particle system resource.

Parameters
  • particleSystemHandle: Stores the new handle for the particle system resource.

Result eddy_api::ParticleSystemAddFloatChannel(ResourceHandle particleSystemHandle, const char *channelName, float defaultValue)

Adds a float channel to the particle system.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the new channel.

  • defaultValue: Default value for the new channel.

Result eddy_api::ParticleSystemAddVectorChannel(ResourceHandle particleSystemHandle, const char *channelName, const V3f &defaultValue)

Adds a vector channel to the particle system.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the new channel.

  • defaultValue: Default value for the new channel.

Result eddy_api::ParticleSystemAddIntChannel(ResourceHandle particleSystemHandle, const char *channelName, int defaultValue)

Adds a vector channel to the particle system.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the new channel.

  • defaultValue: Default value for the new channel.

Result eddy_api::ParticleSystemAddParticles(ResourceHandle particleSystemHandle, const V3f *positions, int numParticles)

Adds new particles to the particle system.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • positions: An array of positions for the new particles.

  • numParticles: The number of new particles to add.

Result eddy_api::ParticleSystemSetFloatChannel(ResourceHandle particleSystemHandle, const char *channelName, const float *values)

Sets the values stored in a float channel for all particles in the particle system

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the channel.

  • values: An array of values containing the new channel values. The array must be the same size as the current number of particles in the particle system. These values will be copied into the ParticleSystem.

Result eddy_api::ParticleSystemSetVectorChannel(ResourceHandle particleSystemHandle, const char *channelName, const V3f *values)

Sets the values stored in a vector channel for all particles in the particle system

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the channel.

  • values: An array of values containing the new channel values. The array must be the same size as the current number of particles in the particle system. These values will be copied into the ParticleSystem.

Result eddy_api::ParticleSystemSetIntChannel(ResourceHandle particleSystemHandle, const char *channelName, const int *values)

Sets the values stored in a float channel for all particles in the particle system

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the channel.

  • values: An array of values containing the new channel values. The array must be the same size as the current number of particles in the particle system. These values will be copied into the ParticleSystem.

Result eddy_api::ParticleSystemHasFloatChannel(ResourceHandle particleSystemHandle, const char *channelName, bool *hasChannel)

Checks if the particle system contains a float channel with the given name.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the channel to check.

  • hasChannel: Stores the result of the query.

Result eddy_api::ParticleSystemHasVectorChannel(ResourceHandle particleSystemHandle, const char *channelName, bool *hasChannel)

Checks if the particle system contains a vector channel with the given name.

Parameters
  • particleSystemHandle: The handle of the particle system resource.

  • channelName: Name of the channel to check.

  • hasChannel: Stores the result of the query.

RenderTarget functions

Result eddy_api::CreateRenderTarget(ResourceHandle *handle, int width, int height, int numOutputs, const OutputProperties *outputProperties)

Creates a new RenderTarget resource.

Parameters
  • handle: Stores the new handle for the RenderTarget resource.

  • width: Width of the render target.

  • height: Height of the render target.

  • numOutputs: The number of output buffers in the render target. If this is zero then a default output buffer will still be created.

  • outputProperties: An array of OutputProperties structs describing each output buffer.

Result eddy_api::RenderTargetGetWidth(ResourceHandle handle, int *width)

Gets the width of a render target.

Parameters
  • handle: The handle of the render target resource.

  • width: Stores the width of the render target.

Result eddy_api::RenderTargetGetHeight(ResourceHandle handle, int *height)

Gets the height of a render target.

Parameters
  • handle: The handle of the render target resource.

  • height: Stores the height of the render target.

Result eddy_api::RenderTargetGetNumOutputs(ResourceHandle handle, int *numOutputs)

Gets the number of output buffers in a render target.

Parameters
  • handle: The handle of the render target resource.

  • numOutputs: Stores the result of the query.

Result eddy_api::RenderTargetWriteBufferRGBA(ResourceHandle handle, int outputIndex, float *buffer)

Writes the specified output buffer in a render target to a RGBA buffer.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • buffer: A buffer to store the RGBA values from the render target.

Result eddy_api::RenderTargetWriteBufferRegionRGBA(ResourceHandle handle, int outputIndex, int x0, int y0, int x1, int y1, float *buffer, int bufferPitch)

Writes a region of the specified output buffer in a render target to a RGBA buffer.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • buffer: A buffer to store the RGBA values from the render target.

  • bufferPitch: The pitch in bytes of the buffer.

Result eddy_api::RenderTargetNumDeepPixels(ResourceHandle handle, int *numDeepPixels)

Gets the total number of deep pixels in the render target. This can be called to determine the required buffer sizes for the deep data access functions.

Parameters
  • handle: The handle of the render target resource.

  • numDeepPixels: Stores the number of deep pixels in the render target.

Result eddy_api::RenderTargetNumDeepPixelsRegion(ResourceHandle handle, int x0, int y0, int x1, int y1, int *numDeepPixels)

Gets the total number of deep pixels in the specified region of the render target. This can be called to determine the required buffer sizes for the deep data access functions.

Parameters
  • handle: The handle of the render target resource.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • numDeepPixels: Stores the number of deep pixels in the render target.

Result eddy_api::RenderTargetWriteDeepBufferRGBA(ResourceHandle handle, int outputIndex, int *counts, int *offsets, float *rgba, float *aragab, float *frontZ, float *backZ)

Writes the deep data in the specified output buffer to the provided buffers. Use RenderTargetNumDeepPixels to determine the required size of these buffers.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • counts: Number of deep pixels for every screen pixel. This buffer will contain width*height values.

  • offsets: Offset into the deep pixel buffer for every screen pixel. This buffer will contain width*height values.

  • rgba: Deep pixel RGBA values. This buffer must contain 4 float values for each deep pixel.

  • aragab: Optional deep pixel coloured alpha buffer. This can be a nullptr, in which case corrected monochrome alpha values will be used. This buffer must contain 4 float values for each deep pixel.

  • frontZ: Front Z values for each deep pixel. This buffer must contain a value for each deep pixel.

  • backZ: Back Z values for each deep pixel. This buffer must contain a value for each deep pixel.

Result eddy_api::RenderTargetWriteDeepBufferRegionOffsets(ResourceHandle handle, int x0, int y0, int x1, int y1, int *counts, int countPitch, int *offsets, int offsetPitch)

Writes the deep data counts and offsets of the specified region of the output buffer to the provided buffers. Note that the offsets returned are specific for this region.

Parameters
  • handle: The handle of the render target resource.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • counts: Number of deep pixels for every screen pixel.

  • countPitch: Pitch of the counts buffer, in bytes.

  • offsets: Offset into the deep pixel buffer for every screen pixel.

  • offsetPitch: Pitch of the offsets buffer, in bytes.

Result eddy_api::RenderTargetWriteDeepBufferRegionRGBA(ResourceHandle handle, int outputIndex, int x0, int y0, int x1, int y1, const int *offsets, int offsetPitch, float *rgba, float *aragab, float *frontZ, float *backZ)

Writes the deep data in the specified region of the output buffer to the provided buffers. Call RenderTargetWriteDeepBufferRegionOffsets before this to create the offset buffers. Use RenderTargetNumDeepPixelsRegion to determine the required size of the deep data buffers.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • offsets: Offset into the deep pixel buffer for every screen pixel. As generated by RenderTargetWriteDeepBufferRegionOffsets.

  • offsetPitch: Pitch of the offsets buffer, in bytes.

  • rgba: Deep pixel RGBA values. This buffer must contain 4 float values for each deep pixel.

  • aragab: Optional deep pixel coloured alpha buffer. This can be a nullptr, in which case corrected monochrome alpha values will be used. This buffer must contain 4 float values for each deep pixel.

  • frontZ: Front Z values for each deep pixel. This buffer must contain a value for each deep pixel.

  • backZ: Back Z values for each deep pixel. This buffer must contain a value for each deep pixel.

Result eddy_api::RenderTargetIsFullProgressiveFrame(ResourceHandle handle, bool *isFullProgressiveFrame)

Checks if there are enough completed progressions in the render target to draw a full frame without any holes.

Parameters
  • handle: The handle of the render target resource.

  • isFullProgressiveFrame: Stores the result of the query.

Result eddy_api::RenderTargetWriteProgressiveBufferRGBA(ResourceHandle handle, int outputIndex, float *buffer)

Writes the partially rendered specified output buffer in a render target to a RGBA buffer, filling in the gaps.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • buffer: A buffer to store the RGBA values from the render target.

Result eddy_api::RenderTargetWriteProgressiveBufferRegionRGBA(ResourceHandle handle, int outputIndex, int x0, int y0, int x1, int y1, float *buffer, int bufferPitch)

Writes the partially rendered region of the specified output buffer in a render target to a RGBA buffer, filling in the gaps.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • buffer: A buffer to store the RGBA values from the render target.

  • bufferPitch: Pitch of the buffer, in bytes.

Result eddy_api::RenderTargetNumProgressiveDeepPixels(ResourceHandle handle, int *numDeepPixels)

Gets the total number of progressive deep pixels in the render target. This value is only valid for this particular progression, later progressions will have a different number of deep pixels. This can be called to determine the required buffer sizes for the deep data access functions.

Parameters
  • handle: The handle of the render target resource.

  • numDeepPixels: Stores the number of deep pixels in the current progressive buffer.

Result eddy_api::RenderTargetNumProgressiveDeepPixelsRegion(ResourceHandle handle, int x0, int y0, int x1, int y1, int *numDeepPixels)

Gets the total number of progressive deep pixels for the specified region in the render target. This value is only valid for this particular progression, later progressions will have a different number of deep pixels. This can be called to determine the required buffer sizes for the deep data access functions.

Parameters
  • handle: The handle of the render target resource.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • numDeepPixels: Stores the number of deep pixels for the given region in the current progressive buffer.

Result eddy_api::RenderTargetWriteProgressiveDeepBufferRGBA(ResourceHandle handle, int outputIndex, int *counts, int *offsets, float *rgba, float *aragab, float *frontZ, float *backZ)

Writes the deep data for the current progression from the specified output buffer to the provided buffers. Use RenderTargetNumProgressiveDeepPixels to determine the required size of these buffers.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • counts: Number of deep pixels for every screen pixel. This buffer will contain width*height values.

  • offsets: Offset into the deep pixel buffer for every screen pixel. This buffer will contain width*height values.

  • rgba: Deep pixel RGBA values. This buffer must contain 4 float values for each deep pixel.

  • aragab: Optional deep pixel coloured alpha buffer. This can be a nullptr, in which case corrected monochrome alpha values will be used. This buffer must contain 4 float values for each deep pixel.

  • frontZ: Front Z values for each deep pixel. This buffer must contain a value for each deep pixel.

  • backZ: Back Z values for each deep pixel. This buffer must contain a value for each deep pixel.

Result eddy_api::RenderTargetWriteProgressiveDeepBufferRegionRGBA(ResourceHandle handle, int outputIndex, int x0, int y0, int x1, int y1, int *counts, int countPitch, int *offsets, int offsetPitch, float *rgba, float *aragab, float *frontZ, float *backZ)

Writes the deep data for the current progression from the specified region of the output buffer to the provided buffers. Use RenderTargetNumProgressiveDeepPixelsRegion to determine the required size of these buffers.

Parameters
  • handle: The handle of the render target resource.

  • outputIndex: The index of the output buffer.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • counts: Number of deep pixels for every screen pixel. This buffer will contain width*height values.

  • countPitch: Pitch of the counts buffer, in bytes.

  • offsets: Offset into the deep pixel buffer for every screen pixel. This buffer will contain width*height values.

  • offsetPitch: Pitch of the offsets buffer, in bytes.

  • rgba: Deep pixel RGBA values. This buffer must contain 4 float values for each deep pixel.

  • aragab: Optional deep pixel coloured alpha buffer. This can be a nullptr, in which case corrected monochrome alpha values will be used. This buffer must contain 4 float values for each deep pixel.

  • frontZ: Front Z values for each deep pixel. This buffer must contain a value for each deep pixel.

  • backZ: Back Z values for each deep pixel. This buffer must contain a value for each deep pixel.

Result eddy_api::RenderTargetWriteBufferRegionDebugInfo(ResourceHandle handle, int x0, int y0, int x1, int y1, float *buffer, int bufferPitch)

Writes some rendering debugging information to the specified buffer.

Parameters
  • handle: The handle of the render target resource.

  • x0: The left edge X coordinate of the region to write.

  • x1: The right edge X coordinate of the region to write. This is inclusive, i.e. the width of the region is x1-x0+1.

  • y0: The top edge Y coordinate of the region to write.

  • y1: The bottom edge Y coordinate of the region to write. This is inclusive, i.e. the height of the region is y1-y0+1.

  • buffer: Buffer to store the debugging information.

  • bufferPitch: Pitch of the buffer, in bytes.

RenderState functions

Result eddy_api::CreateRenderState(ResourceHandle *renderStateHandle, ResourceHandle renderDataHandle, ResourceHandle renderTargetHandle, int memoryBudgetMB)

Creates a new RenderState resource.

Parameters
  • renderStateHandle: Stores the new handle for the RenderState resource.

  • renderDataHandle: The handle for the RenderData specifying what to render.

  • renderTargetHandle: The handle for the RenderTarget to store the result of the render.

  • memoryBudgetMB: The requested amount of memory to use for the renderer, in MB. Set to zero to determine this automatically.

Result eddy_api::RenderStateReset(ResourceHandle renderStateHandle, ResourceHandle renderDataHandle, ResourceHandle renderTargetHandle, int memoryBudgetMB)

Resets an existing RenderState. This is more efficient than creating a new RenderState as some buffers can be re-used.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • renderDataHandle: The handle for the RenderData specifying what to render.

  • renderTargetHandle: The handle for the RenderTarget to store the result of the render.

  • memoryBudgetMB: The requested amount of memory to use for the renderer, in MB. Set to zero to determine this automatically.

Result eddy_api::RenderStateSetRegion(ResourceHandle renderStateHandle, int x, int y, int w, int h, int pixelSize, int maxSamples)

Requests that only a specific region of the frame be rendered. If this is not called then the full frame will be rendered.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • x: X coordinate of the upper-left pixel of the region to be rendered.

  • y: Y coordinate of the upper-left pixel of the region to be rendered.

  • w: Width in pixels of the region to be rendered.

  • h: Height in pixels of the region to be rendered.

  • pixelSize: Allows the effective pixel size to be increased, effectively rendering at a lower resolution. This can be used for progressive rendering to quickly render lower resolution frames. The lower resolution pixels will be re-used when higher resolution version are requested, they are not wasted work.

  • maxSamples: Limits the maximum number of samples that will be used. This can be used for progressive rendering by increasing this for subsequent render requests. When this is 0, there is no limit applied, and the render will run until the maximum number of samples specified in the RenderSettings has been exhausted.

Result eddy_api::RenderStateIsRegionFinished(ResourceHandle renderStateHandle, int x, int y, int w, int h, int pixelSize, int maxSamples, bool *isRegionFinished)

Checks if all the pixels in the specified region have finished rendering.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • x: X coordinate of the upper-left pixel of the region to check.

  • y: Y coordinate of the upper-left pixel of the region to check.

  • w: Width in pixels of the region to check.

  • h: Height in pixels of the region to check.

  • pixelSize: Allows the effective pixel size to be increased, effectively rendering at a lower resolution.

  • maxSamples: Reduces how many samples must be done for a pixel to be considered finished. If this is zero then the full sample count is used.

  • isRegionFinished: Stores the result of the query.

Result eddy_api::RenderStateRequestFullUpdate(ResourceHandle renderStateHandle)

Requests that the next rendering call should update all pixels in the RenderTarget, even those that have not yet finished rendering. The usual behavior is to update pixels on the host only when they have completed.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

Result eddy_api::RenderStateKillCurrentProgressions(ResourceHandle renderStateHandle)

Removes all currently processing pixels, discarding any partial work done. This effectively cancels a render that was in progress. It can be started again by calling RenderStateSetRegion.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

Result eddy_api::RenderStateIsMultiPassEnabled(ResourceHandle renderStateHandle, bool *isEnabled)

Queries if the render has multi-pass enabled. A multi-pass render will report itself as finished after each pass, and RenderStateStartNextPass should be used to start the next pass.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • isEnabled: Stores the result of the query.

Result eddy_api::RenderStateStartNextPass(ResourceHandle renderStateHandle, bool *isNextPass)

Starts the next pass of a multi-pass render. The previous pass must have completed before calling this.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • isNextPass: Stores a value indicating if there was another pass available. If this is false then all passes are complete.

Result eddy_api::RenderStatePrintStatistics(ResourceHandle renderStateHandle)

Prints some debugging statistics about the render.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

Result eddy_api::RenderStateGetFinalConvergenceInfo(ResourceHandle renderStateHandle, float *convergedPixelsPercent, float *usedProgressionsPercent)

Gets some information about the result of a render.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • convergedPixelsPercent: Stores the percentage of pixels that converged to the required error threshold within the available progressions.

  • usedProgressionsPercent: Stores the percentage of available progressions that were used by this render.

Result eddy_api::RenderStateRender(ResourceHandle renderStateHandle)

Starts a render and waits until the render is complete.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

Result eddy_api::RenderStateRenderPartial(ResourceHandle renderStateHandle, bool *isFinished, bool *isTargetUpdated)

Starts a render and returns as soon as the first batch of work is complete. To finish a render this must be called repeatedly until it reports the render is finished.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • isFinished: Stores a flag indicating if the render is finished. If not finished this function should be called again.

  • isTargetUpdated: Stores a flag indicating if this function call has updated the RenderTarget.

Result eddy_api::RenderStateRenderAsynchronous(ResourceHandle renderStateHandle, PROGRESSIVE_RENDER_CALLBACK callback, void *callbackData)

Starts a render and returns immediately. The render will run asynchronously, and the supplied callback function will be called whenever work has been completed. This function can then be called again to continue rendering. Note that the callback may be called multiple times for a single call to this function.

The callback will generally be called on a different thread. Note that this function, like all others in the API, cannot be called on multiple threads. Therefore this function cannot be called directly from the callback, preferably it should be called from the main thread and thread synchronization primitives used to ensure safety.

Parameters
  • renderStateHandle: The handle of the RenderState resource.

  • callback: The callback function. This will be called on a different thread, possibly multiple times.

  • callbackData: Data that will be passed to the callback.

Visualizer functions

Result eddy_api::CreateVisualizer(ResourceHandle *visualizerHandle, const char *type)

Creates a new Visualizer.

Parameters
  • visualizerHandle: Stores the new handle for the Visualizer resource.

  • type: The type name of the visualizer ( Volume, VolumeDebug ).

Result eddy_api::VisualizerDraw(ResourceHandle visualizerHandle, ResourceHandle visualizerDataHandle)

Draws the visualizer data, using the specified visualizer, into the OpenGL viewport.

Parameters
  • visualizerHandle: The handle of the Visualizer resource.

  • visualizerDataHandle: The handle of the VisualizerData resource.

VisualizerData functions

Result eddy_api::VisualizerDataBounds(ResourceHandle visualizerDataHandle, V3f *bmin, V3f *bmax)

Gets the bounding box of the visualizer data.

Parameters
  • visualizerDataHandle: The handle of the VisualizerData resource.

  • bmin: Stores the minimum bounding box corner.

  • bmax: Stores the maximum bounding box corner.

Denoiser functions

Result eddy_api::CreateDenoiser(ResourceHandle *handle, const char *engineTypeName)

Creates a new denoiser resource.

Parameters
  • handle: Stores the new handle for the denoiser resource.

  • engineTypeName: Specifies which denoiser engine to use.

Result eddy_api::CreateDenoiserData(ResourceHandle *handle, float *input, unsigned int width, unsigned int height, unsigned int rowStride, unsigned int pixelStride, unsigned int albedoOffset, unsigned int normalOffset, float *output, unsigned int outputPixelStride, unsigned int outputRowStride, bool isHdr)

Creates a new denoiser resource.

Parameters
  • handle: Stores the new handle for the denoiser resource.

Result eddy_api::DenoiserRun(ResourceHandle denoiserHandle, ResourceHandle denoiserData)

Denoises an image.

Parameters
  • denoiserHandle: Handle of the denoiser.

  • denoiserData: Handle of the denoiserData. needed.

Error handling functions

Result eddy_api::GetLastErrorStringLength(int *bufferLength)

Gets the required buffer size for the next call to eddy_api::GetLastErrorString, including the null terminator for the string.

Parameters
  • bufferLength: Pointer to the int that will be set to the required buffer size.

Result eddy_api::GetLastErrorString(char *buffer, int bufferLength)

Gets more detailed information about an error code returned from another function. This is only valid immediately after the function that returned the error code.

Parameters
  • buffer: A pointer to the buffer in which to store the detailed error string.

  • bufferLength: The size of the supplied buffer. If the error string is too large to fit in the buffer then it will be truncated. eddy_api::GetLastErrorStringLength can be called to determine the required buffer size in advance.

Miscellaneous functions

Result eddy_api::CategoryNodeList(const char *categoryName, PUSH_STRING_CALLBACK typeCallback, void *typeCallbackData, PUSH_STRING_CALLBACK displayTypeCallback, void *displayTypeCallbackData, PUSH_STRING_CALLBACK displayCategoryCallback, void *displayCategoryCallbackData)

Collects all the nodes in a given category.

Parameters
  • categoryName: Name of the category of nodes to collect. If this is null then nodes from all categories will be collected.

  • typeCallback: Callback that will receive the node type names.

  • typeCallbackData: User data for the typeCallback.

  • displayTypeCallback: Callback that will receive the display names of the nodes.

  • displayTypeCallbackData: User data for the displayTypeCallback.

  • displayCategoryCallback: Callback that will receive the display categories of the nodes.

  • displayCategoryCallbackData: User data for the displayCategoryCallback.

Result eddy_api::FieldBounds(ResourceHandle fieldHandle, V3f *bmin, V3f *bmax)

Query the bounding box of a field resource

Parameters
  • fieldHandle: Handle of the field resource.

  • bmin: Stores the minimum bounding box corner.

  • bmax: Stores the maximum bounding box corner.

Result eddy_api::GetEnumValues(const char *enumName, PUSH_STRING_CALLBACK valueCallback, void *valueCallbackData, PUSH_STRING_CALLBACK displayValueCallback, void *displayValueCallbackData)

Gets the allowed values and display values for a registered enum type.

Parameters
  • enumName: Name of the registered enum type.

  • valueCallback: Callback that will receive the allowed values for the enum.

  • valueCallbackData: User data for the valueCallback.

  • displayValueCallback: Callback that will receive the display names of the allowed enum values.

  • displayValueCallbackData: User data for the displayValueCallback.

Result eddy_api::GetPredefinedOutputNames(PUSH_STRING_CALLBACK nameCallback, void *nameCallbackData)

Gets the built-in predefined output names.

Parameters
  • nameCallback: Callback that will receive the output names.

  • nameCallbackData: User data for the nameCallback.

Result eddy_api::FileExists(const char *fileName, bool *exists)

Tests if a file exists.

Parameters
  • fileName: Name of the file to check.

  • exists: Stores the result of the query.

Result eddy_api::FileSize(const char *fileName, unsigned long long *bytes)

Returns the size of a file.

Parameters
  • fileName: Name of the file from which to get the size.

  • bytes: Stores the returned size of the file in bytes.

Result eddy_api::CudaMemoryStats(int *freeMemMB, int *totalMemMB)

Gets some memory usage information from CUDA.

Parameters
  • freeMemMB: The free memory available in MB.

  • totalMemMB: The total memory available in MB.

Result eddy_api::PrintMemoryManagerStatistics()

Prints some debugging information about the memory manager.

Result eddy_api::PrintResourceManagerStatistics()

Prints some debugging information about the resource manager.

Enums

enum type Result

Error code returned by all functions. Use eddy_api::GetLastErrorString to get more detailed information about an error.

Values:

EDDY_RESULT_SUCCESS = 0

Success return code.

EDDY_RESULT_FAILURE = 1

Generic error code, use GetLastErrorString to find out more details.

EDDY_RESULT_UNLICENSED =             2

No license was found, or the license does not support the required functionality.

EDDY_RESULT_OUT_OF_MEMORY = 3

Ran out of GPU memory.

EDDY_RESULT_EDDYSCRIPT_COMPILER_ERROR = 4

An EddyScript compilation produced an error.

EDDY_RESULT_INVALID = 5

Invalid parameter, use GetLastErrorString to find out more details.

EDDY_RESULT_INSUFFICIENT_BUFFER_SIZE = 6

The supplied buffer was not large enough to store the result.

enum type PropertyFlags

Flags for node properties.

Values:

EDDY_PROPERTYFLAGS_NOT_KEYABLE = (1 << 0)

The property does not support keyed values.

EDDY_PROPERTYFLAGS_NOT_PLUGGABLE = (1 << 1)

The property can not be exposed as a plug.

EDDY_PROPERTYFLAGS_REQUIRES_RESET = (1 << 2)

Modifying the property will cause the evaluator to reset.

EDDY_PROPERTYFLAGS_ALLOW_FIELD_PLUG = (1 << 3)

The property can be overridden by a field plug, where the field has the same type as the property.

EDDY_PROPERTYFLAGS_USER =             (1 << 4)

Indicates that this property is managed by the user, e.g. an expression script parameter.

enum type PlugFlags

Flags for node plugs

Values:

EDDY_PLUGFLAGS_OPTIONAL =             (1 << 0)

The input plug is optional and does not have to be connected for evaluation.

EDDY_PLUGFLAGS_ARRAY = (1 << 1)

The input plug can accept multiple connections.

EDDY_PLUGFLAGS_ENFORCE_VALID_TIMESTEPPING = (1 << 2)

Timestep start/end times are strictly enforced when evaluating this output, no skipping is allowed.

EDDY_PLUGFLAGS_TIME_DEPENDENT =             (1 << 3)

Result when evaluating this output is dependent on the evaluation time, i.e. same inputs at a different time produces a different result.

EDDY_PLUGFLAGS_USER =             (1 << 4)

Indicates that this plug is managed by the user, e.g. an expression script input.

Typedefs

typedef typedef uint32_t ResourceHandle

Provides a reference to a resource created by the API. This must be explicitly released by eddy_api::ReleaseResource when it is no longer needed.

typedef typedef long long Ticks

Time measured in ticks.

typedef typedef void (*SET_STRING_CALLBACK)(const char *str, void *closure)

Callback function type used to return a string from a function.

typedef typedef void (*PUSH_STRING_CALLBACK)(const char *str, void *closure)

Callback function type used to return multiple string values from a function.

typedef typedef bool (*PROGRESSIVE_RENDER_CALLBACK)(void *closure, bool isFinished, bool isIdle, bool isTargetUpdated)

Callback function from RenderStateRenderAsynchronous.

Parameters
  • closure: Data passed to RenderStateRenderAsynchronous.

  • isFinished: Set if the render is finished.

  • isIdle: Set if the RenderState is now idle, with no further work to do. This will be the last callback until more rendering is started.

  • isTargetUpdated: Set if the RenderTarget has been updated since the last callback with new data.

typedef typedef bool (*DEEP_IMAGE_GENERATOR_CALLBACK)(int x, int y, int w, int h, ResourceHandle deepImageHandle, void *userdata)

Callback function for CreateDeepImageGenerator.

Parameters
  • x: X coordinate of the upper-left corner of the requested region.

  • y: Y coordinate of the upper-left corner of the requested region.

  • w: Width of the requested region.

  • h: Height of the requested region.

  • deepImageHandle: The deep image which will store the requested region.

  • userdata: User data passed to the callback.