Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-09-19 21:44:20 +0400
committerTon Roosendaal <ton@blender.org>2004-09-19 21:44:20 +0400
commit74cd2db33749740b135162eb46705f799a735431 (patch)
tree637a156e97ff4bf116065c3cd1aa218bb4a8d6fa /source/blender
parente99320e7d21232c154b2c9d4a7d38e116b95b9c2 (diff)
Removed all calls to object_wave in code, and moved it into the
mesh_modifier() in deform.c. Now wave works on top of hooks, before lattice/curve deform and armature. But together!
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_effect.h2
-rw-r--r--source/blender/blenkernel/intern/blender.c5
-rw-r--r--source/blender/blenkernel/intern/deform.c6
-rw-r--r--source/blender/blenkernel/intern/displist.c15
-rw-r--r--source/blender/blenkernel/intern/effect.c26
-rw-r--r--source/blender/renderconverter/intern/convertBlenderScene.c8
-rw-r--r--source/blender/src/buttons_object.c2
-rw-r--r--source/blender/src/drawobject.c1
8 files changed, 31 insertions, 34 deletions
diff --git a/source/blender/blenkernel/BKE_effect.h b/source/blender/blenkernel/BKE_effect.h
index 84994672d9f..14ece28e6bd 100644
--- a/source/blender/blenkernel/BKE_effect.h
+++ b/source/blender/blenkernel/BKE_effect.h
@@ -60,7 +60,7 @@ void init_mv_jit(float *jit, int num,int seed2);
void give_mesh_mvert(struct Mesh *me, int nr, float *co, short *no,int seed2);
void build_particle_system(struct Object *ob);
void calc_wave_deform(struct WaveEff *wav, float ctime, float *co);
-void object_wave(struct Object *ob);
+int object_wave(struct Object *ob);
#endif
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 00cd8771ff0..c0be3d71ec2 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -75,7 +75,6 @@
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_scene.h"
-#include "BKE_effect.h"
#include "BKE_curve.h"
#include "BKE_font.h"
@@ -345,10 +344,6 @@ static void setup_app_data(BlendFileData *bfd, char *filename)
Curve *cu= ob->data;
if(cu->nurb.first==0) text_to_curve(ob, 0);
}
- else if(ob->type==OB_MESH) {
- makeDispList(ob);
- if(ob->effect.first) object_wave(ob);
- }
}
if (!G.background) {
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index f3eab76a465..290538013eb 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -40,6 +40,7 @@
#include "MEM_guardedalloc.h"
#include "DNA_curve_types.h"
+#include "DNA_effect_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
@@ -48,6 +49,7 @@
#include "BKE_curve.h"
#include "BKE_deform.h"
#include "BKE_displist.h"
+#include "BKE_effect.h"
#include "BKE_lattice.h"
#include "BKE_utildefines.h"
@@ -209,6 +211,7 @@ int mesh_modifier(Object *ob, char mode)
/* conditions if it's needed */
if(ob->hooks.first);
+ else if(ob->effect.first); // weak... particles too
else if(ob->parent && ob->parent->type==OB_LATTICE);
else if(ob->parent && ob->partype==PARSKEL);
else return 0;
@@ -231,6 +234,8 @@ int mesh_modifier(Object *ob, char mode)
}
}
+ if(ob->effect.first) done |= object_wave(ob);
+
/* deform: input mesh, output ob dl_verts. is used by subsurf */
done |= object_deform(ob);
@@ -251,6 +256,7 @@ int mesh_modifier(Object *ob, char mode)
}
}
}
+
}
else { // end
if(mvert) {
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index dfae3c6b12b..63f344077cb 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -51,6 +51,7 @@
#include "DNA_texture_types.h"
#include "DNA_meta_types.h"
#include "DNA_curve_types.h"
+#include "DNA_effect_types.h"
#include "DNA_listBase.h"
#include "DNA_lamp_types.h"
#include "DNA_object_types.h"
@@ -1759,8 +1760,6 @@ void makeDispList(Object *ob)
mesh_modifier(ob, 's');
}
- if(ob->effect.first) object_wave(ob);
-
if (mesh_uses_displist(me)) { /* subsurf */
DispListMesh *dlm;
@@ -1782,6 +1781,7 @@ void makeDispList(Object *ob)
}
if(ob!=G.obedit) mesh_modifier(ob, 'e');
+
}
else if(ob->type==OB_MBALL) {
@@ -2395,7 +2395,16 @@ void test_all_displists(void)
}
}
else if(ob->type==OB_MESH) {
- if(ob->effect.first) object_wave(ob);
+ if(ob->effect.first) {
+ Effect *eff= ob->effect.first;
+ while(eff) {
+ if(eff->type==EFF_WAVE) {
+ freedisplist_object(ob);
+ break;
+ }
+ eff= eff->next;
+ }
+ }
if(ob!=G.obedit) {
if(( ((Mesh *)(ob->data))->key )||(ob->effect.first))
freedisplist_object(ob); //makeDispList(ob);
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index ef614766292..4249e5eef5b 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -1424,14 +1424,16 @@ void calc_wave_deform(WaveEff *wav, float ctime, float *co)
}
}
-void object_wave(Object *ob)
+/* return 1 if deformed
+ Note: it works on mvert now, so assumes to be callied in modifier stack \
+*/
+int object_wave(Object *ob)
{
WaveEff *wav;
- DispList *dl;
Mesh *me;
MVert *mvert;
- float *fp, ctime;
- int a, first;
+ float ctime;
+ int a;
/* is there a wave */
wav= ob->effect.first;
@@ -1439,19 +1441,13 @@ void object_wave(Object *ob)
if(wav->type==EFF_WAVE) break;
wav= wav->next;
}
- if(wav==0) return;
+ if(wav==NULL) return 0;
if(ob->type==OB_MESH) {
ctime= bsystem_time(ob, 0, (float)G.scene->r.cfra, 0.0);
- first= 1;
me= ob->data;
- dl= find_displist_create(&ob->disp, DL_VERTS);
-
- if(dl->verts) MEM_freeN(dl->verts);
- dl->nr= me->totvert;
- dl->verts= MEM_mallocN(3*sizeof(float)*me->totvert, "wave");
wav= ob->effect.first;
while(wav) {
@@ -1462,15 +1458,13 @@ void object_wave(Object *ob)
if(wav->damp==0) wav->damp= 10.0f;
mvert= me->mvert;
- fp= dl->verts;
- for(a=0; a<me->totvert; a++, mvert++, fp+=3) {
- if(first) VECCOPY(fp, mvert->co);
- calc_wave_deform(wav, ctime, fp);
+ for(a=0; a<me->totvert; a++, mvert++) {
+ calc_wave_deform(wav, ctime, mvert->co);
}
- first= 0;
}
wav= wav->next;
}
}
+ return 1;
}
diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c
index 1b43963f64d..6243fab6f27 100644
--- a/source/blender/renderconverter/intern/convertBlenderScene.c
+++ b/source/blender/renderconverter/intern/convertBlenderScene.c
@@ -1268,14 +1268,6 @@ static void init_render_mesh(Object *ob)
if(me->key) do_puno= 1;
- if(ob->effect.first) {
- Effect *eff= ob->effect.first;
- while(eff) {
- if(eff->type==EFF_WAVE) do_puno= 1;
- eff= eff->next;
- }
- }
-
if(me->orco==0) {
need_orco= 0;
for(a=1; a<=ob->totcol; a++) {
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c
index 29fa70a1644..8b39da84789 100644
--- a/source/blender/src/buttons_object.c
+++ b/source/blender/src/buttons_object.c
@@ -1337,7 +1337,7 @@ void do_effects_panels(unsigned short event)
while(eff) {
if(eff->flag & SELECT) {
if(eff->type==EFF_PARTICLE) build_particle_system(ob);
- else if(eff->type==EFF_WAVE) object_wave(ob);
+ else if(eff->type==EFF_WAVE) freedisplist(&ob->disp);
}
eff= eff->next;
}
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index 71e4de14134..d4f29662304 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -3911,6 +3911,7 @@ void draw_object(Base *base)
if(ob->disp.first==NULL) {
if(ob->parent && ob->partype==PARSKEL) makeDispList(ob);
else if(ob->hooks.first) makeDispList(ob);
+ else if(ob->effect.first) makeDispList(ob);
else if(me->disp.first==NULL && mesh_uses_displist(me)) makeDispList(ob);
}
}