[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12580] branches/particles/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Nov 13 20:15:10 CET 2007


Revision: 12580
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12580
Author:   blendix
Date:     2007-11-13 20:15:10 +0100 (Tue, 13 Nov 2007)

Log Message:
-----------

Particle Edit Mode
==================

- Only do keep length and deflection on hairs that are being
  moved/combed/.. speeds up editing of 10000 hairs a lot.
- Key selections in editmode are now saved to file to and
  restored on file load.
- Added .-key view center on selected particles.
- Added a "See Particle buttons." label in the Particle modifier,
  fixed some drawing glitch, and tweaked spacing a bit.
- Fixed subdivide tool (always crashed).
- Fixed lasso selection to work.
- Fixed crash displaying the fields panel with particle systems
  but none active.
- Fixed particle stubs to have definitions too (declarations only
  do nothing).
- Fixed softbody pointcache getting the wrong stack index.
- Added some proper particle mode exits that were missing (like
  scene delete). Made a generic function for it, since this code
  for multiple modes was duplicated in multiple places.
- Fixed double undo push for mouse selection.
- Various warning fixes.

Modified Paths:
--------------
    branches/particles/source/blender/blenkernel/BKE_bad_level_calls.h
    branches/particles/source/blender/blenkernel/BKE_global.h
    branches/particles/source/blender/blenkernel/BKE_particle.h
    branches/particles/source/blender/blenkernel/bad_level_call_stubs/stubs.c
    branches/particles/source/blender/blenkernel/intern/anim.c
    branches/particles/source/blender/blenkernel/intern/particle.c
    branches/particles/source/blender/blenkernel/intern/particle_system.c
    branches/particles/source/blender/blenkernel/intern/softbody.c
    branches/particles/source/blender/blenloader/intern/readfile.c
    branches/particles/source/blender/include/BDR_editobject.h
    branches/particles/source/blender/include/BIF_editparticle.h
    branches/particles/source/blender/makesdna/DNA_bake_types.h
    branches/particles/source/blender/makesdna/DNA_particle_types.h
    branches/particles/source/blender/makesdna/DNA_scene_types.h
    branches/particles/source/blender/src/buttons_editing.c
    branches/particles/source/blender/src/buttons_object.c
    branches/particles/source/blender/src/drawobject.c
    branches/particles/source/blender/src/drawscene.c
    branches/particles/source/blender/src/edit.c
    branches/particles/source/blender/src/editipo.c
    branches/particles/source/blender/src/editobject.c
    branches/particles/source/blender/src/editparticle.c
    branches/particles/source/blender/src/editview.c
    branches/particles/source/blender/src/header_info.c
    branches/particles/source/blender/src/header_view3d.c
    branches/particles/source/blender/src/transform_conversions.c
    branches/particles/source/blender/src/transform_generics.c
    branches/particles/source/blender/src/view.c

Modified: branches/particles/source/blender/blenkernel/BKE_bad_level_calls.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_bad_level_calls.h	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/BKE_bad_level_calls.h	2007-11-13 19:15:10 UTC (rev 12580)
@@ -231,22 +231,10 @@
 void harmonic_coordinates_bind(struct MeshDeformModifierData *mmd,
 	float (*vertexcos)[3], int totvert, float cagemat[][4]);
 
-/* editparticle.c */
-struct ParticleEdit;
-struct ParticleEditKey;
-void PE_free_ParticleEdit(struct ParticleSystem *psys);
-struct ParticleSystem *PE_get_current(struct Object *ob);
-void EB_get_colors(char sel[4], char nosel[4]);
-struct ParticleEditKey *PE_nearest_key(struct ParticleSystem *psys, int element);
-void PE_create_ParticleEdit(struct Object *ob, struct ParticleSystem *psys);
+/* particle.c */
+struct ParticleSystem;
 
-void PE_deflect_emitter(struct Object *ob, struct ParticleSystem *psys);
-void PE_apply_lengths(struct ParticleSystem *psys);
-void PE_iterate_lengths(struct ParticleSystem *psys);
-void PE_recalc_wcos(struct Object *ob, struct ParticleSystem *psys);
-
-void PE_hide_beks(struct ParticleSystem *psys, float cfra);
-
+void PE_free_particle_edit(struct ParticleSystem *psys);
 void PE_get_colors(char sel[4], char nosel[4]);
 
 #endif

Modified: branches/particles/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_global.h	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/BKE_global.h	2007-11-13 19:15:10 UTC (rev 12580)
@@ -244,9 +244,10 @@
 #define B_ENDIAN	0
 
 /* G.moving, signals drawing in (3d) window to denote transform */
-#define G_TRANSFORM_OBJ		1
-#define G_TRANSFORM_EDIT	2
-#define G_TRANSFORM_MANIP	4
+#define G_TRANSFORM_OBJ			1
+#define G_TRANSFORM_EDIT		2
+#define G_TRANSFORM_MANIP		4
+#define G_TRANSFORM_PARTICLE	8
 
 /* G.special1 */
 

