[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33449] branches/particles-2010: The node tree modifier now uses library data node trees instead of local.

Lukas Toenne lukas.toenne at googlemail.com
Fri Dec 3 18:28:41 CET 2010


Revision: 33449
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33449
Author:   lukastoenne
Date:     2010-12-03 18:28:41 +0100 (Fri, 03 Dec 2010)

Log Message:
-----------
The node tree modifier now uses library data node trees instead of local. It can now be added to any kind of object (not just particles). The default 'self' context is the object owning the modifier.

Modified Paths:
--------------
    branches/particles-2010/release/scripts/ui/properties_data_modifier.py
    branches/particles-2010/source/blender/blenloader/intern/readfile.c
    branches/particles-2010/source/blender/blenloader/intern/writefile.c
    branches/particles-2010/source/blender/editors/include/ED_node.h
    branches/particles-2010/source/blender/editors/space_node/node_edit.c
    branches/particles-2010/source/blender/makesdna/DNA_modifier_types.h
    branches/particles-2010/source/blender/makesrna/RNA_access.h
    branches/particles-2010/source/blender/makesrna/intern/rna_modifier.c
    branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c
    branches/particles-2010/source/blender/modifiers/intern/MOD_nodetree.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodetree.c

Modified: branches/particles-2010/release/scripts/ui/properties_data_modifier.py
===================================================================
--- branches/particles-2010/release/scripts/ui/properties_data_modifier.py	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/release/scripts/ui/properties_data_modifier.py	2010-12-03 17:28:41 UTC (rev 33449)
@@ -417,7 +417,7 @@
             row.label()
 
     def NODETREE(self, layout, ob, md):
-        split = layout.split()
+        layout.template_ID(md, "nodetree")
 
     def PARTICLE_INSTANCE(self, layout, ob, md):
         layout.prop(md, "object")

Modified: branches/particles-2010/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -3766,8 +3766,7 @@
 				
 				if (ntmd)
 				{
-					if(ntmd->nodetree)
-						lib_link_ntree(fd, &ob->id, ntmd->nodetree);
+					ntmd->nodetree = newlibadr(fd, ob->id.lib, ntmd->nodetree);
 				}
 			}
 			

Modified: branches/particles-2010/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -1313,16 +1313,6 @@
 			writestruct(wd, DATA, "MDefInfluence", mmd->totinfluence, mmd->dyninfluences);
 			writedata(wd, DATA, sizeof(int)*mmd->totvert, mmd->dynverts);
 		}
-		else if (md->type==eModifierType_NodeTree) {
-			NodeTreeModifierData *ntmd = (NodeTreeModifierData*) md;
-			
-			/* nodetree is integral part of modifier, no libdata */
-			if(ntmd->nodetree) {
-				writestruct(wd, DATA, "bNodeTree", 1, ntmd->nodetree);
-				write_nodetree(wd, ntmd->nodetree);
-			}
-
-		}
 	}
 }
 

Modified: branches/particles-2010/source/blender/editors/include/ED_node.h
===================================================================
--- branches/particles-2010/source/blender/editors/include/ED_node.h	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/editors/include/ED_node.h	2010-12-03 17:28:41 UTC (rev 33449)
@@ -31,8 +31,8 @@
 struct Material;
 struct Scene;
 struct Tex;
-struct ParticleSet;
 struct bContext;
+struct bNodeTree;
 struct bNode;
 struct ID;
 
@@ -48,7 +48,7 @@
 void ED_node_shader_default(struct Material *ma);
 void ED_node_composit_default(struct Scene *sce);
 void ED_node_texture_default(struct Tex *tex);
-void ED_node_simulation_default(struct ParticleSet *pset);
+void ED_node_simulation_default(struct bNodeTree *ntree);
 
 /* node ops.c */
 void ED_operatormacros_node(void);

Modified: branches/particles-2010/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/node_edit.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/editors/space_node/node_edit.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -334,27 +334,8 @@
 
 /* assumes nothing being done in ntree yet, sets the default in/out node */
 /* called from shading buttons or header */
-void ED_node_simulation_default(ParticleSet *UNUSED(pset))
+void ED_node_simulation_default(bNodeTree *ntree)
 {
-	#if 0
-	bNode *prog;
-	
-	/* but lets check it anyway */
-	if(part->nodetree) {
-		if (G.f & G_DEBUG)
-			printf("error in particles initialize\n");
-		return;
-	}
-	
-	part->nodetree= ntreeAddTree(NTREE_SIMULATION);
-	
-	prog= nodeAddNodeType(part->nodetree, PAR_NODE_PROGRAM, NULL, NULL);
-	prog->locx= 300.0f; prog->locy= 300.0f;
-	
-	nodeSetActive(part->nodetree, prog);
-	
-	ntreeUpdate(part->nodetree);	/* needed for pointers */
-	#endif
 }
 
 void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *treetype)
@@ -2511,7 +2492,7 @@
 
 /********************** New simulation node tree operator *********************/
 
-static int new_node_tree_exec(bContext *C, wmOperator *op)
+static int new_node_tree_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	SpaceNode *snode;
 	bNodeTree *ntree;

Modified: branches/particles-2010/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- branches/particles-2010/source/blender/makesdna/DNA_modifier_types.h	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/makesdna/DNA_modifier_types.h	2010-12-03 17:28:41 UTC (rev 33449)
@@ -729,9 +729,6 @@
 	ModifierData modifier;
 	
 	struct bNodeTree *nodetree;
-	int batchsize;					/* number of elements in a data batch */
-	
-	int pad1;
 } NodeTreeModifierData;
 
 #endif

