Commit Graph

37 Commits

Author SHA1 Message Date
1a19cbb166 fix for some errors when unlinking.
- movieclip unlink didn't clear node ID pointers from the scene (leaving dangling pointers).
- mask datablock unlink was clearning references from scene nodes twice.
2012-10-01 07:54:37 +00:00
ed1cda9a6c style cleanup 2012-09-30 06:12:47 +00:00
e75f5c8208 quiet -Wmissing-prototypes warnings, and enable this warning by default for C with gcc.
helps for finding unused functions and making functions static, also did some minor code cleanup.
2012-09-15 01:52:28 +00:00
aaafa0c2fe code cleanup: move file string defines into BLI_path_utils.h, BKE_utildefines is now unused but keep incase we want to add defines there later. 2012-09-03 22:04:14 +00:00
9ecc6fdcc7 style cleanup 2012-08-23 07:10:48 +00:00
Lukas Toenne
f961afece0 Fix for incomplete Reroute node updates. Adding reroute nodes by spliting links would often result in unrelated color sockets or otherwise miss updates.
The reason is that the per-node updates used for Reroute node type inheritance are not supposed to be looking at connected nodes, they are purely for "local" updates. For this sort of "global" update which requires depth-first search, the update function on the node tree level must be used instead.
2012-08-06 18:49:28 +00:00
Lukas Toenne
e276a7c805 Fix for Reroute nodes: Reloading could change socket types without updating the socket data structs, leading to crash. This is caused by the node verification procedure, which resets any socket type to the initial type defined in the socket templates. Adding sockets dynamically without templates solves this (the sockets are then ignored by verification). 2012-08-06 16:25:38 +00:00
Lukas Toenne
6c4510f681 Modification of node groups by adding/removing nodes is not possible yet. This patch extends the 'Make Group' operator and adds a new 'Separate' operator to add such functionality.
1) For inserting into existing groups:
  The 'Make Group from selected' (CTRL+g) operator shows a selection popup (like the object parenting operator), with options depending on the type of the active node (last selected):
  * "New" -> regular operator, creates new group type with all selected nodes inside.
  * "Insert" (only if active node is a group) -> adds all other selected nodes into the group.

  Currently still prohibits groups inside groups in general, though would be technically possible as long as no actual recursion occurs (group containing itself).

2) For extracting from an existing group:
  New 'Separate from group' operator (p), works similar to separating vertices/edges/faces from mesh. Two modes:
  * "Copy" makes a copy of the nodes in the parent tree, but keeps the original group intact.
  * "Move" removes selected nodes from the node group and adds them to the parent tree