Modified: branches/particles/source/blender/blenkernel/BKE_particle.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_particle.h	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/BKE_particle.h	2007-11-13 19:15:10 UTC (rev 12580)
@@ -35,22 +35,25 @@
 #ifndef BKE_PARTICLE_H
 #define BKE_PARTICLE_H
 
+#include "DNA_particle_types.h"
 #include "DNA_object_types.h"
-#include "DNA_meshdata_types.h"
-#include "DNA_particle_types.h"
 
 struct ParticleSystemModifierData;
 struct ParticleSystem;
+struct ParticleKey;
+struct HairKey;
+
+struct Main;
+struct Group;
+struct Object;
 struct DerivedMesh;
-struct Object;
-struct Group;
-struct ListBase;
+struct ModifierData;
+struct MTFace;
+struct MFace;
+struct MVert;
+struct IpoCurve;
 struct LinkNode;
 
-struct BakeKey;
-struct IpoCurve;
-struct ModifierData;
-
 typedef struct KDTreeNode{
 	struct KDTreeNode *left, *right;
 	float co[3];
@@ -65,7 +68,7 @@
 
 typedef struct ParticleEffectorCache {
 	struct ParticleEffectorCache *next, *prev;
-	Object *ob;
+	struct Object *ob;
 	
 	/* precalculated variables for guides */
 	float firstloc[4], firstdir[3];
@@ -80,7 +83,7 @@
 
 	short type, psys_nbr;
 	
-	Object obcopy;	/* for restoring transformation data */
+	struct Object obcopy;	/* for restoring transformation data */
 } ParticleEffectorCache;
 
 typedef struct ParticleReactEvent {
@@ -148,7 +151,7 @@
 #define PE_TOT_BRUSH		7
 
 typedef struct ParticleEdit{
-	struct ListBase undo;
+	ListBase undo;
 	struct ParticleUndo *curundo;
 	struct KDTreeNode *emitter_field;
 	ParticleEditKey **keys;
@@ -182,6 +185,7 @@
 void psys_disable_all(struct Object *ob);
 void psys_enable_all(struct Object *ob);
 int psys_ob_has_hair(struct Object *ob);
+int psys_in_edit_mode(struct ParticleSystem *psys);
 
 void psys_free_settings(struct ParticleSettings *part);
 void free_child_path_cache(struct ParticleSystem *psys);
@@ -214,13 +218,11 @@
 float psys_get_child_time(struct ParticleSystem *psys, int child_nbr, float cfra);
 float psys_get_child_size(struct ParticleSystem *psys, int child_nbr, float cfra, float *pa_time);
 void psys_get_particle_on_path(struct Object *ob, struct ParticleSystem *psys, int pa_num, struct ParticleKey *state, int vel);
-int psys_get_particle_state(struct Object *ob, struct ParticleSystem *psys, int p, struct ParticleKey *state, int allways);
+int psys_get_particle_state(struct Object *ob, struct ParticleSystem *psys, int p, struct ParticleKey *state, int always);
 
 /* particle_system.c */
-void psys_calc_dmfaces(struct Object *ob, struct DerivedMesh *dm, struct ParticleSystem *psys);
-
 int psys_count_keyed_targets(struct Object *ob, struct ParticleSystem *psys);
-void psys_get_reactor_target(struct Object *ob, struct ParticleSystem *psys, Object **target_ob, struct ParticleSystem **target_psys);
+void psys_get_reactor_target(struct Object *ob, struct ParticleSystem *psys, struct Object **target_ob, struct ParticleSystem **target_psys);
 
 void psys_init_effectors(struct Object *obsrc, struct Group *group, struct ParticleSystem *psys);
 void psys_end_effectors(struct ParticleSystem *psys);
@@ -255,7 +257,7 @@
 void psys_particle_on_dm(struct DerivedMesh *dm, int deform_only, int from, int index, int index_dmcache, float *fuv, float *vec, float *nor, float *utan, float *vtan);
 
 /* particle_system.c */
-void initialize_particle(struct ParticleData *pa, int p, Object *ob, struct ParticleSystem *psys, struct ParticleSystemModifierData *psmd);
+void initialize_particle(struct ParticleData *pa, int p, struct Object *ob, struct ParticleSystem *psys, struct ParticleSystemModifierData *psmd);
 void reset_particle(struct ParticleData *pa, struct ParticleSystem *psys, struct ParticleSystemModifierData *psmd, struct Object *ob, int deform_only, float dtime, float cfra, float *vg_vel, float *vg_tan, float *vg_rot);
 
 int psys_particle_dm_face_lookup(struct DerivedMesh *dm, int index, float *fuv, struct LinkNode *node);

Modified: branches/particles/source/blender/blenkernel/bad_level_call_stubs/stubs.c
===================================================================
--- branches/particles/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2007-11-13 19:15:10 UTC (rev 12580)
@@ -209,7 +209,7 @@
 void IK_SolverAddGoal(IK_Solver *solver, IK_Segment *tip, float goal[3], float weight) {}
 void IK_SolverAddGoalOrientation(IK_Solver *solver, IK_Segment *tip, float goal[][3], float weight) {}
 void IK_SolverSetPoleVectorConstraint(IK_Solver *solver, IK_Segment *tip, float goal[3], float polegoal[3], float poleangle, int getangle) {}
-float IK_SolverGetPoleAngle(IK_Solver *solver) {}
+float IK_SolverGetPoleAngle(IK_Solver *solver) { return 0.0f; }
 
 int IK_Solve(IK_Solver *solver, float tolerance, int max_iterations) { return 0; }
 
@@ -246,6 +246,8 @@
 
 /*new render funcs */
 int     externtex(struct MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta) { return 0; }
+void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype) {}
+float texture_value_blend(float tex, float out, float fact, float facg, int blendtype, int flip) { return 0; }
 
 void RE_FreeRenderResult(struct RenderResult *rr) {}
 void RE_GetResultImage(struct Render *re, struct RenderResult *rr) {}
@@ -339,3 +341,7 @@
 void harmonic_coordinates_bind(struct MeshDeformModifierData *mmd,
 	float (*vertexcos)[3], int totvert, float cagemat[][4]) {}
 
+/* particle.c */
+void PE_free_particle_edit(struct ParticleSystem *psys) {}
+void PE_get_colors(char sel[4], char nosel[4]) {}
+

Modified: branches/particles/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/particles/source/blender/blenkernel/intern/anim.c	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/intern/anim.c	2007-11-13 19:15:10 UTC (rev 12580)
@@ -726,8 +726,8 @@
 	BLI_srandom(31415926 + psys->seed);
 		
 	lay= G.scene->lay;
-	if(part->draw_as == PART_DRAW_OB && part->dup_ob ||
-		part->draw_as == PART_DRAW_GR && part->dup_group && part->dup_group->gobject.first) {
+	if((part->draw_as == PART_DRAW_OB && part->dup_ob) ||
+		(part->draw_as == PART_DRAW_GR && part->dup_group && part->dup_group->gobject.first)) {
 
 		if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED) && part->draw & PART_DRAW_KEYS)
 			step_nbr = part->keys_step;

Modified: branches/particles/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/particles/source/blender/blenkernel/intern/particle.c	2007-11-13 18:50:57 UTC (rev 12579)
+++ branches/particles/source/blender/blenkernel/intern/particle.c	2007-11-13 19:15:10 UTC (rev 12580)
@@ -127,7 +127,7 @@
 {
 	ParticleSystem *psys;
 	DynStr *ds;
-	char *str, num[6], temp[128];
+	char *str, num[6];
 	int i;
 
 	ds = BLI_dynstr_new();
@@ -138,10 +138,10 @@
 	for(i=0,psys=ob->particlesystem.first; psys; i++,psys=psys->next){
 
 		BLI_dynstr_append(ds, "|");
-		sprintf(num,"%i. ",i);
+		sprintf(num,"%i. ",i+1);
 		BLI_dynstr_append(ds, num);
 		BLI_dynstr_append(ds, psys->part->id.name+2);
-		sprintf(num,"%%x%i",i);
+		sprintf(num,"%%x%i",i+1);
 		BLI_dynstr_append(ds, num);
 	}
 	
@@ -174,10 +174,9 @@
 
 	if(ob==0) return 0;
 
-	for(psys=ob->particlesystem.first, i=0; psys; psys=psys->next, i++){
+	for(psys=ob->particlesystem.first, i=0; psys; psys=psys->next, i++)
 		if(psys->flag & PSYS_CURRENT)
 			return i;
-	}
 	
 	return i;
 }
@@ -198,10 +197,11 @@
 			npsys->flag |= PSYS_CURRENT;
 	}
 }
-Object *psys_get_lattice(Object *ob, ParticleSystem *psys){
+Object *psys_get_lattice(Object *ob, ParticleSystem *psys)
+{
 	Object *lattice=0;
 	
-	if((G.f&G_PARTICLEEDIT && ob==OBACT && psys->flag&PSYS_CURRENT)==0){
+	if(!psys_in_edit_mode(psys)==0){
 
 		ModifierData *md = (ModifierData*)psys_get_modifier(ob,psys);
 
@@ -218,13 +218,15 @@
 
 	return lattice;
 }
-void psys_disable_all(Object *ob){
+void psys_disable_all(Object *ob)
+{
 	ParticleSystem *psys=ob->particlesystem.first;
 
 	for(; psys; psys=psys->next)
 		psys->flag &= ~PSYS_ENABLED;
 }
-void psys_enable_all(Object *ob){
+void psys_enable_all(Object *ob)
+{
 	ParticleSystem *psys=ob->particlesystem.first;
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list