2.5 / Nodes

* [Use nodes] added. For future improvements: a panel which enumerates
  materials, textures and scenes for selection and editing in the opened
  node-editor without having to set it in Buttons (or 'global' scene).
This commit is contained in:
Nathan Letwory 2009-01-12 01:02:52 +00:00
parent 6dc63e054f
commit 99d10b7f76
7 changed files with 58 additions and 3 deletions

@ -488,7 +488,7 @@ static void texture_node_event(SpaceNode *snode, short event)
}
}
#endif /* 0 */
/* assumes nothing being done in ntree yet, sets the default in/out node */
/* called from shading buttons or header */
void node_shader_default(Material *ma)
@ -548,7 +548,7 @@ void node_composit_default(Scene *sce)
ntreeSolveOrder(sce->nodetree); /* needed for pointers */
ntreeCompositForceHidden(sce->nodetree);
// XXX ntreeCompositForceHidden(sce->nodetree);
}
/* assumes nothing being done in ntree yet, sets the default in/out node */
@ -580,7 +580,6 @@ void node_texture_default(Tex *tx)
ntreeSolveOrder(tx->nodetree); /* needed for pointers */
ntreeTexUpdatePreviews(tx->nodetree);
}
#endif
/* Here we set the active tree(s), even called for each redraw now, so keep it fast :) */
void snode_set_context(SpaceNode *snode, Scene *scene)

@ -650,7 +650,52 @@ static uiBlock *node_viewmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_
static void do_node_buttons(bContext *C, void *arg, int event)
{
// NODE_FIX_ME : instead of using "current material/texture/scene" a la old buttons/G.scene
// have a panel from which enumerates textures, materials and scenes.
SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
Material *ma;
Tex *tx;
switch(event) {
case B_NODE_USEMAT:
ma= (Material *)snode->id;
if(ma) {
if(ma->use_nodes && ma->nodetree==NULL) {
node_shader_default(ma);
snode_set_context(snode, scene);
}
/* BIF_preview_changed(ID_MA);
allqueue(REDRAWNODE, 0);
allqueue(REDRAWBUTSSHADING, 0);
allqueue(REDRAWIPO, 0);*/
}
break;
case B_NODE_USESCENE:
if(scene->use_nodes) {
if(scene->nodetree==NULL)
node_composit_default(scene);
// addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC);
}
snode_set_context(snode, scene);
// allqueue(REDRAWNODE, 0);
break;
case B_NODE_USETEX:
tx = (Tex *)snode->id;
if(tx) {
tx->type = 0;
if(tx->use_nodes && tx->nodetree==NULL) {
node_texture_default(tx);
snode_set_context(snode, scene);
}
/* BIF_preview_changed(ID_TE);
allqueue(REDRAWNODE, 0);
allqueue(REDRAWBUTSSHADING, 0);
allqueue(REDRAWIPO, 0);*/
}
break;
}
}

@ -75,6 +75,9 @@ void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
void snode_home(ScrArea *sa, ARegion *ar, SpaceNode *snode);
void node_set_active(SpaceNode *snode, bNode *node);
void node_deselectall(SpaceNode *snode, int swap);
void node_shader_default(Material *ma);
void node_composit_default(Scene *sce);
void node_texture_default(Tex *tx);
// XXXXXX

@ -27,6 +27,8 @@
*/
#include "DNA_node_types.h"
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
#include "DNA_scene_types.h"
#include "DNA_space_types.h"

@ -29,6 +29,8 @@
#include <stdio.h>
#include "DNA_node_types.h"
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"

@ -29,6 +29,8 @@
#include <stdio.h>
#include "DNA_node_types.h"
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"

@ -31,6 +31,8 @@
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"