2012-06-12 08:44:46 +00:00
Lukas Toenne
caa59446ab Reroute node socket types update automatically from connections when possible. This prevents unnecessary conversions and breaking connections when linking incompatible types to the reroute color sockets (point in case: cycles shaders). 2012-06-12 08:28:25 +00:00
Lukas Toenne
edecf49d84 Fix for node 'make group' operator in combination with frame nodes. When a selected node is attached to an unselected frame, the parent pointer would end up pointing to a different ID data block. 2012-06-11 15:28:45 +00:00
5189356d58 style cleanup 2012-06-04 20:11:09 +00:00
Lukas Toenne
17935168c0 Reroute nodes, by Jeroen Bakker (patch #28443).
By holding shift and "cutting" a node link a new reroute helper node can be inserted. This consists of a single socket that can be used to insert additional connection points into a link. This can be used to keep a connection point in the tree when  deleting a node, or to control the path of long connections for layout cleanup.
2012-06-01 12:38:03 +00:00
b33f0ef0e3 style cleanup 2012-05-27 19:40:36 +00:00
dab1d8e487 style cleanup 2012-05-22 22:03:41 +00:00
Lukas Toenne
53b01d9002 A number of new features for the node editor in general and the Frame node in particular.
For an detailed user-level description of new features see the following blogpost:

http://code.blender.org/index.php/2012/05/node-editing-tweaks/

TL;DR:
* Frame node gets more usable bounding-box behavior
* Node resizing has helpful mouse cursor indicators and works on all borders
* Node selection/active colors are themeable independently
* Customizable background colors for nodes (useful for frames visual
distinction).
2012-05-22 14:13:33 +00:00
af3e348430 code cleanup: use TRUE/FALSE rather then 1/0 for better readability, also replace do prefix with do_ for bool vars. 2012-05-19 13:28:19 +00:00
a731e13043 code cleanup: function naming, use BKE_*type* prefix. 2012-05-05 14:03:12 +00:00
b2a9d012b4 Fix #31236: linking a socket of a different type to an existing node group output
would crash, did not convert default value storage correctly.
2012-05-02 15:47:15 +00:00
343edf2722 style cleanup: function calls & whitespace. 2012-04-29 17:11:40 +00:00
5c89138684 style cleanup: comments 2012-04-22 11:54:53 +00:00
ab4a2aaf4a style cleanup: follow style guide for formatting of if/for/while loops, and else if's 2012-03-24 06:38:07 +00:00
7bc693d107 Big step forward nodes UI translation:
*Add menu is now translated.
*Nodes' title is now translated.
*Nodes' sockets' labels are now translated.

However, about the last point, and unless I’m mistaking, we’ll have to add the "i18n tag" N_() to all sockets' names, in the input/ouput templates declaration, in all nodes' files, as those sockets are collections created at runtime, I think po-generating script has no way to access that from bpy.types... Quite a piece of (borring) work. :/
2012-03-17 14:42:44 +00:00
Lukas Toenne
0b412e4136 Cleanup of default_value handling in node sockets.
The structs stored in the anonymous void *default_value in bNodeSocket are now handled completely inside node_socket.c. All allocation/freeing/duplicating for this has been replaced by the appropriate calls to generic API functions (declared in NOD_socket.h).

This will make the default value handling more reliable for future node socket code. Group socket copying and value conversion has also been moved into the generic socket API file.
2012-01-20 13:27:54 +00:00
5c93135ef9 fix [#29887] Alt + g in a node group results in crash 2012-01-14 18:11:45 +00:00
Lukas Toenne
3dead22c73 Improved auto-hiding of unused sockets for collapsed nodes.
Instead of generally hiding all unused sockets in collapsed mode, the sockets now have a new explicit flag SOCK_AUTO_HIDDEN, which is only toggled when the hide_toggle operator is called. This way the auto-hidden sockets stay as they are when nodes are duplicated etc. The new flag is necessary to distinguish between manually hidden sockets (via hide_sockets_toggle operator) and automatically hidden sockets and restore the node state when unhiding a node.
2012-01-08 10:23:19 +00:00
ca7d391de8 Muting node patch: first part
This allows node type init code to have access to the nodetree type object (needed to allow generic muting node initialization). Huge and boring edits...
2011-11-20 16:13:27 +00:00
ac52c79cb1 RenderEngine/Nodes: system to check for shading nodes compatibility
* Scene.use_shading_nodes property to check if RenderEngine is using new shading
  nodes system, and RenderEngine.bl_use_shading_nodes to set this.
* Add mechanism for tagging nodes as being compatible with the old/new system.
2011-11-02 19:24:30 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
5cf593a778 strcpy() --> BLI_strncpy(), where source strings are not fixed and target size is known. 2011-10-19 23:10:54 +00:00
Lukas Toenne
0d7bd0f9b6 Adds an update flag to the bNode struct (similar to bNodeTree->update).
This prevents access to non-existent typeinfo during type initialization,
when node types have been removed and such nodes are deleted from older files.
All blenkernel functions now only set the node->update flag instead of directly
calling the update function.  All operators, etc. calling blenkernel functions
to modify nodes should make a ntreeUpdate call afterward (they already did that
anyway).

Editor/RNA/renderer/etc. high-level functions still can do immediate updates by
using nodeUpdate and nodeUpdateID (replacing NodeTagChanged/NodeTagIDChanged
respectively). These old functions were previously used only for setting
compositor node needexec flags and clearing cached data, but have become generic
update functions that require type-specific functionality (i.e. a valid typeinfo
struct).
2011-10-19 17:08:35 +00:00
Lukas Toenne
da0354e054 Free cache data when creating a new group from selected nodes. This would leave unfreed memory behind otherwise, since node groups don't have internal caches. 2011-10-12 13:53:03 +00:00
58587a3881 replace strncpy with BLI_strncpy, in some cases strncpy was being misused since it doesnt ensure \0 termination.
also dont call CTX_data_scene() twice when checking for function arguments.
2011-09-26 18:51:10 +00:00
274b9c8fb8 whitespace cleanup 2011-09-25 12:31:21 +00:00
84d06f252e tag & comment unused vars with /* UNUSED */ 2011-09-20 08:48:48 +00:00
Lukas Toenne
3dccd96ac7 Fixed potential issue in mirrored loop node sockets. These are currently not used, but clang pointed this out. 2011-09-08 07:05:27 +00:00
271f069b85 SVN maintenance. 2011-09-05 22:04:30 +00:00
Lukas Toenne
8e0fe8bff7 Merged the particles-2010 branch with node improvements into trunk.
This branch adds mostly organizational improvements to the node system by renaming the node folders and files. A couple of internal features have been added too.
Detailed information can be found on the wiki page:

http://wiki.blender.org/index.php/User:Phonybone/Particles2010
2011-09-05 21:01:50 +00:00