Modified: branches/particles-2010/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/particles-2010/source/blender/makesrna/RNA_access.h	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/makesrna/RNA_access.h	2010-12-03 17:28:41 UTC (rev 33449)
@@ -330,6 +330,7 @@
 extern StructRNA RNA_NodeSocket;
 extern StructRNA RNA_NodeSocketPanel;
 extern StructRNA RNA_NodeTree;
+extern StructRNA RNA_NodeTreeModifier;
 extern StructRNA RNA_NoiseTexture;
 extern StructRNA RNA_NorController;
 extern StructRNA RNA_NParticle;

Modified: branches/particles-2010/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- branches/particles-2010/source/blender/makesrna/intern/rna_modifier.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_modifier.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -176,6 +176,8 @@
 			return &RNA_SolidifyModifier;
 		case eModifierType_Screw:
 			return &RNA_ScrewModifier;
+		case eModifierType_NodeTree:
+			return &RNA_NodeTreeModifier;
 		default:
 			return &RNA_Modifier;
 	}
@@ -2246,12 +2248,18 @@
 static void rna_def_modifier_nodetree(BlenderRNA *brna)
 {
 	StructRNA *srna;
-//	PropertyRNA *prop;
+	PropertyRNA *prop;
 
 	srna= RNA_def_struct(brna, "NodeTreeModifier", "Modifier");
 	RNA_def_struct_ui_text(srna, "Node Tree Modifier", "Simulate with Node Tree");
 	RNA_def_struct_sdna(srna, "NodeTreeModifierData");
 	RNA_def_struct_ui_icon(srna, ICON_NODETREE);
+	
+	prop= RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "nodetree");
+	RNA_def_struct_ui_text(srna, "Node Tree", "Node tree used by this modifier");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, 0, "rna_Modifier_update");
 }
 
 void RNA_def_modifier(BlenderRNA *brna)

Modified: branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -3013,7 +3013,6 @@
 static void rna_def_node_socket_op(BlenderRNA *brna)
 {
 	StructRNA *srna;
-	PropertyRNA *prop;
 	
 	srna = RNA_def_struct(brna, "OperatorNodeSocket", NULL);
 	RNA_def_struct_ui_text(srna, "Operator Node Socket", "Input or output socket of a node");
@@ -3025,7 +3024,6 @@
 static void rna_def_node_socket_any(BlenderRNA *brna)
 {
 	StructRNA *srna;
-	PropertyRNA *prop;
 	
 	srna = RNA_def_struct(brna, "AnyNodeSocket", NULL);
 	RNA_def_struct_ui_text(srna, "Any Node Socket", "Input or output socket of a node");

Modified: branches/particles-2010/source/blender/modifiers/intern/MOD_nodetree.c
===================================================================
--- branches/particles-2010/source/blender/modifiers/intern/MOD_nodetree.c	2010-12-03 17:05:21 UTC (rev 33448)
+++ branches/particles-2010/source/blender/modifiers/intern/MOD_nodetree.c	2010-12-03 17:28:41 UTC (rev 33449)
@@ -50,24 +50,17 @@
 {
 	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
 	
-	if(ntmd->nodetree==NULL)
-		ntmd->nodetree = ntreeAddTree("Modifier Node Tree", NTREE_SIMULATION, 0);
-	
-	ntmd->batchsize = 1024;
+	ntmd->nodetree = NULL;
 }
 static void freeData(ModifierData *md)
 {
-	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
-	
-	if (ntmd->nodetree) {
-		ntreeFreeTree(ntmd->nodetree);
-		MEM_freeN(ntmd->nodetree);
-	}
 }
 static void copyData(ModifierData *md, ModifierData *target)
 {
-//	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
-//	NodeTreeModifierData *tntmd= (NodeTreeModifierData*) target;
+	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
+	NodeTreeModifierData *tntmd= (NodeTreeModifierData*) target;
+	
+	tntmd->nodetree = ntmd->nodetree;
 }
 
 static CustomDataMask requiredDataMask(Object *ob, ModifierData *md)
@@ -85,45 +78,15 @@
 {
 	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
 
-	if (ob->type != OB_PSET)
-		return;
-	
-	if(ob->data && ntmd->nodetree) {
+	if(ntmd->nodetree) {
 		PointerRNA self;
 		
-		RNA_id_pointer_create((ID*)ob->data, &self);
+		RNA_id_pointer_create((ID*)ob, &self);
 		ntreeSimulationExecTree(ntmd->nodetree, md->scene, &self, md->scene->r.cfra, 1.0f, md->scene->r.cfra, 1.0f);
 	}
-
-#if 0
-	DerivedMesh *dm = derivedData;
-	NodeTreeModifierData *ntmd= (NodeTreeModifierData*) md;
-	SimulationContext sim;
-
-	if (ob->type != OB_PSET)
-		return;
-	sim.pset = (ParticleSet*)ob->data;
-	sim.ntmd = ntmd;
-
-	if(sim.pset && sim.ntmd->nodetree) {
-		sim.cfra = md->scene->r.cfra;
-		sim.dfra = 1.0f; /* TODO */
-		sim.time = sim.cfra; /* TODO */
-		sim.dtime = sim.dfra; /* TODO */
-		
-		ntreeSimulationExecTree(&sim);
-		
-		
-//		psmd->flag &= ~eParticleSystemFlag_psys_updated;
-//		particle_system_update(md->scene, ob, psys);
-//		psmd->flag |= eParticleSystemFlag_psys_updated;
-//		psmd->flag &= ~eParticleSystemFlag_DM_changed;
-	}
-#endif
 }
 
-/* disabled particles in editmode for now, until support for proper derivedmesh
- * updates is coded */
+/* disabled in editmode for now */
 static void deformVertsEM(ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
 {
 #if 0
@@ -142,19 +105,13 @@
 	return 1;
 }
 
-/* Note: The "single" flag is only necessary because we need to activate the node tree from

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list