Awesomeness! I love the eye idea. Damn viewer nodes! btw scons: http://www.pasteall.org/20424
cheers! Daniel Salazar www.3developer.com 2011/3/31 Lukas Toenne <[email protected]>: > Revision: 35927 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35927 > Author: lukastoenne > Date: 2011-03-31 20:59:55 +0000 (Thu, 31 Mar 2011) > Log Message: > ----------- > First steps towards modifier nodes. > > Modifier node trees are created as true ID data blocks, i.e. they are created > and selected in the node editor space independently from any object selection > (similar to image editor). Any modifier node tree can then be linked to > objects in their modifier panel. When a node tree is linked to an object it > will replace the modifier stack to create the final derived mesh. > > Modifier nodes introduce a new socket type for meshes (using a > yellow-greenish color atm). These sockets denote the output of derived mesh > data by modifier nodes, just like stack-based modifiers have. The main > difference is that node modifiers can also have multiple inputs and/or > outputs, leading to a wide range of new possibilities. As a test case a > "join" node has been added, which takes two mesh inputs and merges them > together in a single output. > > Node outputs now also have a new button (with the eye icon), which is > supposed to replace viewer nodes (currently only used by modifier nodes). > Instead of creating a viewer node and linking it to an output, the view > button can be activated to show intermediate results. For the final result a > special output node is still the better choice, as it allows more fine-tuning > and doesn't have to change connections as often as the viewer. > > Modified Paths: > -------------- > branches/particles-2010/source/blender/blenkernel/BKE_node.h > branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c > branches/particles-2010/source/blender/blenkernel/intern/node.c > branches/particles-2010/source/blender/editors/space_node/drawnode.c > branches/particles-2010/source/blender/editors/space_node/node_draw.c > branches/particles-2010/source/blender/editors/space_node/node_edit.c > branches/particles-2010/source/blender/editors/space_node/node_header.c > branches/particles-2010/source/blender/editors/space_node/node_intern.h > branches/particles-2010/source/blender/editors/space_node/space_node.c > > branches/particles-2010/source/blender/editors/transform/transform_generics.c > branches/particles-2010/source/blender/makesdna/DNA_node_types.h > branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c > branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h > branches/particles-2010/source/blender/nodes/CMakeLists.txt > branches/particles-2010/source/blender/nodes/MOD_node.h > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_alphaOver.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_blur.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_brightness.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_channelMatte.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_colorMatte.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_colorSpill.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_common.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_composite.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_crop.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_curves.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_diffMatte.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_dilate.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_directionalblur.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_displace.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_distanceMatte.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_filter.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_flip.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_gamma.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_glare.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_hueSatVal.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_idMask.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_image.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_invert.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_lensdist.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_levels.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_lummaMatte.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_mapUV.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_mapValue.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_math.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_mixrgb.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_normal.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_premulkey.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_rgb.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_rotate.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_scale.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_sepcombRGBA.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_sepcombYCCA.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_sepcombYUVA.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_setalpha.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_splitViewer.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_texture.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_tonemap.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_translate.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_valToRgb.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_value.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_vecBlur.c > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c > > branches/particles-2010/source/blender/nodes/intern/CMP_nodes/CMP_zcombine.c > branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_mesh.c > > branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_transform.c > branches/particles-2010/source/blender/nodes/intern/MOD_nodetree.c > branches/particles-2010/source/blender/nodes/intern/MOD_util.c > branches/particles-2010/source/blender/nodes/intern/MOD_util.h > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_camera.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_common.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_curves.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_geom.c > > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_hueSatVal.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_invert.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_mapping.c > > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_material.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_math.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_mixRgb.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_normal.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_output.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_rgb.c > > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_sepcombRGB.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_squeeze.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_texture.c > > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_valToRgb.c > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_value.c > > branches/particles-2010/source/blender/nodes/intern/SHD_nodes/SHD_vectMath.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_at.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_bricks.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_checker.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_common.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_compose.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_coord.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_curves.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_decompose.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_distance.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_hueSatVal.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_image.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_invert.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_math.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_mixRgb.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_output.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_proc.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_rotate.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_scale.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_texture.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_translate.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c > > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c > branches/particles-2010/source/blender/nodes/intern/TEX_nodes/TEX_viewer.c > branches/particles-2010/source/blender/nodes/intern/node_common.c > branches/particles-2010/source/blender/nodes/intern/node_exec.c > branches/particles-2010/source/blender/nodes/intern/node_exec.h > branches/particles-2010/source/blender/nodes/intern/node_util.h > > Added Paths: > ----------- > branches/particles-2010/release/scripts/ui/properties_modifier_node.py > branches/particles-2010/source/blender/nodes/intern/MOD_exec.c > branches/particles-2010/source/blender/nodes/intern/MOD_exec.h > branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_common.c > branches/particles-2010/source/blender/nodes/intern/MOD_nodes/MOD_join.c > branches/particles-2010/source/blender/nodes/intern/node_socket.c > branches/particles-2010/source/blender/nodes/intern/node_socket.h > > Added: branches/particles-2010/release/scripts/ui/properties_modifier_node.py > =================================================================== > --- branches/particles-2010/release/scripts/ui/properties_modifier_node.py > (rev 0) > +++ branches/particles-2010/release/scripts/ui/properties_modifier_node.py > 2011-03-31 20:59:55 UTC (rev 35927) > @@ -0,0 +1,72 @@ > +# ##### BEGIN GPL LICENSE BLOCK ##### > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License > +# as published by the Free Software Foundation; either version 2 > +# of the License, or (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. > +# > +# ##### END GPL LICENSE BLOCK ##### > + > +# <pep8 compliant> > +import bpy > + > + > +class DATA_PT_modifier_node(bpy.types.Panel): > + bl_space_type = 'NODE_EDITOR' > + bl_region_type = 'UI' > + #bl_context = "modifier" > + bl_label = "Properties" > + > + @classmethod > + def poll(cls, context): > + return (context.active_node) > + > + def draw(self, context): > + layout = self.layout > + > + node = context.active_node > + > + # match enum type to our functions, avoids a lookup table. > + getattr(self, node.type)(layout, node) > + > + # the mt.type enum is (ab)used for a lookup on function names > + # ...to avoid lengthy if statements > + # so each type must have a function here. > + > + def MESH(self, layout, node): > + col = layout.column() > + col.prop(node, "use_external") > + if (node.use_external): > + col.template_ID(node, "external_mesh") > + > + def TRANSFORM(self, layout, node): > + col = layout.column() > + row = col.row(align=1) > + row.prop(node, "translate") > + row = col.row(align=1) > + row.prop(node, "rotate") > + row = col.row(align=1) > + row.prop(node, "scale") > + > + def JOIN(self, layout, node): > + pass > + > + > +def register(): > + bpy.utils.register_module(__name__) > + > + > +def unregister(): > + bpy.utils.unregister_module(__name__) > + > +if __name__ == "__main__": > + register() > > Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h > =================================================================== > --- branches/particles-2010/source/blender/blenkernel/BKE_node.h > 2011-03-31 20:57:17 UTC (rev 35926) > +++ branches/particles-2010/source/blender/blenkernel/BKE_node.h > 2011-03-31 20:59:55 UTC (rev 35927) > @@ -87,12 +87,20 @@ > struct bNodeSocket *sock; /* used to hold verified > socket */ > } bNodeSocketTemplate; > > -/* Symbols for sockets */ > -typedef enum NodeSocketSymbol { > - SOCK_CIRCLE, > - SOCK_SQUARE > -} NodeSocketSymbol; > +typedef struct bNodeSocketConverter { > + char ui_name[32]; > +} bNodeSocketConverter; > > +typedef struct bNodeSocketType { > + int type; > + char ui_name[32]; > + char ui_description[128]; > + int ui_icon; > + char ui_color[4]; > + > + int (*get_converters)(int type, struct bNodeSocketConverter **conv, > int *totconv); > +} bNodeSocketType; > + > typedef struct bNodeTemplate { > int type; > > @@ -102,6 +110,8 @@ > > typedef struct bNodeType { > void *next,*prev; > + short needs_free; /* set for allocated types that need > to be freed */ > + > int type; > char name[32]; > float width, minwidth, maxwidth; > @@ -129,8 +139,8 @@ > void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct > ID *id); > > void (*initfunc)(struct bNodeTree *ntree, struct bNode *node, struct > bNodeTemplate *ntemp); > - void (*freestoragefunc)(struct bNode *); > - void (*copystoragefunc)(struct bNode *, struct bNode *); > + void (*freestoragefunc)(struct bNode *node); > + void (*copystoragefunc)(struct bNode *node, struct bNode *target); > struct bNodeTemplate (*templatefunc)(struct bNode *); > > int (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp); > @@ -194,6 +204,7 @@ > #define NODE_CLASS_MATH_ROTATION 19 > #define NODE_CLASS_PARTICLES 25 > #define NODE_CLASS_TRANSFORM 30 > +#define NODE_CLASS_COMBINE 31 > #define NODE_CLASS_LAYOUT 100 > > /* enum values for input/output */ > @@ -236,6 +247,7 @@ > > struct bNodeTreeType *ntreeGetType(int type); > struct bNodeType *ntreeGetNodeType(struct bNodeTree *ntree); > +struct bNodeSocketType *ntreeGetSocketType(int type); > > struct bNodeTree *ntreeAddTree(const char *name, int type, int nodetype); > void ntreeInitTypes(struct bNodeTree *ntree); > @@ -256,7 +268,11 @@ > > void ntreeGetDependencyList(struct bNodeTree *ntree, > struct bNode ***deplist, int *totnodes); > > +/* XXX old trees handle output flags automatically based on special output > node types and last active selection. > + * new tree types have a per-output socket flag to indicate the final output > to use explicitly. > + */ > void ntreeSetOutput(struct bNodeTree *ntree); > +void ntreeSetViewerOutput(struct bNodeTree *ntree, struct > bNodeSocket *output); > void ntreeInitPreview(struct bNodeTree *, int xsize, int > ysize); > void ntreeClearPreview(struct bNodeTree *ntree); > > @@ -270,6 +286,11 @@ > > /* ************** GENERIC API, NODES *************** */ > > +struct bNodeSocket *nodeAddSocket(struct bNodeTree *ntree, struct bNode > *node, int in_out, const char *name, int type); > +struct bNodeSocket *nodeInsertSocket(struct bNodeTree *ntree, struct bNode > *node, int in_out, struct bNodeSocket *next_sock, const char *name, int type); > +void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct > bNodeSocket *sock); > +void nodeRemoveAllSockets(struct bNodeTree *ntree, struct bNode *node); > + > void nodeAddToPreview(struct bNode *, float *, int, int, > int); > > struct bNode *nodeAddNode(struct bNodeTree *ntree, struct bNodeTemplate > *ntemp); > @@ -285,7 +306,7 @@ > void nodeAssignInputPanel(struct bNode *node, struct > bNodeSocket *socket, struct bNodeSocketPanel *panel); > void nodeAssignOutputPanel(struct bNode *node, struct > bNodeSocket *socket, struct bNodeSocketPanel *panel); > > -void nodeRegisterType(struct ListBase *typelist, const > struct bNodeType *ntype) ; > +void nodeRegisterType(struct ListBase *typelist, struct > bNodeType *ntype) ; > void nodeMakeDynamicType(struct bNode *node); > int nodeDynamicUnlinkText(struct ID *txtid); > > @@ -336,8 +357,8 @@ > void nodeEditClear(struct bNode *node); > > /* Init a new node type struct with default values and callbacks */ > -void node_type_base(struct bNodeType *ntype, int type, > const char *name, short nclass, short flag, > - struct > bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs); > +void node_type_base(struct bNodeType *ntype, int type, > const char *name, short nclass, short flag); > +void node_type_socket_templates(struct bNodeType *ntype, > struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs); > void node_type_size(struct bNodeType *ntype, int width, > int minwidth, int maxwidth); > void node_type_init(struct bNodeType *ntype, void > (*initfunc)(struct bNodeTree *ntree, struct bNode *node, struct bNodeTemplate > *ntemp)); > void node_type_valid(struct bNodeType *ntype, int > (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp)); > @@ -365,13 +386,6 @@ > void > (*freeexecfunc)(struct bNode *node, void *nodedata), > void > (*newexecfunc)(void *data, int thread, struct bNode *, void *nodedata, struct > bNodeStack **, struct bNodeStack **)); > > -/* ************** INTERNAL EDITOR FUNCTIONS *************** */ > - > -struct bNodeSocket *node_add_socket(struct bNodeTree *ntree, ListBase *lb, > int in_out, const char *name, int type); > -struct bNodeSocket *node_insert_socket(struct bNodeTree *ntree, ListBase > *lb, int in_out, struct bNodeSocket *next_sock, const char *name, int type); > -void node_remove_socket(struct bNodeTree *ntree, ListBase *lb, struct > bNodeSocket *sock); > -void node_remove_all_sockets(struct bNodeTree *ntree, struct bNode *node); > - > /* ************** COMMON NODES *************** */ > > #define NODE_GROUP 2 > @@ -625,10 +639,11 @@ > #define MOD_NODE_MESH 1000 > > /* transform */ > -#define MOD_NODE_TRANSLATE 1101 > -#define MOD_NODE_ROTATE 1102 > -#define MOD_NODE_SCALE 1103 > +#define MOD_NODE_TRANSFORM 1100 > > +/* combine */ > +#define MOD_NODE_JOIN 1200 > + > /* API */ > struct DerivedMesh *ntreeModifierExecTree(struct bNodeTree *ntree, struct > Scene *scene, struct Object *ob, float (*inputVertexCos)[3]); > > > Modified: > branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c > =================================================================== > --- branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c > 2011-03-31 20:57:17 UTC (rev 35926) > +++ branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c > 2011-03-31 20:59:55 UTC (rev 35927) > @@ -1694,12 +1694,19 @@ > *deform_r = CDDM_from_mesh(me, ob); > } > > - if(inputVertexCos) > - deformedVerts = inputVertexCos; > - else > - deformedVerts = mesh_getVertexCos(me, &numVerts); > + dm = ntreeModifierExecTree(ob->modifier_nodetree, scene, ob, > inputVertexCos); > > - dm = ntreeModifierExecTree(ob->modifier_nodetree, scene, ob, > inputVertexCos); > + if (dm) { > + numVerts = dm->getNumVerts(dm); > + deformedVerts = MEM_mallocN(sizeof(*deformedVerts) * > numVerts, "dfmv"); > + dm->getVertCos(dm, deformedVerts); > + } > + else { > + if(inputVertexCos) > + deformedVerts = inputVertexCos; > + else > + deformedVerts = mesh_getVertexCos(me, > &numVerts); > + } > } > else { > if(!skipVirtualArmature) { > > Modified: branches/particles-2010/source/blender/blenkernel/intern/node.c > =================================================================== > --- branches/particles-2010/source/blender/blenkernel/intern/node.c > 2011-03-31 20:57:17 UTC (rev 35926) > +++ branches/particles-2010/source/blender/blenkernel/intern/node.c > 2011-03-31 20:59:55 UTC (rev 35927) > @@ -72,6 +72,7 @@ > > #include "intern/node_common.h" > #include "intern/node_exec.h" > +#include "intern/node_socket.h" > > #include "CMP_node.h" > #include "SHD_node.h" > @@ -116,6 +117,24 @@ > return node_get_type(ntree, ntree->nodetype); > } > > +bNodeSocketType *ntreeGetSocketType(int type) > +{ > + static bNodeSocketType *types[NUM_SOCKET_TYPES]= {NULL}; > + static int types_init = 1; > + > > @@ Diff output truncated at 10240 characters. @@ > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
