Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2012-01-08 14:23:19 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2012-01-08 14:23:19 +0400
commit3dead22c7322cf72ee63a003ba50940abc12e7c9 (patch)
tree47e816c996531c73114afe574fc8b2b0191e0c2c /source/blender/blenloader
parentd6e0d0fd897c33eb581f34150d86247ddba2bb7e (diff)
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.
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/readfile.c65
1 files changed, 64 insertions, 1 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 27a0ddd09cd..bb5682f4ebd 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7547,6 +7547,32 @@ static void do_versions_nodetree_socket_use_flags_2_62(bNodeTree *ntree)
}
}
+/* set the SOCK_AUTO_HIDDEN flag on collapsed nodes */
+static void do_versions_nodetree_socket_auto_hidden_flags_2_62(bNodeTree *ntree)
+{
+ bNode *node;
+ bNodeSocket *sock;
+
+ for (node=ntree->nodes.first; node; node=node->next) {
+ if (node->flag & NODE_HIDDEN) {
+ for (sock=node->inputs.first; sock; sock=sock->next) {
+ if (sock->link==NULL)
+ sock->flag |= SOCK_AUTO_HIDDEN;
+ }
+ for(sock=node->outputs.first; sock; sock= sock->next) {
+ if(nodeCountSocketLinks(ntree, sock)==0)
+ sock->flag |= SOCK_AUTO_HIDDEN;
+ }
+ }
+ else {
+ for(sock=node->inputs.first; sock; sock= sock->next)
+ sock->flag &= ~SOCK_AUTO_HIDDEN;
+ for(sock=node->outputs.first; sock; sock= sock->next)
+ sock->flag &= ~SOCK_AUTO_HIDDEN;
+ }
+ }
+}
+
static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -12779,7 +12805,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
- /* put compatibility code here until next subversion bump */
+ if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 1))
{
{
/* update use flags for node sockets (was only temporary before) */
@@ -12879,6 +12905,43 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
}
+ {
+ /* set the SOCK_AUTO_HIDDEN flag on collapsed nodes */
+ Scene *sce;
+ Material *mat;
+ Tex *tex;
+ Lamp *lamp;
+ World *world;
+ bNodeTree *ntree;
+
+ for (sce=main->scene.first; sce; sce=sce->id.next)
+ if (sce->nodetree)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(sce->nodetree);
+
+ for (mat=main->mat.first; mat; mat=mat->id.next)
+ if (mat->nodetree)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(mat->nodetree);
+
+ for (tex=main->tex.first; tex; tex=tex->id.next)
+ if (tex->nodetree)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(tex->nodetree);
+
+ for (lamp=main->lamp.first; lamp; lamp=lamp->id.next)
+ if (lamp->nodetree)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(lamp->nodetree);
+
+ for (world=main->world.first; world; world=world->id.next)
+ if (world->nodetree)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(world->nodetree);
+
+ for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next)
+ do_versions_nodetree_socket_auto_hidden_flags_2_62(ntree);
+ }
+ }
+
+ /* put compatibility code here until next subversion bump */
+ {
+
}
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */