[Bf-committers] editmode center view (patch)

Roel Spruit bf-committers@blender.org
Thu, 24 Jul 2003 22:40:01 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_0009_01C35234.84E716A0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

ok, since nobody ever visits the patch tracker, Ton suggested that I should
post patches here.
I made a small change in the way numpad-period works in editmode. since it
centers the view on the selected object OUTSIDE of editmode,
ztonzy suggested that it should center on selected vertices IN editmode.
anyone want this? or is it silly? do what you want with it :)

Roel



------=_NextPart_000_0009_01C35234.84E716A0
Content-Type: application/octet-stream;
	name="editcenter.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="editcenter.diff"

Index: include/BSE_edit.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: =
/cvsroot/bf-blender/blender/source/blender/include/BSE_edit.h,v
retrieving revision 1.6
diff -r1.6 BSE_edit.h
46a47
> void minmax_verts(float *min, float *max);
Index: src/edit.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvsroot/bf-blender/blender/source/blender/src/edit.c,v
retrieving revision 1.10
diff -r1.10 edit.c
764c764
< 	float gridf, *curs, imat[3][3], bmat[3][3], vec[3];
---
> 	float *curs, imat[3][3], bmat[3][3], vec[3];
929,998d928
< void snap_curs_to_firstsel()
< {
< 	extern TransVert *transvmain;
< 	extern int tottrans;
< 	TransVert *tv;
< 	Base *base;
< 	float *curs, bmat[3][3], vec[3], min[3], max[3], centroid[3];
< 	int count, a;
<=20
< 	curs=3D give_cursor();
<=20
< 	count=3D 0;
< 	INIT_MINMAX(min, max);
< 	centroid[0]=3D centroid[1]=3D centroid[2]=3D 0.0;
<=20
< 		if(G.obedit) {
< 			tottrans=3D0;
< #ifdef __NLA
< 			if ELEM5(G.obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, =
OB_CURVE) make_trans_verts(bmat[0], bmat[1], 0);
< #else
< 			if ELEM4(G.obedit->type, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE) =
make_trans_verts(bmat[0], bmat[1], 0);
< #endif
< 			if(tottrans=3D=3D0) return;
<=20
< 			Mat3CpyMat4(bmat, G.obedit->obmat);
<=20
< 			tv=3D transvmain;
< 			VECCOPY(vec, tv->loc);
< 				/*Mat3MulVecfl(bmat, vec);
< 				VecAddf(vec, vec, G.obedit->obmat[3]);
< 				VecAddf(centroid, centroid, vec);
< 				DO_MINMAX(vec, min, max);*/
<=20
< 			if(G.vd->around=3D=3DV3D_CENTROID) {
< 				VecMulf(vec, 1.0/(float)tottrans);
< 				VECCOPY(curs, vec);
< 			}
< 			else {
< 				curs[0]=3D vec[0];
< 				curs[1]=3D vec[1];
< 				curs[2]=3D vec[2];
< 			}
< 			MEM_freeN(transvmain);
< 			transvmain=3D 0;
< 		}
< 		else {
< 			base=3D (G.scene->base.first);
< 			while(base) {
< 				if(((base)->flag & SELECT) && ((base)->lay & G.vd->lay) ) {
< 					VECCOPY(vec, base->object->obmat[3]);
< 					VecAddf(centroid, centroid, vec);
< 					DO_MINMAX(vec, min, max);
< 					count++;
< 				}
< 				base=3D base->next;
< 			}
< 			if(count) {
< 				if(G.vd->around=3D=3DV3D_CENTROID) {
< 					VecMulf(centroid, 1.0/(float)count);
< 					VECCOPY(curs, centroid);
< 				}
< 				else {
< 					curs[0]=3D (min[0]+max[0])/2;
< 					curs[1]=3D (min[1]+max[1])/2;
< 					curs[2]=3D (min[2]+max[2])/2;
< 				}
< 			}
< 		}
< 		allqueue(REDRAWVIEW3D, 0);
< }
1008c938
< 	float gridf, snaploc[3], imat[3][3], bmat[3][3], vec[3], min[3], =
max[3], centroid[3];
---
> 	float snaploc[3], imat[3][3], bmat[3][3], vec[3], min[3], max[3], =
centroid[3];
1197a1128
>=20
1237a1169,1199
> }
>=20
> void minmax_verts(float *min, float *max)
> {
> 	extern TransVert *transvmain;
> 	extern int tottrans;
> 	TransVert *tv;
> 	float centroid[3], vec[3], bmat[3][3];
> 	int a;
> =09
> 	tottrans=3D0;
> #ifdef __NLA
> 			if ELEM5(G.obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, =
OB_CURVE) make_trans_verts(bmat[0], bmat[1], 0);
> #else
> 			if ELEM4(G.obedit->type, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE) =
make_trans_verts(bmat[0], bmat[1], 0);
> #endif
> 			if(tottrans=3D=3D0) return;
>=20
> 			Mat3CpyMat4(bmat, G.obedit->obmat);
>=20
> 			tv=3D transvmain;
> 			for(a=3D0; a<tottrans; a++, tv++) {
> 				VECCOPY(vec, tv->loc);
> 				Mat3MulVecfl(bmat, vec);
> 				VecAddf(vec, vec, G.obedit->obmat[3]);
> 				VecAddf(centroid, centroid, vec);
> 				DO_MINMAX(vec, min, max);
> 			}
> 		=09
> 			MEM_freeN(transvmain);
> 			transvmain=3D 0;
Index: src/view.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvsroot/bf-blender/blender/source/blender/src/view.c,v
retrieving revision 1.6
diff -r1.6 view.c
916c916
<=20
---
> =09
918c918
< {
---
> {=09
926,928c926,927
< 	if(G.obedit) {
< 		minmax_object(G.obedit, min, max);
< 	=09
---
> 	if(G.obedit) {	=09
> 		minmax_verts(min, max);	=09

------=_NextPart_000_0009_01C35234.84E716A0--