[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