Made static particles working with a deformed Mesh, both for Lattice as
for Armature. Note: only works for subsurfed Mesh now! Change in drawobject.c: Halo option on subsurf Mesh now draws points. but using the original vertices...
This commit is contained in:
@@ -1672,8 +1672,9 @@ void makeDispList(Object *ob)
|
|||||||
float *data, *fp1, widfac, vec[3];
|
float *data, *fp1, widfac, vec[3];
|
||||||
int len, a, b, draw=0;
|
int len, a, b, draw=0;
|
||||||
|
|
||||||
if(ob==0) return;
|
if(ob==NULL) return;
|
||||||
if(ob->flag & OB_FROMDUPLI) return;
|
if(ob->flag & OB_FROMDUPLI) return;
|
||||||
|
|
||||||
freedisplist(&(ob->disp));
|
freedisplist(&(ob->disp));
|
||||||
|
|
||||||
if(ob->type==OB_MESH) {
|
if(ob->type==OB_MESH) {
|
||||||
@@ -1682,7 +1683,8 @@ void makeDispList(Object *ob)
|
|||||||
freedisplist(&(me->disp));
|
freedisplist(&(me->disp));
|
||||||
|
|
||||||
tex_space_mesh(ob->data);
|
tex_space_mesh(ob->data);
|
||||||
|
|
||||||
|
/* deform: input mesh, output ob dl_verts. is used by subsurf */
|
||||||
object_deform(ob);
|
object_deform(ob);
|
||||||
|
|
||||||
if(ob->effect.first) object_wave(ob);
|
if(ob->effect.first) object_wave(ob);
|
||||||
@@ -1694,6 +1696,7 @@ void makeDispList(Object *ob)
|
|||||||
dlm= subsurf_make_dispListMesh_from_editmesh(em, me->subdiv, me->flag, me->subsurftype);
|
dlm= subsurf_make_dispListMesh_from_editmesh(em, me->subdiv, me->flag, me->subsurftype);
|
||||||
} else {
|
} else {
|
||||||
DispList *dlVerts= find_displist(&ob->disp, DL_VERTS);
|
DispList *dlVerts= find_displist(&ob->disp, DL_VERTS);
|
||||||
|
|
||||||
dlm= subsurf_make_dispListMesh_from_mesh(me, dlVerts?dlVerts->verts:NULL,
|
dlm= subsurf_make_dispListMesh_from_mesh(me, dlVerts?dlVerts->verts:NULL,
|
||||||
me->subdiv, me->flag);
|
me->subdiv, me->flag);
|
||||||
}
|
}
|
||||||
@@ -2236,6 +2239,7 @@ void test_all_displists(void)
|
|||||||
{
|
{
|
||||||
Base *base;
|
Base *base;
|
||||||
Object *ob;
|
Object *ob;
|
||||||
|
int done; /* prevent displist to be made too often */
|
||||||
unsigned int lay;
|
unsigned int lay;
|
||||||
|
|
||||||
/* background */
|
/* background */
|
||||||
@@ -2246,7 +2250,8 @@ void test_all_displists(void)
|
|||||||
if(base->lay & lay) {
|
if(base->lay & lay) {
|
||||||
ob= base->object;
|
ob= base->object;
|
||||||
|
|
||||||
|
done= 0;
|
||||||
|
|
||||||
if(ob->type==OB_MBALL && (ob->ipo || ob->parent)) {
|
if(ob->type==OB_MBALL && (ob->ipo || ob->parent)) {
|
||||||
// find metaball object holding the displist
|
// find metaball object holding the displist
|
||||||
// WARNING: if more metaballs have IPO's the displist
|
// WARNING: if more metaballs have IPO's the displist
|
||||||
@@ -2260,41 +2265,40 @@ void test_all_displists(void)
|
|||||||
freedisplist(&ob->disp);
|
freedisplist(&ob->disp);
|
||||||
}
|
}
|
||||||
else if(ob->parent) {
|
else if(ob->parent) {
|
||||||
|
|
||||||
|
done= 1;
|
||||||
if (ob->parent->type == OB_LATTICE)
|
if (ob->parent->type == OB_LATTICE)
|
||||||
makeDispList(ob);
|
makeDispList(ob);
|
||||||
else if ((ob->parent->type == OB_IKA) && (ob->partype == PARSKEL))
|
else if ((ob->parent->type == OB_IKA) && (ob->partype == PARSKEL))
|
||||||
makeDispList(ob);
|
makeDispList(ob);
|
||||||
#ifdef __NLA
|
|
||||||
else if ((ob->parent->type==OB_ARMATURE) && (ob->partype == PARSKEL))
|
else if ((ob->parent->type==OB_ARMATURE) && (ob->partype == PARSKEL))
|
||||||
makeDispList(ob);
|
makeDispList(ob);
|
||||||
|
else done= 0;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* warn, ob pointer changed in case of OB_MALL */
|
/* warn, ob pointer changed in case of OB_MALL */
|
||||||
|
if(done==0) {
|
||||||
if ELEM(ob->type, OB_CURVE, OB_SURF) {
|
if ELEM(ob->type, OB_CURVE, OB_SURF) {
|
||||||
if(ob!=G.obedit) {
|
if(ob!=G.obedit) {
|
||||||
if( ((Curve *)(ob->data))->key ) makeDispList(ob);
|
if( ((Curve *)(ob->data))->key ) makeDispList(ob);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else if(ob->type==OB_FONT) {
|
||||||
else if(ob->type==OB_FONT) {
|
Curve *cu= ob->data;
|
||||||
Curve *cu= ob->data;
|
if(cu->textoncurve) {
|
||||||
if(cu->textoncurve) {
|
if( ((Curve *)cu->textoncurve->data)->key ) {
|
||||||
if( ((Curve *)cu->textoncurve->data)->key ) {
|
text_to_curve(ob, 0);
|
||||||
text_to_curve(ob, 0);
|
makeDispList(ob);
|
||||||
makeDispList(ob);
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(ob->type==OB_MESH) {
|
||||||
|
if(ob->effect.first) object_wave(ob);
|
||||||
|
if(ob!=G.obedit) {
|
||||||
|
if(( ((Mesh *)(ob->data))->key )||(ob->effect.first)) makeDispList(ob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(ob->type==OB_MESH) {
|
|
||||||
if(ob->effect.first) object_wave(ob);
|
|
||||||
if(ob!=G.obedit) {
|
|
||||||
if(( ((Mesh *)(ob->data))->key )||(ob->effect.first)) makeDispList(ob);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if(base->next==0 && G.scene->set && base==G.scene->base.last) base= G.scene->set->base.first;
|
if(base->next==0 && G.scene->set && base==G.scene->base.last) base= G.scene->set->base.first;
|
||||||
else base= base->next;
|
else base= base->next;
|
||||||
|
|||||||
@@ -916,10 +916,10 @@ void give_mesh_mvert(Mesh *me, int nr, float *co, short *no, float seed2)
|
|||||||
{
|
{
|
||||||
static float *jit=0;
|
static float *jit=0;
|
||||||
static int jitlevel=1;
|
static int jitlevel=1;
|
||||||
MVert *mvert;
|
MVert *mvert, *mvertbase=NULL;
|
||||||
MFace *mface;
|
MFace *mface, *mfacebase=NULL;
|
||||||
float u, v, *v1, *v2, *v3, *v4;
|
float u, v, *v1, *v2, *v3, *v4;
|
||||||
int curface, curjit;
|
int totface=0, totvert=0, curface, curjit;
|
||||||
short *n1, *n2, *n3, *n4;
|
short *n1, *n2, *n3, *n4;
|
||||||
|
|
||||||
/* signal */
|
/* signal */
|
||||||
@@ -929,17 +929,36 @@ void give_mesh_mvert(Mesh *me, int nr, float *co, short *no, float seed2)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(me->totface==0 || nr<me->totvert) {
|
/* get it from displist? */
|
||||||
mvert= me->mvert + (nr % me->totvert);
|
if(me->disp.first) {
|
||||||
|
DispList *dl= me->disp.first;
|
||||||
|
if(dl->type==DL_MESH) {
|
||||||
|
DispListMesh *dlm= dl->mesh;
|
||||||
|
mvertbase= dlm->mvert;
|
||||||
|
mfacebase= dlm->mface;
|
||||||
|
totface= dlm->totface;
|
||||||
|
totvert= dlm->totvert;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(totvert==0) {
|
||||||
|
mvertbase= me->mvert;
|
||||||
|
mfacebase= me->mface;
|
||||||
|
totface= me->totface;
|
||||||
|
totvert= me->totvert;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(totface==0 || nr<totvert) {
|
||||||
|
mvert= mvertbase + (nr % totvert);
|
||||||
VECCOPY(co, mvert->co);
|
VECCOPY(co, mvert->co);
|
||||||
VECCOPY(no, mvert->no);
|
VECCOPY(no, mvert->no);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
nr-= me->totvert;
|
nr-= totvert;
|
||||||
|
|
||||||
if(jit==0) {
|
if(jit==0) {
|
||||||
jitlevel= nr/me->totface;
|
jitlevel= nr/totface;
|
||||||
if(jitlevel==0) jitlevel= 1;
|
if(jitlevel==0) jitlevel= 1;
|
||||||
if(jitlevel>100) jitlevel= 100;
|
if(jitlevel>100) jitlevel= 100;
|
||||||
|
|
||||||
@@ -948,35 +967,35 @@ void give_mesh_mvert(Mesh *me, int nr, float *co, short *no, float seed2)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
curjit= nr/me->totface;
|
curjit= nr/totface;
|
||||||
curjit= curjit % jitlevel;
|
curjit= curjit % jitlevel;
|
||||||
|
|
||||||
curface= nr % me->totface;
|
curface= nr % totface;
|
||||||
|
|
||||||
mface= me->mface;
|
mface= mfacebase;
|
||||||
mface+= curface;
|
mface+= curface;
|
||||||
|
|
||||||
v1= (me->mvert+(mface->v1))->co;
|
v1= (mvertbase+(mface->v1))->co;
|
||||||
v2= (me->mvert+(mface->v2))->co;
|
v2= (mvertbase+(mface->v2))->co;
|
||||||
n1= (me->mvert+(mface->v1))->no;
|
n1= (mvertbase+(mface->v1))->no;
|
||||||
n2= (me->mvert+(mface->v2))->no;
|
n2= (mvertbase+(mface->v2))->no;
|
||||||
if(mface->v3==0) {
|
if(mface->v3==0) {
|
||||||
v3= (me->mvert+(mface->v2))->co;
|
v3= (mvertbase+(mface->v2))->co;
|
||||||
v4= (me->mvert+(mface->v1))->co;
|
v4= (mvertbase+(mface->v1))->co;
|
||||||
n3= (me->mvert+(mface->v2))->no;
|
n3= (mvertbase+(mface->v2))->no;
|
||||||
n4= (me->mvert+(mface->v1))->no;
|
n4= (mvertbase+(mface->v1))->no;
|
||||||
}
|
}
|
||||||
else if(mface->v4==0) {
|
else if(mface->v4==0) {
|
||||||
v3= (me->mvert+(mface->v3))->co;
|
v3= (mvertbase+(mface->v3))->co;
|
||||||
v4= (me->mvert+(mface->v1))->co;
|
v4= (mvertbase+(mface->v1))->co;
|
||||||
n3= (me->mvert+(mface->v3))->no;
|
n3= (mvertbase+(mface->v3))->no;
|
||||||
n4= (me->mvert+(mface->v1))->no;
|
n4= (mvertbase+(mface->v1))->no;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
v3= (me->mvert+(mface->v3))->co;
|
v3= (mvertbase+(mface->v3))->co;
|
||||||
v4= (me->mvert+(mface->v4))->co;
|
v4= (mvertbase+(mface->v4))->co;
|
||||||
n3= (me->mvert+(mface->v3))->no;
|
n3= (mvertbase+(mface->v3))->no;
|
||||||
n4= (me->mvert+(mface->v4))->no;
|
n4= (mvertbase+(mface->v4))->no;
|
||||||
}
|
}
|
||||||
|
|
||||||
u= jit[2*curjit];
|
u= jit[2*curjit];
|
||||||
@@ -1019,7 +1038,7 @@ void build_particle_system(Object *ob)
|
|||||||
}
|
}
|
||||||
|
|
||||||
paf= give_parteff(ob);
|
paf= give_parteff(ob);
|
||||||
if(paf==0) return;
|
if(paf==NULL) return;
|
||||||
|
|
||||||
waitcursor(1);
|
waitcursor(1);
|
||||||
|
|
||||||
@@ -1027,7 +1046,7 @@ void build_particle_system(Object *ob)
|
|||||||
|
|
||||||
/* generate all particles */
|
/* generate all particles */
|
||||||
if(paf->keys) MEM_freeN(paf->keys);
|
if(paf->keys) MEM_freeN(paf->keys);
|
||||||
paf->keys= 0;
|
paf->keys= NULL;
|
||||||
new_particle(paf);
|
new_particle(paf);
|
||||||
|
|
||||||
cfraont= G.scene->r.cfra;
|
cfraont= G.scene->r.cfra;
|
||||||
@@ -1092,12 +1111,20 @@ void build_particle_system(Object *ob)
|
|||||||
force[1]= paf->force[1]*0.05f;
|
force[1]= paf->force[1]*0.05f;
|
||||||
force[2]= paf->force[2]*0.05f;
|
force[2]= paf->force[2]*0.05f;
|
||||||
|
|
||||||
deform= (ob->parent && ob->parent->type==OB_LATTICE);
|
if( paf->flag & PAF_STATIC ) deform= 0;
|
||||||
if(deform) init_latt_deform(ob->parent, 0);
|
else {
|
||||||
|
deform= (ob->parent && ob->parent->type==OB_LATTICE);
|
||||||
|
if(deform) init_latt_deform(ob->parent, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/* init */
|
/* init */
|
||||||
give_mesh_mvert(me, totpart, co, no,paf->seed);
|
give_mesh_mvert(me, totpart, co, no,paf->seed);
|
||||||
|
|
||||||
|
if(me->disp.first) {
|
||||||
|
DispList *dl= me->disp.first;
|
||||||
|
if(dl->type==DL_MESH) printf("from disp\n");
|
||||||
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf("Calculating particles......... \n");
|
printf("Calculating particles......... \n");
|
||||||
|
|
||||||
@@ -1207,11 +1234,12 @@ void build_particle_system(Object *ob)
|
|||||||
give_mesh_mvert(0, 0, 0, 0,paf->seed);
|
give_mesh_mvert(0, 0, 0, 0,paf->seed);
|
||||||
|
|
||||||
/*Restore armature settings*/
|
/*Restore armature settings*/
|
||||||
if (armature_parent) {
|
if((paf->flag & PAF_STATIC)==0) {
|
||||||
do_all_actions();
|
if (armature_parent) {
|
||||||
rebuild_all_armature_displists();
|
do_all_actions();
|
||||||
|
rebuild_all_armature_displists();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* put hierarchy back */
|
/* put hierarchy back */
|
||||||
par= ob;
|
par= ob;
|
||||||
while(par) {
|
while(par) {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
#define PAF_BSPLINE 2
|
#define PAF_BSPLINE 2
|
||||||
#define PAF_STATIC 4
|
#define PAF_STATIC 4
|
||||||
#define PAF_FACE 8
|
#define PAF_FACE 8
|
||||||
|
#define PAF_ANIMATED 16
|
||||||
|
|
||||||
/* eff->type */
|
/* eff->type */
|
||||||
#define EFF_BUILD 0
|
#define EFF_BUILD 0
|
||||||
|
|||||||
@@ -853,14 +853,14 @@ static void render_particle_system(Object *ob, PartEff *paf)
|
|||||||
int a, mat_nr=1;
|
int a, mat_nr=1;
|
||||||
|
|
||||||
pa= paf->keys;
|
pa= paf->keys;
|
||||||
if(pa==0) {
|
if(pa==NULL) {
|
||||||
build_particle_system(ob);
|
build_particle_system(ob);
|
||||||
pa= paf->keys;
|
pa= paf->keys;
|
||||||
if(pa==0) return;
|
if(pa==NULL) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ma= give_render_material(ob, 1);
|
ma= give_render_material(ob, 1);
|
||||||
if(ma==0) ma= &defmaterial;
|
if(ma==NULL) ma= &defmaterial;
|
||||||
|
|
||||||
MTC_Mat4MulMat4(mat, ob->obmat, R.viewmat);
|
MTC_Mat4MulMat4(mat, ob->obmat, R.viewmat);
|
||||||
MTC_Mat4Invert(ob->imat, mat); /* this is correct, for imat texture */
|
MTC_Mat4Invert(ob->imat, mat); /* this is correct, for imat texture */
|
||||||
@@ -955,7 +955,7 @@ static void render_static_particle_system(Object *ob, PartEff *paf)
|
|||||||
int a, mat_nr=1;
|
int a, mat_nr=1;
|
||||||
|
|
||||||
pa= paf->keys;
|
pa= paf->keys;
|
||||||
if(pa==0) {
|
if(pa==NULL || (paf->flag & PAF_ANIMATED)) {
|
||||||
build_particle_system(ob);
|
build_particle_system(ob);
|
||||||
pa= paf->keys;
|
pa= paf->keys;
|
||||||
if(pa==0) return;
|
if(pa==0) return;
|
||||||
@@ -1253,6 +1253,9 @@ static void init_render_mesh(Object *ob)
|
|||||||
|
|
||||||
me= ob->data;
|
me= ob->data;
|
||||||
|
|
||||||
|
/* object_deform changes imat */
|
||||||
|
do_puno= object_deform(ob);
|
||||||
|
|
||||||
paf = give_parteff(ob);
|
paf = give_parteff(ob);
|
||||||
if(paf) {
|
if(paf) {
|
||||||
if(paf->flag & PAF_STATIC) render_static_particle_system(ob, paf);
|
if(paf->flag & PAF_STATIC) render_static_particle_system(ob, paf);
|
||||||
@@ -1260,9 +1263,6 @@ static void init_render_mesh(Object *ob)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* object_deform changes imat */
|
|
||||||
do_puno= object_deform(ob);
|
|
||||||
|
|
||||||
/* yafray: set transform to identity matrix */
|
/* yafray: set transform to identity matrix */
|
||||||
if (R.r.renderer==R_YAFRAY)
|
if (R.r.renderer==R_YAFRAY)
|
||||||
MTC_Mat4One(mat);
|
MTC_Mat4One(mat);
|
||||||
|
|||||||
@@ -1354,7 +1354,9 @@ void effects_panel_effects(Object *ob)
|
|||||||
paf= (PartEff *)eff;
|
paf= (PartEff *)eff;
|
||||||
|
|
||||||
uiDefBut(block, BUT, B_RECALCAL, "RecalcAll", 741,187,67,27, 0, 0, 0, 0, 0, "Update the particle system");
|
uiDefBut(block, BUT, B_RECALCAL, "RecalcAll", 741,187,67,27, 0, 0, 0, 0, 0, "Update the particle system");
|
||||||
uiDefButS(block, TOG|BIT|2, B_CALCEFFECT, "Static", 825,187,67,27, &paf->flag, 0, 0, 0, 0, "Make static particles");
|
uiDefButS(block, TOG|BIT|2, B_CALCEFFECT, "Static", 825,187,67,27, &paf->flag, 0, 0, 0, 0, "Make static particles (deform only works with SubSurf)");
|
||||||
|
if(paf->flag & PAF_STATIC)
|
||||||
|
uiDefButS(block, TOG|BIT|4, B_DIFF, "Animated",825,167,67,20, &paf->flag, 0, 0, 0, 0, "Static particles are recalculated each rendered frame");
|
||||||
|
|
||||||
uiBlockBeginAlign(block);
|
uiBlockBeginAlign(block);
|
||||||
uiDefButI(block, NUM, B_CALCEFFECT, "Tot:", 550,146,91,20, &paf->totpart, 1.0, 100000.0, 0, 0, "Set the total number of particles");
|
uiDefButI(block, NUM, B_CALCEFFECT, "Tot:", 550,146,91,20, &paf->totpart, 1.0, 100000.0, 0, 0, "Set the total number of particles");
|
||||||
|
|||||||
@@ -2362,7 +2362,7 @@ static void drawmeshwire(Object *ob)
|
|||||||
Material *ma;
|
Material *ma;
|
||||||
EditEdge *eed;
|
EditEdge *eed;
|
||||||
EditVlak *evl;
|
EditVlak *evl;
|
||||||
float fvec[3], cent[3], *f1, *f2, *f3, *f4, *extverts=0;
|
float fvec[3], cent[3], *f1, *f2, *f3, *f4, *extverts=NULL;
|
||||||
int a, start, end, test, ok, handles=0;
|
int a, start, end, test, ok, handles=0;
|
||||||
|
|
||||||
me= get_mesh(ob);
|
me= get_mesh(ob);
|
||||||
@@ -2503,52 +2503,50 @@ static void drawmeshwire(Object *ob)
|
|||||||
}
|
}
|
||||||
else { /* Object mode draw */
|
else { /* Object mode draw */
|
||||||
|
|
||||||
if(me==0) return;
|
if(me==NULL) return;
|
||||||
|
|
||||||
if(me->bb==0) tex_space_mesh(me);
|
if(me->bb==0) tex_space_mesh(me);
|
||||||
if(me->totface>4) if(boundbox_clip(ob->obmat, me->bb)==0) return;
|
if(me->totface>4) if(boundbox_clip(ob->obmat, me->bb)==0) return;
|
||||||
|
|
||||||
if(mesh_uses_displist(me)) drawDispListwire(&me->disp); /* Subsurf */
|
/* check for drawing vertices only */
|
||||||
|
ok= 0;
|
||||||
|
if(me->totface==0) ok= 1;
|
||||||
else {
|
else {
|
||||||
|
ma= give_current_material(ob, 1);
|
||||||
|
if(ma && (ma->mode & MA_HALO)) ok= 1;
|
||||||
|
}
|
||||||
|
mvert= me->mvert;
|
||||||
|
mface= me->mface;
|
||||||
|
|
||||||
|
dl= find_displist(&ob->disp, DL_VERTS);
|
||||||
|
if(dl) extverts= dl->verts;
|
||||||
|
|
||||||
|
if(ok) {
|
||||||
|
start= 0; end= me->totvert;
|
||||||
|
set_buildvars(ob, &start, &end);
|
||||||
|
|
||||||
mvert= me->mvert;
|
glPointSize(1.5);
|
||||||
mface= me->mface;
|
glBegin(GL_POINTS);
|
||||||
|
|
||||||
ok= 0;
|
if(extverts) {
|
||||||
if(me->totface==0) ok= 1;
|
extverts+= 3*start;
|
||||||
|
for(a= start; a<end; a++, extverts+=3) { /* DispList found, Draw displist */
|
||||||
|
glVertex3fv(extverts);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
ma= give_current_material(ob, 1);
|
mvert+= start;
|
||||||
if(ma && (ma->mode & MA_HALO)) ok= 1;
|
for(a= start; a<end; a++, mvert++) { /* else Draw mesh verts directly */
|
||||||
}
|
glVertex3fv(mvert->co);
|
||||||
|
|
||||||
dl= find_displist(&ob->disp, DL_VERTS);
|
|
||||||
if(dl) extverts= dl->verts;
|
|
||||||
|
|
||||||
if(ok) { /* No faces, just draw verts as points */
|
|
||||||
|
|
||||||
start= 0; end= me->totvert;
|
|
||||||
set_buildvars(ob, &start, &end);
|
|
||||||
|
|
||||||
glPointSize(1.5);
|
|
||||||
glBegin(GL_POINTS);
|
|
||||||
|
|
||||||
if(extverts) {
|
|
||||||
extverts+= 3*start;
|
|
||||||
for(a= start; a<end; a++, extverts+=3) { /* DispList found, Draw displist */
|
|
||||||
glVertex3fv(extverts);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
mvert+= start;
|
|
||||||
for(a= start; a<end; a++, mvert++) { /* else Draw mesh verts directly */
|
|
||||||
glVertex3fv(mvert->co);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
glEnd();
|
|
||||||
glPointSize(1.0);
|
|
||||||
}
|
}
|
||||||
else { /* Draw wire frame */
|
glEnd();
|
||||||
|
glPointSize(1.0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
if(mesh_uses_displist(me)) drawDispListwire(&me->disp); /* Subsurf */
|
||||||
|
else {
|
||||||
|
|
||||||
start= 0; end= me->totface;
|
start= 0; end= me->totface;
|
||||||
set_buildvars(ob, &start, &end);
|
set_buildvars(ob, &start, &end);
|
||||||
@@ -2690,7 +2688,6 @@ static void drawmeshwire(Object *ob)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3677,6 +3674,7 @@ void draw_object(Base *base)
|
|||||||
}
|
}
|
||||||
else drawDispList(ob, dt);
|
else drawDispList(ob, dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (ob!=G.obedit) && ((G.f & (G_BACKBUFSEL+G_PICKSEL)) == 0) ) {
|
if( (ob!=G.obedit) && ((G.f & (G_BACKBUFSEL+G_PICKSEL)) == 0) ) {
|
||||||
paf = give_parteff(ob);
|
paf = give_parteff(ob);
|
||||||
if( paf ) {
|
if( paf ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user