35
35
#include "MEM_guardedalloc.h"
37
37
#include "DNA_action_types.h"
38
#include "DNA_brush_types.h"
38
39
#include "DNA_color_types.h"
39
40
#include "DNA_image_types.h"
40
41
#include "DNA_ipo_types.h"
41
42
#include "DNA_object_types.h"
42
43
#include "DNA_material_types.h"
44
#include "DNA_texture_types.h"
43
45
#include "DNA_node_types.h"
44
46
#include "DNA_space_types.h"
45
47
#include "DNA_screen_types.h"
177
180
allqueue(REDRAWNODE, 1);
182
else if(snode->treetype==NTREE_TEXTURE) {
183
ntreeTexUpdatePreviews(snode->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
184
BIF_preview_changed(ID_TE);
181
188
static void shader_node_event(SpaceNode *snode, short event)
433
static void texture_node_event(SpaceNode *snode, short event)
437
allqueue(REDRAWNODE, 1);
439
case B_NODE_LOADIMAGE:
441
bNode *node= nodeGetActive(snode->edittree);
442
char name[FILE_MAXDIR+FILE_MAXFILE];
445
strcpy(name, ((Image *)node->id)->name);
446
else strcpy(name, U.textudir);
447
if (G.qual & LR_CTRLKEY) {
448
activate_imageselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image);
450
activate_fileselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image);
456
ntreeTexCheckCyclics( snode->nodetree );
457
snode_handle_recalc(snode);
458
allqueue(REDRAWNODE, 1);
427
464
/* assumes nothing being done in ntree yet, sets the default in/out node */
428
465
/* called from shading buttons or header */
486
523
ntreeCompositForceHidden(sce->nodetree);
526
/* assumes nothing being done in ntree yet, sets the default in/out node */
527
/* called from shading buttons or header */
528
void node_texture_default(Tex *tx)
531
bNodeSocket *fromsock, *tosock;
533
/* but lets check it anyway */
535
printf("error in texture initialize\n");
539
tx->nodetree= ntreeAddTree(NTREE_TEXTURE);
541
out= nodeAddNodeType(tx->nodetree, TEX_NODE_OUTPUT, NULL, NULL);
542
out->locx= 300.0f; out->locy= 300.0f;
544
in= nodeAddNodeType(tx->nodetree, TEX_NODE_CHECKER, NULL, NULL);
545
in->locx= 10.0f; in->locy= 300.0f;
546
nodeSetActive(tx->nodetree, in);
548
fromsock= in->outputs.first;
549
tosock= out->inputs.first;
550
nodeAddLink(tx->nodetree, in, fromsock, out, tosock);
552
ntreeSolveOrder(tx->nodetree); /* needed for pointers */
553
ntreeTexUpdatePreviews(tx->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
489
556
/* Here we set the active tree(s), even called for each redraw now, so keep it fast :) */
490
557
void snode_set_context(SpaceNode *snode)
517
584
snode->nodetree= G.scene->nodetree;
586
else if(snode->treetype==NTREE_TEXTURE) {
589
if(snode->texfrom==SNODE_TEX_OBJECT) {
591
tx= give_current_texture(ob, ob->actcol);
592
snode->from= (ID *)ob;
595
else if(snode->texfrom==SNODE_TEX_WORLD) {
596
tx= give_current_world_texture();
597
snode->from= (ID *)G.scene->world;
602
if(G.f & G_SCULPTMODE) {
603
SculptData *sd= &G.scene->sculptdata;
605
mtex= sd->mtex[sd->texact];
608
Brush *br= G.scene->toolsettings->imapaint.brush;
610
mtex= br->mtex[br->texact];
614
snode->from= (ID *)G.scene;
621
snode->nodetree= tx->nodetree;
520
625
/* find editable group */
521
626
if(snode->nodetree)
1188
1299
BIF_undo_push("Scale Node");
1190
1301
allqueue(REDRAWNODE, 1);
1303
if(snode->nodetree->type == NTREE_TEXTURE)
1304
ntreeTexUpdatePreviews(snode->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
1193
1307
/* ******************** rename ******************* */
1703
1817
NodeTagChanged(snode->edittree, node);
1820
if(snode->nodetree->type==NTREE_TEXTURE) {
1821
ntreeTexCheckCyclics(snode->edittree);
1822
ntreeTexUpdatePreviews(snode->edittree);/* XXX texture nodes should follow shader node methods (ton) */
2481
2601
shader_node_event(snode, val);
2482
2602
else if(snode->treetype==NTREE_COMPOSIT)
2483
2603
composit_node_event(snode, val);
2604
else if(snode->treetype==NTREE_TEXTURE)
2605
texture_node_event(snode, val);
2486
2608
case RENDERPREVIEW:
2487
2609
if(snode->treetype==NTREE_SHADER)
2488
2610
shader_node_previewrender(sa, snode);
2611
else if(snode->nodetree->type==NTREE_TEXTURE)
2612
ntreeTexUpdatePreviews(snode->edittree); /* XXX texture nodes should follow shader node methods (ton) */
2491
2616
case PADPLUSKEY: