INodeTypeForwarding
- class omni.graph.core.INodeTypeForwarding
Bases:
_INodeTypeForwarding
@brief Interface that creates a forward on a request for a node type to a different node type
There are a couple of different common use cases for needing a forward: - Node type gets renamed - Node type moves from one extension to another
The node type forward specifies the unique node type name so if extension omni.my.extension has a node whose type is specified as “MyNode” then the forward must be from “omni.my.extension.MyNode”.
The forwarding is version-based as well, where the version is a minimum number required for forwarding, the usual node version update mechanism not withstanding. For example, if you set up a forward from “omni.nodes.MyNode” version 2 to “omni.my_nodes.MyNode” version 3 then any larger version number is forwarded to the same location: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(3) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(4) -> omni.my_nodes.MyNode(3)
The forwards can also have multiple versions forwarding to different locations, so if on top of the above forward you also add a forward from “omni.nodes.MyNode” version 3 to “omni.new_nodes.MyNode” version 4 then these become the example forward locations: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(3) -> omni.new_nodes.MyNode(4) - omni.nodes.MyNode(4) -> omni.new_nodes.MyNode(4)
Version numbers lower than the first forward are left as-is - omni.nodes.MyNode(1) -> omni.nodes.MyNode(1)
- @note The usual mechanism of calling updateVersionNumber on a node is only applied after a forward so in the above
cases requesting omni.nodes.MyNode(2) does not call updateVersionNumber(1,2) on your omni.nodes.MyNode implementation.
Node type forwards are associative, so if A forwards to B and B forwards to C then when you request A you get C. Adding a new forward from omni.my_nodes.MyNode(3) to omni.new_nodes.MyNode(2) above yields this forwarding: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) -> omni.new_nodes.MyNode(2) - omni.nodes.MyNode(3) -> omni.new_nodes.MyNode(4) - omni.nodes.MyNode(4) -> omni.new_nodes.MyNode(4)
Methods
__init__
(*args, **kwargs)Overloaded function.
define_forward
(self, forward_name, ...)@brief Define a new node type forward.
find_forward
(forward_name, forward_version)Find a node type name replacement corresponding to the given node type forward name and version.
Get the list of available node type forwarding.
remove_forward
(self, forward_name, ...)@brief Remove an existing node type forward.
remove_forwarded_type
(self, referenced_name, ...)@brief Remove forwards referencing a given node type name.
Attributes
forward_count
- __init__(*args, **kwargs)
Overloaded function.
__init__(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, arg0: omni.core._core.IObject) -> None
__init__(self: omni.graph.core._omni_graph_core.INodeTypeForwarding) -> None
- define_forward(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, forward_name: str, forward_version: int, replacement_name: str, replacement_version: int, replacement_extension_id: str) bool
@brief Define a new node type forward. It is allowed to have the same forwardName to be defined more than once, however the “forwardVersion” must be different from any existing ones. Later “forwardVersion” numbers will supersede earlier ones in this case. For example if you have these two forwards set up: - OldNode,1 -> BetterNode,1,omni.better.extension - OldNode,2 -> MuchBetterNode,1,omni.much_better.extension
then when version 1 of “OldNode” is requested it will treat it as if you requested “BetterNode”, but when versions 2 or later are requested it will instead treat it as if you requested “MuchBetterNode”. These can be chained together: - OldNode,1 -> BetterNode,1,omni.better.extension - BetterNode,1 -> MuchBetterNode,1,omni.much_better.extension
@param[in] forwardName Name to be replaced @param[in] forwardVersion The first version of the forward name to be replaced @param[in] replacementName Node type name that replaces the forwarded name @param[in] replacementVersion Version of the node type that replaces the forwarded name @param[in] extensionId Extension ID in which the replacement node type can be found @return false if there was already an forward with the given name and initial version number
- static find_forward(forward_name: str, forward_version: int) tuple
Find a node type name replacement corresponding to the given node type forward name and version.
- Parameters
forward_name – Name of the node type forward to look up
forward_version – Version number of the node type forward being looked up
- Returns
- Matching forward as (new_name, new_version, new_extension) if one was found, else None.
e.g. find_forward(“OldNode”, 2) -> (“NewNode”, 1, “omni.my.extension”)
- Return type
tuple[str,int,str] | None
- Raises
ValueError – if there was no forward for the given name/version combination
- static get_forwarding() object
Get the list of available node type forwarding.
- Returns
- Dictionary of all defined forwarding as
(forwarded_name, forwarded_version): (new_name, new_version, new_extension) if it succeeded, else None. e.g. {(“OldNode”, 2): (“NewNode”, 1, “omni.my.extension”)}
- Return type
dict[tuple[str,str], tuple[str,int,str]] | None
- Raises
ValueError – if retrieval of the forwarding failed
- remove_forward(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, forward_name: str, forward_version: int) bool
@brief Remove an existing node type forward. Since an forwardName + forwardVersion combination is unique there is no need to pass in the replacement information. Only the forward with the matching version is removed. Any others with the same name remain untouched.
@param[in] forwardName Forward to be removed @param[in] forwardVersion The version at which the forward is to be removed @return false if there was already an forward with the given name and initial version number
- remove_forwarded_type(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, referenced_name: str, referenced_version: int) int
@brief Remove forwards referencing a given node type name.
@param[in] referencedName Forward to be removed @param[in] referencedVersion The version at which the forward is to be removed @return number of forwards to the given type that were removed