Merging r41093 through r41119 from trunk into soc-2011-tomato
This revision wouldn't compile, fix will came soon with codereview-related changes.
This commit is contained in:
@@ -1161,7 +1161,7 @@ class WM_OT_copy_prev_settings(Operator):
|
||||
elif not os.path.isdir(path_src):
|
||||
self.report({'ERROR'}, "Source path %r exists" % path_src)
|
||||
else:
|
||||
shutil.copytree(path_src, path_dst)
|
||||
shutil.copytree(path_src, path_dst, symlinks=True)
|
||||
|
||||
# in 2.57 and earlier windows installers, system scripts were copied
|
||||
# into the configuration directory, don't want to copy those
|
||||
|
||||
@@ -56,9 +56,9 @@ class VIEW3D_HT_header(Header):
|
||||
|
||||
|
||||
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
|
||||
layout.template_header_3D()
|
||||
row = layout.row() #XXX Narrowed down vert/edge/face selector in edit mode/solid drawmode. -DingTo
|
||||
row.template_header_3D()
|
||||
|
||||
row = layout.row()
|
||||
if obj:
|
||||
# Particle edit
|
||||
if obj.mode == 'PARTICLE_EDIT':
|
||||
|
||||
@@ -346,9 +346,8 @@ struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype);
|
||||
int nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id);
|
||||
void nodeClearActiveID(struct bNodeTree *ntree, short idtype);
|
||||
|
||||
void NodeTagChanged(struct bNodeTree *ntree, struct bNode *node);
|
||||
int NodeTagIDChanged(struct bNodeTree *ntree, struct ID *id);
|
||||
void ntreeClearTags(struct bNodeTree *ntree);
|
||||
void nodeUpdate(struct bNodeTree *ntree, struct bNode *node);
|
||||
int nodeUpdateID(struct bNodeTree *ntree, struct ID *id);
|
||||
|
||||
void nodeFreePreview(struct bNode *node);
|
||||
|
||||
@@ -605,7 +604,7 @@ void ntreeCompositTagRender(struct Scene *sce);
|
||||
int ntreeCompositTagAnimated(struct bNodeTree *ntree);
|
||||
void ntreeCompositTagGenerators(struct bNodeTree *ntree);
|
||||
void ntreeCompositForceHidden(struct bNodeTree *ntree, struct Scene *scene);
|
||||
|
||||
void ntreeCompositClearTags(struct bNodeTree *ntree);
|
||||
|
||||
|
||||
/* ************** TEXTURE NODES *************** */
|
||||
|
||||
@@ -1982,7 +1982,7 @@ static void dag_tag_renderlayers(Scene *sce, unsigned int lay)
|
||||
if(node->id==(ID *)sce) {
|
||||
SceneRenderLayer *srl= BLI_findlink(&sce->r.layers, node->custom1);
|
||||
if(srl && (srl->lay & lay_changed))
|
||||
NodeTagChanged(sce->nodetree, node);
|
||||
nodeUpdate(sce->nodetree, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1514,7 +1514,7 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal)
|
||||
Scene *scene;
|
||||
for(scene= G.main->scene.first; scene; scene= scene->id.next) {
|
||||
if(scene->nodetree) {
|
||||
NodeTagIDChanged(scene->nodetree, &ima->id);
|
||||
nodeUpdateID(scene->nodetree, &ima->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ bNodeSocket *nodeAddSocket(bNodeTree *ntree, bNode *node, int in_out, const char
|
||||
else if (in_out==SOCK_OUT)
|
||||
BLI_addtail(&node->outputs, sock);
|
||||
|
||||
ntree->update |= NTREE_UPDATE_NODES;
|
||||
node->update |= NODE_UPDATE;
|
||||
|
||||
return sock;
|
||||
}
|
||||
@@ -197,7 +197,7 @@ bNodeSocket *nodeInsertSocket(bNodeTree *ntree, bNode *node, int in_out, bNodeSo
|
||||
else if (in_out==SOCK_OUT)
|
||||
BLI_insertlinkbefore(&node->outputs, next_sock, sock);
|
||||
|
||||
ntree->update |= NTREE_UPDATE_NODES;
|
||||
node->update |= NODE_UPDATE;
|
||||
|
||||
return sock;
|
||||
}
|
||||
@@ -221,7 +221,7 @@ void nodeRemoveSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
|
||||
MEM_freeN(sock->default_value);
|
||||
MEM_freeN(sock);
|
||||
|
||||
ntree->update |= NTREE_UPDATE_NODES;
|
||||
node->update |= NODE_UPDATE;
|
||||
}
|
||||
|
||||
void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
|
||||
@@ -246,7 +246,7 @@ void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
|
||||
|
||||
BLI_freelistN(&node->outputs);
|
||||
|
||||
ntree->update |= NTREE_UPDATE_NODES;
|
||||
node->update |= NODE_UPDATE;
|
||||
}
|
||||
|
||||
/* finds a node based on its name */
|
||||
@@ -823,7 +823,7 @@ void nodeUnlinkNode(bNodeTree *ntree, bNode *node)
|
||||
if(link->fromnode==node) {
|
||||
lb= &node->outputs;
|
||||
if (link->tonode)
|
||||
NodeTagChanged(ntree, link->tonode);
|
||||
link->tonode->update |= NODE_UPDATE;
|
||||
}
|
||||
else if(link->tonode==node)
|
||||
lb= &node->inputs;
|
||||
@@ -1495,18 +1495,19 @@ void ntreeUpdateTree(bNodeTree *ntree)
|
||||
/* update individual nodes */
|
||||
for (n=0; n < totnodes; ++n) {
|
||||
node = deplist[n];
|
||||
if (ntreetype->update_node)
|
||||
ntreetype->update_node(ntree, node);
|
||||
else if (node->typeinfo->updatefunc)
|
||||
node->typeinfo->updatefunc(ntree, node);
|
||||
|
||||
/* node tree update tags override individual node update flags */
|
||||
if ((node->update & NODE_UPDATE) || (ntree->update & NTREE_UPDATE)) {
|
||||
if (ntreetype->update_node)
|
||||
ntreetype->update_node(ntree, node);
|
||||
else if (node->typeinfo->updatefunc)
|
||||
node->typeinfo->updatefunc(ntree, node);
|
||||
}
|
||||
/* clear update flag */
|
||||
node->update = 0;
|
||||
}
|
||||
|
||||
MEM_freeN(deplist);
|
||||
|
||||
/* ensures only a single output node is enabled, texnode allows multiple though */
|
||||
if(ntree->type!=NTREE_TEXTURE)
|
||||
ntreeSetOutput(ntree);
|
||||
|
||||
}
|
||||
|
||||
/* general tree updates */
|
||||
@@ -1518,6 +1519,9 @@ void ntreeUpdateTree(bNodeTree *ntree)
|
||||
if (ntreetype->update)
|
||||
ntreetype->update(ntree);
|
||||
else {
|
||||
/* Trees can be associated with a specific node type (i.e. group nodes),
|
||||
* in that case a tree update function may be defined by that node type.
|
||||
*/
|
||||
bNodeType *ntype= node_get_type(ntree, ntree->nodetype);
|
||||
if (ntype && ntype->updatetreefunc)
|
||||
ntype->updatetreefunc(ntree);
|
||||
@@ -1530,24 +1534,24 @@ void ntreeUpdateTree(bNodeTree *ntree)
|
||||
ntree->update = 0;
|
||||
}
|
||||
|
||||
void NodeTagChanged(bNodeTree *ntree, bNode *node)
|
||||
void nodeUpdate(bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
bNodeTreeType *ntreetype = ntreeGetType(ntree->type);
|
||||
bNodeTreeType *ntreetype= ntreeGetType(ntree->type);
|
||||
|
||||
/* extra null pointer checks here because this is called when unlinking
|
||||
unknown nodes on file load, so typeinfo pointers may not be set */
|
||||
if (ntreetype && ntreetype->update_node)
|
||||
if (ntreetype->update_node)
|
||||
ntreetype->update_node(ntree, node);
|
||||
else if (node->typeinfo && node->typeinfo->updatefunc)
|
||||
else if (node->typeinfo->updatefunc)
|
||||
node->typeinfo->updatefunc(ntree, node);
|
||||
/* clear update flag */
|
||||
node->update = 0;
|
||||
}
|
||||
|
||||
int NodeTagIDChanged(bNodeTree *ntree, ID *id)
|
||||
int nodeUpdateID(bNodeTree *ntree, ID *id)
|
||||
{
|
||||
bNodeTreeType *ntreetype;
|
||||
bNode *node;
|
||||
int change = FALSE;
|
||||
|
||||
|
||||
if(ELEM(NULL, id, ntree))
|
||||
return change;
|
||||
|
||||
@@ -1558,6 +1562,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id)
|
||||
if(node->id==id) {
|
||||
change = TRUE;
|
||||
ntreetype->update_node(ntree, node);
|
||||
/* clear update flag */
|
||||
node->update = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1567,6 +1573,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id)
|
||||
change = TRUE;
|
||||
if (node->typeinfo->updatefunc)
|
||||
node->typeinfo->updatefunc(ntree, node);
|
||||
/* clear update flag */
|
||||
node->update = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10356,8 +10356,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
{
|
||||
if(scene->ed && scene->ed->seqbasep)
|
||||
{
|
||||
for(seq = scene->ed->seqbasep->first; seq; seq = seq->next)
|
||||
{
|
||||
SEQ_BEGIN(scene->ed, seq) {
|
||||
if(seq->type == SEQ_HD_SOUND)
|
||||
{
|
||||
char str[FILE_MAX];
|
||||
@@ -10377,6 +10376,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
seq->strip->dir);
|
||||
}
|
||||
}
|
||||
SEQ_END
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -398,13 +398,13 @@ static void render_endjob(void *rjv)
|
||||
ED_update_for_newframe(G.main, rj->scene, rj->win->screen, 1);
|
||||
|
||||
/* XXX above function sets all tags in nodes */
|
||||
ntreeClearTags(rj->scene->nodetree);
|
||||
ntreeCompositClearTags(rj->scene->nodetree);
|
||||
|
||||
/* potentially set by caller */
|
||||
rj->scene->r.scemode &= ~R_NO_FRAME_UPDATE;
|
||||
|
||||
if(rj->srl) {
|
||||
NodeTagIDChanged(rj->scene->nodetree, &rj->scene->id);
|
||||
nodeUpdateID(rj->scene->nodetree, &rj->scene->id);
|
||||
WM_main_add_notifier(NC_NODE|NA_EDITED, rj->scene);
|
||||
}
|
||||
|
||||
|
||||
@@ -102,12 +102,12 @@ void ED_node_changed_update(ID *id, bNode *node)
|
||||
WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, id);
|
||||
}
|
||||
else if(treetype==NTREE_COMPOSIT) {
|
||||
NodeTagChanged(edittree, node);
|
||||
nodeUpdate(edittree, node);
|
||||
/* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */
|
||||
|
||||
node= node_tree_get_editgroup(nodetree);
|
||||
if(node)
|
||||
NodeTagIDChanged(nodetree, node->id);
|
||||
nodeUpdateID(nodetree, node->id);
|
||||
|
||||
WM_main_add_notifier(NC_SCENE|ND_NODES, id);
|
||||
}
|
||||
|
||||
@@ -496,17 +496,17 @@ void snode_set_context(SpaceNode *snode, Scene *scene)
|
||||
node_tree_from_ID(snode->id, &snode->nodetree, &snode->edittree, NULL);
|
||||
}
|
||||
|
||||
static void snode_tag_changed(SpaceNode *snode, bNode *node)
|
||||
static void snode_update(SpaceNode *snode, bNode *node)
|
||||
{
|
||||
bNode *gnode;
|
||||
|
||||
if (node)
|
||||
NodeTagChanged(snode->edittree, node);
|
||||
nodeUpdate(snode->edittree, node);
|
||||
|
||||
/* if inside group, tag entire group */
|
||||
gnode= node_tree_get_editgroup(snode->nodetree);
|
||||
if(gnode)
|
||||
NodeTagIDChanged(snode->nodetree, gnode->id);
|
||||
nodeUpdateID(snode->nodetree, gnode->id);
|
||||
}
|
||||
|
||||
static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
|
||||
@@ -1775,7 +1775,7 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode)
|
||||
link->fromsock= sock;
|
||||
}
|
||||
ntreeUpdateTree(snode->edittree);
|
||||
snode_tag_changed(snode, node);
|
||||
snode_update(snode, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2127,7 +2127,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace)
|
||||
continue;
|
||||
}
|
||||
|
||||
snode_tag_changed(snode, node_to);
|
||||
snode_update(snode, node_to);
|
||||
++numlinks;
|
||||
break;
|
||||
}
|
||||
@@ -2175,7 +2175,7 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate
|
||||
if(node->id)
|
||||
id_us_plus(node->id);
|
||||
|
||||
snode_tag_changed(snode, node);
|
||||
snode_update(snode, node);
|
||||
}
|
||||
|
||||
if(snode->nodetree->type==NTREE_TEXTURE) {
|
||||
@@ -2412,7 +2412,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
case MIDDLEMOUSE:
|
||||
if(link->tosock && link->fromsock) {
|
||||
/* send changed events for original tonode and new */
|
||||
snode_tag_changed(snode, link->tonode);
|
||||
snode_update(snode, link->tonode);
|
||||
|
||||
/* we might need to remove a link */
|
||||
if(in_out==SOCK_OUT)
|
||||
@@ -2495,7 +2495,7 @@ static int node_link_init(SpaceNode *snode, bNodeLinkDrag *nldrag)
|
||||
if(link) {
|
||||
/* send changed event to original tonode */
|
||||
if(link->tonode)
|
||||
snode_tag_changed(snode, link->tonode);
|
||||
snode_update(snode, link->tonode);
|
||||
|
||||
nldrag->node= link->fromnode;
|
||||
nldrag->sock= link->fromsock;
|
||||
@@ -2663,7 +2663,7 @@ static int cut_links_exec(bContext *C, wmOperator *op)
|
||||
next= link->next;
|
||||
|
||||
if(cut_links_intersect(link, mcoords, i)) {
|
||||
snode_tag_changed(snode, link->tonode);
|
||||
snode_update(snode, link->tonode);
|
||||
nodeRemLink(snode->edittree, link);
|
||||
}
|
||||
}
|
||||
@@ -2794,7 +2794,7 @@ void ED_node_link_insert(ScrArea *sa)
|
||||
|
||||
nodeAddLink(snode->edittree, select, socket_best_match(&select->outputs, sockto->type), node, sockto);
|
||||
ntreeUpdateTree(snode->edittree); /* needed for pointers */
|
||||
snode_tag_changed(snode, select);
|
||||
snode_update(snode, select);
|
||||
ED_node_changed_update(snode->id, select);
|
||||
}
|
||||
}
|
||||
@@ -3198,7 +3198,7 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
/* Be able to mute in-/output nodes as well. - DingTo
|
||||
if(node->inputs.first && node->outputs.first) { */
|
||||
node->flag ^= NODE_MUTED;
|
||||
snode_tag_changed(snode, node);
|
||||
snode_update(snode, node);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -244,10 +244,10 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn)
|
||||
if(type==NTREE_COMPOSIT) {
|
||||
Scene *scene= wmn->window->screen->scene;
|
||||
|
||||
/* note that NodeTagIDChanged is already called by BKE_image_signal() on all
|
||||
/* note that nodeUpdateID is already called by BKE_image_signal() on all
|
||||
* scenes so really this is just to know if the images is used in the compo else
|
||||
* painting on images could become very slow when the compositor is open. */
|
||||
if(NodeTagIDChanged(scene->nodetree, wmn->reference))
|
||||
if(nodeUpdateID(scene->nodetree, wmn->reference))
|
||||
ED_area_tag_refresh(sa);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1839,7 +1839,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
}
|
||||
|
||||
/* wire draw over solid only in posemode */
|
||||
if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || (arm->drawtype==ARM_LINE)) {
|
||||
if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
|
||||
/* draw line check first. we do selection indices */
|
||||
if ELEM(arm->drawtype, ARM_LINE, ARM_WIRE) {
|
||||
if (arm->flag & ARM_POSEMODE)
|
||||
@@ -2512,7 +2512,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in
|
||||
if(v3d->flag2 & V3D_RENDER_OVERRIDE)
|
||||
return 1;
|
||||
|
||||
if(dt>OB_WIRE && arm->drawtype!=ARM_LINE) {
|
||||
if(dt>OB_WIRE && !ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
|
||||
/* we use color for solid lighting */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR);
|
||||
glEnable(GL_COLOR_MATERIAL);
|
||||
|
||||
@@ -154,7 +154,9 @@ typedef struct bNode {
|
||||
float locx, locy; /* root offset for drawing */
|
||||
float width, height; /* node custom width and height */
|
||||
float miniwidth; /* node width if hidden */
|
||||
int pad;
|
||||
|
||||
int update; /* update flags */
|
||||
|
||||
char label[32]; /* custom user-defined label */
|
||||
short custom1, custom2; /* to be abused for buttons */
|
||||
float custom3, custom4;
|
||||
@@ -192,6 +194,13 @@ typedef struct bNode {
|
||||
/* automatic flag for nodes included in transforms */
|
||||
#define NODE_TRANSFORM (1<<13)
|
||||
|
||||
/* node->update */
|
||||
/* XXX NODE_UPDATE is a generic update flag. More fine-grained updates
|
||||
* might be used in the future, but currently all work the same way.
|
||||
*/
|
||||
#define NODE_UPDATE 0xFFFF /* generic update flag (includes all others) */
|
||||
#define NODE_UPDATE_ID 1 /* associated id data block has changed */
|
||||
|
||||
typedef struct bNodeLink {
|
||||
struct bNodeLink *next, *prev;
|
||||
|
||||
|
||||
@@ -568,7 +568,7 @@ static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *UNUSED(C), Repor
|
||||
}
|
||||
else {
|
||||
ntreeUpdateTree(ntree); /* update group node socket links*/
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
WM_main_add_notifier(NC_NODE|NA_EDITED, ntree);
|
||||
|
||||
if (group)
|
||||
@@ -651,7 +651,7 @@ static bNodeLink *rna_NodeTree_link_new(bNodeTree *ntree, ReportList *reports, b
|
||||
ret= nodeAddLink(ntree, fromnode, in, tonode, out);
|
||||
|
||||
if(ret) {
|
||||
NodeTagChanged(ntree, tonode);
|
||||
nodeUpdate(ntree, tonode);
|
||||
|
||||
ntreeUpdateTree(ntree);
|
||||
|
||||
|
||||
@@ -195,6 +195,11 @@ static void local_merge(bNodeTree *localtree, bNodeTree *ntree)
|
||||
}
|
||||
}
|
||||
|
||||
static void update(bNodeTree *ntree)
|
||||
{
|
||||
ntreeSetOutput(ntree);
|
||||
}
|
||||
|
||||
bNodeTreeType ntreeType_Composite = {
|
||||
/* type */ NTREE_COMPOSIT,
|
||||
/* idname */ "NTCompositing Nodetree",
|
||||
@@ -207,7 +212,7 @@ bNodeTreeType ntreeType_Composite = {
|
||||
/* localize */ localize,
|
||||
/* local_sync */ local_sync,
|
||||
/* local_merge */ local_merge,
|
||||
/* update */ NULL,
|
||||
/* update */ update,
|
||||
/* update_node */ update_node
|
||||
};
|
||||
|
||||
@@ -728,9 +733,9 @@ void ntreeCompositTagRender(Scene *curscene)
|
||||
|
||||
for(node= sce->nodetree->nodes.first; node; node= node->next) {
|
||||
if(node->id==(ID *)curscene || node->type==CMP_NODE_COMPOSITE)
|
||||
NodeTagChanged(sce->nodetree, node);
|
||||
nodeUpdate(sce->nodetree, node);
|
||||
else if(node->type==CMP_NODE_TEXTURE) /* uses scene sizex/sizey */
|
||||
NodeTagChanged(sce->nodetree, node);
|
||||
nodeUpdate(sce->nodetree, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -757,7 +762,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
|
||||
|
||||
for (index=0; index<len; index++) {
|
||||
if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -775,7 +780,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
|
||||
|
||||
for (index=0; index<len; index++) {
|
||||
if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -801,18 +806,18 @@ int ntreeCompositTagAnimated(bNodeTree *ntree)
|
||||
if(node->type==CMP_NODE_IMAGE) {
|
||||
Image *ima= (Image *)node->id;
|
||||
if(ima && ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
tagged= 1;
|
||||
}
|
||||
}
|
||||
else if(node->type==CMP_NODE_TIME) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
tagged= 1;
|
||||
}
|
||||
/* here was tag render layer, but this is called after a render, so re-composites fail */
|
||||
else if(node->type==NODE_GROUP) {
|
||||
if( ntreeCompositTagAnimated((bNodeTree *)node->id) ) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
}
|
||||
}
|
||||
else if(ELEM(node->type, CMP_NODE_MOVIECLIP, CMP_NODE_TRANSFORM)) {
|
||||
@@ -834,12 +839,12 @@ void ntreeCompositTagGenerators(bNodeTree *ntree)
|
||||
|
||||
for(node= ntree->nodes.first; node; node= node->next) {
|
||||
if( ELEM(node->type, CMP_NODE_R_LAYERS, CMP_NODE_IMAGE))
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX after render animation system gets a refresh, this call allows composite to end clean */
|
||||
void ntreeClearTags(bNodeTree *ntree)
|
||||
void ntreeCompositClearTags(bNodeTree *ntree)
|
||||
{
|
||||
bNode *node;
|
||||
|
||||
@@ -848,6 +853,6 @@ void ntreeClearTags(bNodeTree *ntree)
|
||||
for(node= ntree->nodes.first; node; node= node->next) {
|
||||
node->need_exec= 0;
|
||||
if(node->type==NODE_GROUP)
|
||||
ntreeClearTags((bNodeTree *)node->id);
|
||||
ntreeCompositClearTags((bNodeTree *)node->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,9 +239,11 @@ bNode *node_group_make_from_selected(bNodeTree *ntree)
|
||||
}
|
||||
}
|
||||
|
||||
/* update of the group tree */
|
||||
ngroup->update |= NTREE_UPDATE;
|
||||
ntreeUpdateTree(ngroup);
|
||||
ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS;
|
||||
/* update of the tree containing the group instance node */
|
||||
ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS;
|
||||
ntreeUpdateTree(ntree);
|
||||
|
||||
return gnode;
|
||||
@@ -559,7 +561,7 @@ int node_group_ungroup(bNodeTree *ntree, bNode *gnode)
|
||||
/* free the group tree (takes care of user count) */
|
||||
free_libblock(&G.main->nodetree, wgroup);
|
||||
|
||||
ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS;
|
||||
ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS;
|
||||
ntreeUpdateTree(ntree);
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -85,6 +85,11 @@ static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
|
||||
}
|
||||
}
|
||||
|
||||
static void update(bNodeTree *ntree)
|
||||
{
|
||||
ntreeSetOutput(ntree);
|
||||
}
|
||||
|
||||
bNodeTreeType ntreeType_Shader = {
|
||||
/* type */ NTREE_SHADER,
|
||||
/* id_name */ "NTShader Nodetree",
|
||||
@@ -97,7 +102,7 @@ bNodeTreeType ntreeType_Shader = {
|
||||
/* localize */ NULL,
|
||||
/* local_sync */ local_sync,
|
||||
/* local_merge */ NULL,
|
||||
/* update */ NULL,
|
||||
/* update */ update,
|
||||
/* update_node */ NULL
|
||||
};
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ int ntreeTexTagAnimated(bNodeTree *ntree)
|
||||
|
||||
for(node= ntree->nodes.first; node; node= node->next) {
|
||||
if(node->type==TEX_NODE_CURVE_TIME) {
|
||||
NodeTagChanged(ntree, node);
|
||||
nodeUpdate(ntree, node);
|
||||
return 1;
|
||||
}
|
||||
else if(node->type==NODE_GROUP) {
|
||||
|
||||
@@ -2261,7 +2261,7 @@ static void ntree_render_scenes(Render *re)
|
||||
restore_scene= (scene != re->scene);
|
||||
node->id->flag &= ~LIB_DOIT;
|
||||
|
||||
NodeTagChanged(re->scene->nodetree, node);
|
||||
nodeUpdate(re->scene->nodetree, node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<key>LSEnvironment</key>
|
||||
<dict>
|
||||
<key>OMP_NUM_THREADS</key>
|
||||
<string></string>
|
||||
<string>4</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
<key>name</key>
|
||||
<string>ScriptWindowState</string>
|
||||
<key>positionOfDivider</key>
|
||||
<real>470</real>
|
||||
<real>493</real>
|
||||
<key>savedFrame</key>
|
||||
<string>199 169 1197 810 0 0 1920 1178 </string>
|
||||
<string>698 332 1163 846 0 0 1920 1178 </string>
|
||||
<key>selectedTabView</key>
|
||||
<string>result</string>
|
||||
</dict>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 362 B |
Binary file not shown.
Reference in New Issue
Block a user