Blender Git Loki
Git Commits -> Revision 01755ae
Revision 01755ae by Lukas Toenne (tile) December 12, 2011, 10:22 (GMT) |
Generalization of group node conversion in the new compositor. This allows groups inside groups to work and also simplifies the code a lot. * Ungrouping of group nodes ("expanding" might be a better name?) is done as part of the general addNodeTree function now. This way the ungrouping happens recursively on all levels of group nodes. * The adding of a node tree works in three basic steps: 1) Add all nodes, including group nodes (ignoring internals of the group at this point) 2) Add links between nodes (again, no group internals here) 3) Expand all newly added group nodes from this tree, which replaces them with internal nodes and proxy nodes for inputs and outputs. * Expanding the node tree works different now: 1) First add proxy nodes for all input/output sockets. The group node sockets are then reconnected to the "outer" proxy sockets, while the internal group sockets (sock->groupsock) are assigned to the "inner" proxy sockets. 2) Then the actual inner node tree is added, which connects internal nodes to the proxies An important change is that the list of nodes, which is used to look up link targets by their bNode/bNodeSocket pairs, is now limited to the nodes added from the current tree (including proxies from the group). This is necessary to avoid ambiguous assignments from other instances of the same group node type! An advantage is also that now no more special group socket pointers and "insideGroup" flags are needed for the Socket class, making the code a bit simpler. * Currently the "actual data type" is not converted on proxy nodes (XXX TODO in the patch), this should be revisited. |
Commit Details:
Full Hash: 01755ae5372e32ec934fc93f3ea068a2a4ba3647
SVN Revision: 42580
Parent Commit: 1948bd1
Lines Changed: +147, -236
15 Modified Paths:
/source/blender/compositor/intern/COM_ExecutionSystem.cpp (+1, -2) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp (+69, -78) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystemHelper.h (+5, -34) (Diff)
/source/blender/compositor/intern/COM_InputSocket.cpp (+2, -7) (Diff)
/source/blender/compositor/intern/COM_InputSocket.h (+0, -10) (Diff)
/source/blender/compositor/intern/COM_Node.cpp (+23, -41) (Diff)
/source/blender/compositor/intern/COM_Node.h (+15, -6) (Diff)
/source/blender/compositor/intern/COM_OutputSocket.cpp (+0, -7) (Diff)
/source/blender/compositor/intern/COM_OutputSocket.h (+0, -3) (Diff)
/source/blender/compositor/intern/COM_Socket.cpp (+0, -1) (Diff)
/source/blender/compositor/intern/COM_Socket.h (+0, -4) (Diff)
/source/blender/compositor/nodes/COM_GroupNode.cpp (+16, -30) (Diff)
/source/blender/compositor/nodes/COM_GroupNode.h (+1, -1) (Diff)
/source/blender/compositor/nodes/COM_SocketProxyNode.cpp (+12, -8) (Diff)
/source/blender/compositor/nodes/COM_SocketProxyNode.h (+3, -4) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp (+69, -78) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystemHelper.h (+5, -34) (Diff)
/source/blender/compositor/intern/COM_InputSocket.cpp (+2, -7) (Diff)
/source/blender/compositor/intern/COM_InputSocket.h (+0, -10) (Diff)
/source/blender/compositor/intern/COM_Node.cpp (+23, -41) (Diff)
/source/blender/compositor/intern/COM_Node.h (+15, -6) (Diff)
/source/blender/compositor/intern/COM_OutputSocket.cpp (+0, -7) (Diff)
/source/blender/compositor/intern/COM_OutputSocket.h (+0, -3) (Diff)
/source/blender/compositor/intern/COM_Socket.cpp (+0, -1) (Diff)
/source/blender/compositor/intern/COM_Socket.h (+0, -4) (Diff)
/source/blender/compositor/nodes/COM_GroupNode.cpp (+16, -30) (Diff)
/source/blender/compositor/nodes/COM_GroupNode.h (+1, -1) (Diff)
/source/blender/compositor/nodes/COM_SocketProxyNode.cpp (+12, -8) (Diff)
/source/blender/compositor/nodes/COM_SocketProxyNode.h (+3, -4) (Diff)