Revision: 49586
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49586
Author: campbellbarton
Date: 2012-08-05 21:06:56 +0000 (Sun, 05 Aug 2012)
Log Message:
-----------
fix for transforming parented nodes, the node would check its parent was not
transformed, but in fact its parents parent could still be getting transformed
still, also, the order of initializing transform data made this check
unreliable.
fix for mingw broke from one of my own commits, changing header order fixes.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_node/node_view.c
trunk/blender/source/blender/editors/transform/transform_conversions.c
Modified: trunk/blender/source/blender/editors/space_node/node_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_view.c 2012-08-05
21:02:30 UTC (rev 49585)
+++ trunk/blender/source/blender/editors/space_node/node_view.c 2012-08-05
21:06:56 UTC (rev 49586)
@@ -50,11 +50,11 @@
#include "UI_view2d.h"
+#include "MEM_guardedalloc.h"
+
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-#include "MEM_guardedalloc.h"
-
#include "node_intern.h" /* own include */
Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c
2012-08-05 21:02:30 UTC (rev 49585)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c
2012-08-05 21:06:56 UTC (rev 49586)
@@ -5534,7 +5534,6 @@
/* transcribe given node into TransData2D for Transforming */
static void NodeToTransData(TransData *td, TransData2D *td2d, bNode *node)
-// static void NodeToTransData(bContext *C, TransInfo *t, TransData2D *td,
bNode *node)
{
/* hold original location */
float locxy[2];
@@ -5544,10 +5543,6 @@
//td2d->loc2d = &node->locx; /* current location */
td->flag = 0;
- /* exclude nodes whose parent is also transformed */
- if (node->parent && (node->parent->flag & NODE_TRANSFORM)) {
- td->flag |= TD_SKIP;
- }
td->loc = td2d->loc;
copy_v3_v3(td->iloc, td->loc);
@@ -5570,36 +5565,48 @@
td->extra = node;
}
-static void createTransNodeData(bContext *C, TransInfo *t)
+static int is_node_parent_select(bNode *node)
{
+ while ((node = node->parent)) {
+ if (node->flag & NODE_TRANSFORM) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void createTransNodeData(bContext *UNUSED(C), TransInfo *t)
+{
TransData *td;
TransData2D *td2d;
SpaceNode *snode = t->sa->spacedata.first;
bNode *node;
+ t->total = 0;
+
if (!snode->edittree) {
- t->total = 0;
return;
}
/* set transform flags on nodes */
for (node = snode->edittree->nodes.first; node; node = node->next) {
- if ((node->flag & NODE_SELECT) || (node->parent &&
(node->parent->flag & NODE_TRANSFORM)))
+ if (node->flag & NODE_SELECT && is_node_parent_select(node) ==
FALSE) {
node->flag |= NODE_TRANSFORM;
- else
+ t->total++;
+ }
+ else {
node->flag &= ~NODE_TRANSFORM;
+ }
}
- t->total = CTX_DATA_COUNT(C, selected_nodes);
-
td = t->data = MEM_callocN(t->total * sizeof(TransData), "TransNode
TransData");
td2d = t->data2d = MEM_callocN(t->total * sizeof(TransData2D),
"TransNode TransData2D");
- CTX_DATA_BEGIN(C, bNode *, selnode, selected_nodes)
- {
- NodeToTransData(td++, td2d++, selnode);
+ for (node = snode->edittree->nodes.first; node; node = node->next) {
+ if (node->flag & NODE_TRANSFORM) {
+ NodeToTransData(td++, td2d++, node);
+ }
}
- CTX_DATA_END
}
/* *** CLIP EDITOR *** */
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs