| 
									
										
										
										
											2011-02-23 10:52:22 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  |  * ***** BEGIN GPL LICENSE BLOCK ***** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  |  * as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  |  * of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  * along with this program; if not, write to the Free Software Foundation, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  |  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is: all of this file. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Contributor(s): Martin Poirier | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * ***** END GPL LICENSE BLOCK ***** | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-02-27 20:29:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** \file blender/editors/transform/transform_snap.c
 | 
					
						
							|  |  |  |  *  \ingroup edtransform | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | #include <stdlib.h>
 | 
					
						
							|  |  |  | #include <math.h>
 | 
					
						
							|  |  |  | #include <float.h>
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "PIL_time.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "DNA_scene_types.h"
 | 
					
						
							| 
									
										
										
										
											2010-08-04 04:01:27 +00:00
										 |  |  | #include "DNA_object_types.h"
 | 
					
						
							| 
									
										
										
										
											2012-07-18 23:07:07 +00:00
										 |  |  | #include "DNA_meshdata_types.h"  /* Temporary, for snapping to other unselected meshes */
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | #include "DNA_node_types.h"
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | #include "DNA_space_types.h"
 | 
					
						
							|  |  |  | #include "DNA_screen_types.h"
 | 
					
						
							|  |  |  | #include "DNA_view3d_types.h"
 | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | #include "DNA_windowmanager_types.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | #include "BLI_math.h"
 | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | #include "BLI_blenlib.h"
 | 
					
						
							| 
									
										
										
										
											2011-01-07 18:36:47 +00:00
										 |  |  | #include "BLI_utildefines.h"
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "BIF_gl.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "BKE_DerivedMesh.h"
 | 
					
						
							| 
									
										
										
										
											2013-12-26 17:24:42 +06:00
										 |  |  | #include "BKE_global.h"
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | #include "BKE_object.h"
 | 
					
						
							| 
									
										
										
										
											2012-07-18 23:07:07 +00:00
										 |  |  | #include "BKE_anim.h"  /* for duplis */
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | #include "BKE_context.h"
 | 
					
						
							| 
									
										
										
										
											2013-04-13 20:31:52 +00:00
										 |  |  | #include "BKE_editmesh.h"
 | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | #include "BKE_sequencer.h"
 | 
					
						
							| 
									
										
										
										
											2013-12-26 17:24:42 +06:00
										 |  |  | #include "BKE_main.h"
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-07 02:44:55 +00:00
										 |  |  | #include "RNA_access.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "WM_types.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-28 21:43:43 +00:00
										 |  |  | #include "ED_image.h"
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | #include "ED_node.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-28 21:43:43 +00:00
										 |  |  | #include "ED_uvedit.h"
 | 
					
						
							|  |  |  | #include "ED_view3d.h"
 | 
					
						
							| 
									
										
										
										
											2016-05-06 04:49:21 +10:00
										 |  |  | #include "ED_transform_snap_object_context.h"
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-10 18:33:16 +00:00
										 |  |  | #include "UI_resources.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-28 21:43:43 +00:00
										 |  |  | #include "UI_view2d.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-10 18:33:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | #include "MEM_guardedalloc.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "transform.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-10 18:33:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-03 09:48:21 +00:00
										 |  |  | /* this should be passed as an arg for use in snap functions */ | 
					
						
							|  |  |  | #undef BASACT
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-11 10:17:06 +00:00
										 |  |  | /* use half of flt-max so we can scale up without an exception */ | 
					
						
							| 
									
										
										
										
											2012-10-05 01:34:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | /********************* PROTOTYPES ***********************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void setSnappingCallback(TransInfo *t); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void ApplySnapTranslation(TransInfo *t, float vec[3]); | 
					
						
							|  |  |  | static void ApplySnapRotation(TransInfo *t, float *vec); | 
					
						
							| 
									
										
										
										
											2011-11-19 00:52:54 +00:00
										 |  |  | static void ApplySnapResize(TransInfo *t, float vec[2]); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-19 00:52:54 +00:00
										 |  |  | /* static void CalcSnapGrid(TransInfo *t, float *vec); */ | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void CalcSnapGeometry(TransInfo *t, float *vec); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void TargetSnapMedian(TransInfo *t); | 
					
						
							|  |  |  | static void TargetSnapCenter(TransInfo *t); | 
					
						
							|  |  |  | static void TargetSnapClosest(TransInfo *t); | 
					
						
							|  |  |  | static void TargetSnapActive(TransInfo *t); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 02:53:11 +10:00
										 |  |  | static float RotationBetween(TransInfo *t, const float p1[3], const float p2[3]); | 
					
						
							|  |  |  | static float TranslationBetween(TransInfo *t, const float p1[3], const float p2[3]); | 
					
						
							|  |  |  | static float ResizeBetween(TransInfo *t, const float p1[3], const float p2[3]); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /****************** IMPLEMENTATIONS *********************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 13:43:10 +11:00
										 |  |  | static bool snapNodeTest(View2D *v2d, bNode *node, eSnapSelect snap_select); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | static NodeBorder snapNodeBorder(int snap_node_mode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-07 12:07:26 +00:00
										 |  |  | #if 0
 | 
					
						
							| 
									
										
										
										
											2008-12-31 22:43:29 +00:00
										 |  |  | int BIF_snappingSupported(Object *obedit) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	int status = 0; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2014-07-20 01:30:29 +10:00
										 |  |  | 	/* only support object mesh, armature, curves */ | 
					
						
							|  |  |  | 	if (obedit == NULL || ELEM(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE, OB_LATTICE, OB_MBALL)) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		status = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	return status; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-02-07 12:07:26 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | bool validSnap(TransInfo *t) | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 	return (t->tsnap.status & (POINT_INIT | TARGET_INIT)) == (POINT_INIT | TARGET_INIT) || | 
					
						
							|  |  |  | 	       (t->tsnap.status & (MULTI_POINTS | TARGET_INIT)) == (MULTI_POINTS | TARGET_INIT); | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | bool activeSnap(TransInfo *t) | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-01 12:35:43 +00:00
										 |  |  | 	return ((t->modifiers & (MOD_SNAP | MOD_SNAP_INVERT)) == MOD_SNAP) || | 
					
						
							|  |  |  | 	       ((t->modifiers & (MOD_SNAP | MOD_SNAP_INVERT)) == MOD_SNAP_INVERT); | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-28 20:46:38 +00:00
										 |  |  | void drawSnapping(const struct bContext *C, TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	unsigned char col[4], selectedCol[4], activeCol[4]; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (!activeSnap(t)) | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	UI_GetThemeColor3ubv(TH_TRANSFORM, col); | 
					
						
							|  |  |  | 	col[3] = 128; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	UI_GetThemeColor3ubv(TH_SELECT, selectedCol); | 
					
						
							|  |  |  | 	selectedCol[3] = 128; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	UI_GetThemeColor3ubv(TH_ACTIVE, activeCol); | 
					
						
							|  |  |  | 	activeCol[3] = 192; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (t->spacetype == SPACE_VIEW3D) { | 
					
						
							|  |  |  | 		if (validSnap(t)) { | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 			TransSnapPoint *p; | 
					
						
							| 
									
										
										
										
											2009-03-28 20:46:38 +00:00
										 |  |  | 			View3D *v3d = CTX_wm_view3d(C); | 
					
						
							|  |  |  | 			RegionView3D *rv3d = CTX_wm_region_view3d(C); | 
					
						
							| 
									
										
										
										
											2010-09-28 10:03:56 +00:00
										 |  |  | 			float imat[4][4]; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			float size; | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			glDisable(GL_DEPTH_TEST); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2010-11-05 05:26:34 +00:00
										 |  |  | 			size = 2.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2010-09-28 10:03:56 +00:00
										 |  |  | 			invert_m4_m4(imat, rv3d->viewmat); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 			for (p = t->tsnap.points.first; p; p = p->next) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				if (p == t->tsnap.selectedPoint) { | 
					
						
							|  |  |  | 					glColor4ubv(selectedCol); | 
					
						
							| 
									
										
										
										
											2012-03-24 06:38:07 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 				else { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 					glColor4ubv(col); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 				 | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				drawcircball(GL_LINE_LOOP, p->co, ED_view3d_pixel_size(rv3d, p->co) * size * 0.75f, imat); | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 			if (t->tsnap.status & POINT_INIT) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				glColor4ubv(activeCol); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 				 | 
					
						
							| 
									
										
										
										
											2011-05-21 08:56:37 +00:00
										 |  |  | 				drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, ED_view3d_pixel_size(rv3d, t->tsnap.snapPoint) * size, imat); | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			/* draw normal if needed */ | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (usingSnappingNormal(t) && validSnappingNormal(t)) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				glColor4ubv(activeCol); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 				 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				glBegin(GL_LINES); | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 				glVertex3f(t->tsnap.snapPoint[0], t->tsnap.snapPoint[1], t->tsnap.snapPoint[2]); | 
					
						
							|  |  |  | 				glVertex3f(t->tsnap.snapPoint[0] + t->tsnap.snapNormal[0], | 
					
						
							|  |  |  | 				           t->tsnap.snapPoint[1] + t->tsnap.snapNormal[1], | 
					
						
							|  |  |  | 				           t->tsnap.snapPoint[2] + t->tsnap.snapNormal[2]); | 
					
						
							|  |  |  | 				glEnd(); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-03-24 06:38:07 +00:00
										 |  |  | 			if (v3d->zbuf) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				glEnable(GL_DEPTH_TEST); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	else if (t->spacetype == SPACE_IMAGE) { | 
					
						
							|  |  |  | 		if (validSnap(t)) { | 
					
						
							| 
									
										
										
										
											2012-03-03 16:31:46 +00:00
										 |  |  | 			/* This will not draw, and Im nor sure why - campbell */ | 
					
						
							|  |  |  | #if 0
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			float xuser_asp, yuser_asp; | 
					
						
							|  |  |  | 			int wi, hi; | 
					
						
							|  |  |  | 			float w, h; | 
					
						
							|  |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			calc_image_view(G.sima, 'f');   // float
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax); | 
					
						
							|  |  |  | 			glLoadIdentity(); | 
					
						
							|  |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-07-25 16:30:53 +00:00
										 |  |  | 			ED_space_image_get_aspect(t->sa->spacedata.first, &xuser_aspx, &yuser_asp); | 
					
						
							| 
									
										
										
										
											2009-01-28 21:43:43 +00:00
										 |  |  | 			ED_space_image_width(t->sa->spacedata.first, &wi, &hi); | 
					
						
							| 
									
										
										
										
											2012-07-25 19:36:59 +00:00
										 |  |  | 			w = (((float)wi) / IMG_SIZE_FALLBACK) * G.sima->zoom * xuser_asp; | 
					
						
							|  |  |  | 			h = (((float)hi) / IMG_SIZE_FALLBACK) * G.sima->zoom * yuser_asp; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			cpack(0xFFFFFF); | 
					
						
							| 
									
										
										
										
											2015-09-20 18:11:25 +02:00
										 |  |  | 			glTranslate2fv(t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-04-29 15:47:02 +00:00
										 |  |  | 			//glRectf(0, 0, 1, 1);
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			setlinestyle(0); | 
					
						
							|  |  |  | 			cpack(0x0); | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			fdrawline(-0.020 / w, 0, -0.1 / w, 0); | 
					
						
							| 
									
										
										
										
											2012-06-17 09:58:26 +00:00
										 |  |  | 			fdrawline(0.1 / w, 0, 0.020 / w, 0); | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			fdrawline(0, -0.020 / h, 0, -0.1 / h); | 
					
						
							|  |  |  | 			fdrawline(0, 0.1 / h, 0, 0.020 / h); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			glTranslatef(-t->tsnap.snapPoint[0], -t->tsnap.snapPoint[1], 0.0f); | 
					
						
							|  |  |  | 			setlinestyle(0); | 
					
						
							| 
									
										
										
										
											2012-03-03 16:31:46 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else if (t->spacetype == SPACE_NODE) { | 
					
						
							|  |  |  | 		if (validSnap(t)) { | 
					
						
							|  |  |  | 			ARegion *ar = CTX_wm_region(C); | 
					
						
							|  |  |  | 			TransSnapPoint *p; | 
					
						
							|  |  |  | 			float size; | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			size = 2.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			glEnable(GL_BLEND); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			for (p = t->tsnap.points.first; p; p = p->next) { | 
					
						
							|  |  |  | 				if (p == t->tsnap.selectedPoint) { | 
					
						
							|  |  |  | 					glColor4ubv(selectedCol); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				else { | 
					
						
							|  |  |  | 					glColor4ubv(col); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				 | 
					
						
							| 
									
										
										
										
											2012-08-01 13:28:19 +00:00
										 |  |  | 				ED_node_draw_snap(&ar->v2d, p->co, size, 0); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			if (t->tsnap.status & POINT_INIT) { | 
					
						
							|  |  |  | 				glColor4ubv(activeCol); | 
					
						
							|  |  |  | 				 | 
					
						
							| 
									
										
										
										
											2012-08-01 13:28:19 +00:00
										 |  |  | 				ED_node_draw_snap(&ar->v2d, t->tsnap.snapPoint, size, t->tsnap.snapNodeBorder); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			glDisable(GL_BLEND); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | eRedrawFlag handleSnapping(TransInfo *t, const wmEvent *event) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | 	eRedrawFlag status = TREDRAW_NOTHING; | 
					
						
							| 
									
										
										
										
											2009-11-26 19:47:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #if 0 // XXX need a proper selector for all snap mode
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		/* toggle snap and reinit */ | 
					
						
							| 
									
										
										
										
											2009-06-23 00:41:55 +00:00
										 |  |  | 		t->settings->snap_flag ^= SCE_SNAP; | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 		initSnapping(t, NULL); | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | 		status = TREDRAW_HARD; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-11-26 19:47:55 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (event->type == MOUSEMOVE) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 		status |= updateSelectedSnapPoint(t); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	return status; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | void applyProject(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* XXX FLICKER IN OBJECT MODE */ | 
					
						
							| 
									
										
										
										
											2013-12-19 04:54:11 +11:00
										 |  |  | 	if ((t->tsnap.project) && activeSnap(t) && (t->flag & T_NO_PROJECT) == 0) { | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 		TransData *td = t->data; | 
					
						
							|  |  |  | 		float tvec[3]; | 
					
						
							|  |  |  | 		float imat[4][4]; | 
					
						
							|  |  |  | 		int i; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 			Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 			invert_m4_m4(imat, ob->obmat); | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		for (i = 0; i < t->total; i++, td++) { | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			float iloc[3], loc[3], no[3]; | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			float mval_fl[2]; | 
					
						
							|  |  |  | 			float dist_px = TRANSFORM_DIST_MAX_PX; | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			if (td->flag & TD_NOACTION) | 
					
						
							|  |  |  | 				break; | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			if (td->flag & TD_SKIP) | 
					
						
							|  |  |  | 				continue; | 
					
						
							| 
									
										
										
										
											2013-02-19 16:57:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			if ((t->flag & T_PROP_EDIT) && (td->factor == 0.0f)) | 
					
						
							|  |  |  | 				continue; | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 			copy_v3_v3(iloc, td->loc); | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 				Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 				mul_m4_v3(ob->obmat, iloc); | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2012-03-07 04:53:43 +00:00
										 |  |  | 			else if (t->flag & T_OBJECT) { | 
					
						
							| 
									
										
										
										
											2017-11-29 15:29:39 +01:00
										 |  |  | 				BKE_object_eval_transform_all(G.main->eval_ctx, t->scene, td->ob); | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 				copy_v3_v3(iloc, td->ob->obmat[3]); | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			if (ED_view3d_project_float_global(t->ar, iloc, mval_fl, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) { | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 				if (snapObjectsTransform( | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 				        t, mval_fl, &dist_px, | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 				        loc, no)) | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 				{ | 
					
						
							| 
									
										
										
										
											2012-10-05 03:20:14 +00:00
										 |  |  | //					if (t->flag & (T_EDIT|T_POSE)) {
 | 
					
						
							|  |  |  | //						mul_m4_v3(imat, loc);
 | 
					
						
							|  |  |  | //					}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					sub_v3_v3v3(tvec, loc, iloc); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					mul_m3_v3(td->smtx, tvec); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-20 00:44:18 +00:00
										 |  |  | 					add_v3_v3(td->loc, tvec); | 
					
						
							| 
									
										
										
										
											2014-07-31 17:02:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-08 19:35:09 +02:00
										 |  |  | 					if (t->tsnap.align && (t->flag & T_OBJECT)) { | 
					
						
							| 
									
										
										
										
											2014-07-31 17:02:03 +02:00
										 |  |  | 						/* handle alignment as well */ | 
					
						
							|  |  |  | 						const float *original_normal; | 
					
						
							|  |  |  | 						float mat[3][3]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 						/* In pose mode, we want to align normals with Y axis of bones... */ | 
					
						
							|  |  |  | 						original_normal = td->axismtx[2]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-30 12:54:05 +01:00
										 |  |  | 						rotation_between_vecs_to_mat3(mat, original_normal, no); | 
					
						
							| 
									
										
										
										
											2014-07-31 17:02:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-14 04:27:32 +10:00
										 |  |  | 						transform_data_ext_rotate(td, mat, true); | 
					
						
							| 
									
										
										
										
											2014-07-31 17:02:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 						/* TODO support constraints for rotation too? see ElementRotation */ | 
					
						
							|  |  |  | 					} | 
					
						
							| 
									
										
										
										
											2012-10-05 03:20:14 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			//XXX constraintTransLim(t, td);
 | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | void applyGridAbsolute(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	float grid_size = 0.0f; | 
					
						
							|  |  |  | 	GearsType grid_action; | 
					
						
							|  |  |  | 	TransData *td; | 
					
						
							| 
									
										
										
										
											2015-06-30 18:26:37 +10:00
										 |  |  | 	float (*obmat)[4] = NULL; | 
					
						
							|  |  |  | 	bool use_obmat = false; | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	int i; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2015-06-30 18:57:17 +10:00
										 |  |  | 	if (!(activeSnap(t) && (ELEM(t->tsnap.mode, SCE_SNAP_MODE_INCREMENT, SCE_SNAP_MODE_GRID)))) | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 		return; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	grid_action = BIG_GEARS; | 
					
						
							|  |  |  | 	if (t->modifiers & MOD_PRECISION) | 
					
						
							|  |  |  | 		grid_action = SMALL_GEARS; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	switch (grid_action) { | 
					
						
							| 
									
										
										
										
											2015-06-30 18:57:17 +10:00
										 |  |  | 		case NO_GEARS: grid_size = t->snap_spatial[0]; break; | 
					
						
							|  |  |  | 		case BIG_GEARS: grid_size = t->snap_spatial[1]; break; | 
					
						
							|  |  |  | 		case SMALL_GEARS: grid_size = t->snap_spatial[2]; break; | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	/* early exit on unusable grid size */ | 
					
						
							|  |  |  | 	if (grid_size == 0.0f) | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 		Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2015-06-30 18:26:37 +10:00
										 |  |  | 		obmat = ob->obmat; | 
					
						
							|  |  |  | 		use_obmat = true; | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	for (i = 0, td = t->data; i < t->total; i++, td++) { | 
					
						
							|  |  |  | 		float iloc[3], loc[3], tvec[3]; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if (td->flag & TD_NOACTION) | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if (td->flag & TD_SKIP) | 
					
						
							|  |  |  | 			continue; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if ((t->flag & T_PROP_EDIT) && (td->factor == 0.0f)) | 
					
						
							|  |  |  | 			continue; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		copy_v3_v3(iloc, td->loc); | 
					
						
							| 
									
										
										
										
											2015-06-30 18:26:37 +10:00
										 |  |  | 		if (use_obmat) { | 
					
						
							|  |  |  | 			mul_m4_v3(obmat, iloc); | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		else if (t->flag & T_OBJECT) { | 
					
						
							| 
									
										
										
										
											2017-11-29 15:29:39 +01:00
										 |  |  | 			BKE_object_eval_transform_all(G.main->eval_ctx, t->scene, td->ob); | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 			copy_v3_v3(iloc, td->ob->obmat[3]); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2013-11-17 22:00:57 +11:00
										 |  |  | 		mul_v3_v3fl(loc, iloc, 1.0f / grid_size); | 
					
						
							| 
									
										
										
										
											2015-06-30 18:26:37 +10:00
										 |  |  | 		loc[0] = roundf(loc[0]); | 
					
						
							|  |  |  | 		loc[1] = roundf(loc[1]); | 
					
						
							|  |  |  | 		loc[2] = roundf(loc[2]); | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 		mul_v3_fl(loc, grid_size); | 
					
						
							| 
									
										
										
										
											2015-06-30 18:26:37 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 		sub_v3_v3v3(tvec, loc, iloc); | 
					
						
							|  |  |  | 		mul_m3_v3(td->smtx, tvec); | 
					
						
							|  |  |  | 		add_v3_v3(td->loc, tvec); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | void applySnapping(TransInfo *t, float *vec) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 	/* project is not applied this way */ | 
					
						
							|  |  |  | 	if (t->tsnap.project) | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (t->tsnap.status & SNAP_FORCED) { | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 		t->tsnap.targetSnap(t); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 		t->tsnap.applySnap(t, vec); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 	else if (!ELEM(t->tsnap.mode, SCE_SNAP_MODE_INCREMENT, SCE_SNAP_MODE_GRID) && activeSnap(t)) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		double current = PIL_check_seconds_timer(); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		// Time base quirky code to go around findnearest slowness
 | 
					
						
							|  |  |  | 		/* !TODO! add exception for object mode, no need to slow it down then */ | 
					
						
							| 
									
										
										
										
											2012-05-20 19:49:27 +00:00
										 |  |  | 		if (current - t->tsnap.last >= 0.01) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			t->tsnap.calcSnap(t, vec); | 
					
						
							|  |  |  | 			t->tsnap.targetSnap(t); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 			t->tsnap.last = current; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 		if (validSnap(t)) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			t->tsnap.applySnap(t, vec); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void resetSnapping(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	t->tsnap.status = 0; | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | 	t->tsnap.align = false; | 
					
						
							| 
									
										
										
										
											2009-12-10 22:07:33 +00:00
										 |  |  | 	t->tsnap.project = 0; | 
					
						
							| 
									
										
										
										
											2009-11-26 19:47:55 +00:00
										 |  |  | 	t->tsnap.mode = 0; | 
					
						
							|  |  |  | 	t->tsnap.modeSelect = 0; | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 	t->tsnap.target = 0; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	t->tsnap.last = 0; | 
					
						
							|  |  |  | 	t->tsnap.applySnap = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	t->tsnap.snapNormal[0] = 0; | 
					
						
							|  |  |  | 	t->tsnap.snapNormal[1] = 0; | 
					
						
							|  |  |  | 	t->tsnap.snapNormal[2] = 0; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	t->tsnap.snapNodeBorder = 0; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | bool usingSnappingNormal(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 	return t->tsnap.align; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | bool validSnappingNormal(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (validSnap(t)) { | 
					
						
							| 
									
										
										
										
											2014-03-29 22:23:27 +11:00
										 |  |  | 		if (!is_zero_v3(t->tsnap.snapNormal)) { | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | 			return true; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2013-04-04 09:20:46 +00:00
										 |  |  | 	return false; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-06 07:44:07 +10:00
										 |  |  | static bool bm_edge_is_snap_target(BMEdge *e, void *UNUSED(user_data)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (BM_elem_flag_test(e, BM_ELEM_SELECT | BM_ELEM_HIDDEN) || | 
					
						
							|  |  |  | 	    BM_elem_flag_test(e->v1, BM_ELEM_SELECT) || | 
					
						
							|  |  |  | 	    BM_elem_flag_test(e->v2, BM_ELEM_SELECT)) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static bool bm_face_is_snap_target(BMFace *f, void *UNUSED(user_data)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (BM_elem_flag_test(f, BM_ELEM_SELECT | BM_ELEM_HIDDEN)) { | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	BMLoop *l_iter, *l_first; | 
					
						
							|  |  |  | 	l_iter = l_first = BM_FACE_FIRST_LOOP(f); | 
					
						
							|  |  |  | 	do { | 
					
						
							|  |  |  | 		if (BM_elem_flag_test(l_iter->v, BM_ELEM_SELECT)) { | 
					
						
							|  |  |  | 			return false; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} while ((l_iter = l_iter->next) != l_first); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-14 17:55:27 +00:00
										 |  |  | static void initSnappingMode(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-06-23 00:41:55 +00:00
										 |  |  | 	ToolSettings *ts = t->settings; | 
					
						
							| 
									
										
										
										
											2009-01-03 17:21:32 +00:00
										 |  |  | 	Object *obedit = t->obedit; | 
					
						
							| 
									
										
										
										
											2009-11-01 00:06:53 +00:00
										 |  |  | 	Scene *scene = t->scene; | 
					
						
							| 
									
										
										
										
											2013-04-03 09:48:21 +00:00
										 |  |  | 	Base *base_act = scene->basact; | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	if (t->spacetype == SPACE_NODE) { | 
					
						
							|  |  |  | 		/* force project off when not supported */ | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 		t->tsnap.project = 0; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		t->tsnap.mode = ts->snap_node_mode; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-12-03 12:03:16 +00:00
										 |  |  | 	else if (t->spacetype == SPACE_IMAGE) { | 
					
						
							|  |  |  | 		/* force project off when not supported */ | 
					
						
							|  |  |  | 		t->tsnap.project = 0; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		t->tsnap.mode = ts->snap_uv_mode; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	else { | 
					
						
							|  |  |  | 		/* force project off when not supported */ | 
					
						
							| 
									
										
										
										
											2012-12-03 12:03:16 +00:00
										 |  |  | 		if (ts->snap_mode != SCE_SNAP_MODE_FACE) | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			t->tsnap.project = 0; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		t->tsnap.mode = ts->snap_mode; | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-24 16:35:45 +00:00
										 |  |  | 	if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) &&  /* Only 3D view or UV */ | 
					
						
							|  |  |  | 	    (t->flag & T_CAMERA) == 0)  /* Not with camera selected in camera view */ | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 		setSnappingCallback(t); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		/* Edit mode */ | 
					
						
							|  |  |  | 		if (t->tsnap.applySnap != NULL && // A snapping function actually exist
 | 
					
						
							| 
									
										
										
										
											2014-07-20 01:30:29 +10:00
										 |  |  | 		    (obedit != NULL && ELEM(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE, OB_LATTICE, OB_MBALL)) ) // Temporary limited to edit mode meshes, armature, curves, mballs
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2011-06-21 15:28:13 +00:00
										 |  |  | 			/* Exclude editmesh if using proportional edit */ | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 			if ((obedit->type == OB_MESH) && (t->flag & T_PROP_EDIT)) { | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 				t->tsnap.modeSelect = SNAP_NOT_ACTIVE; | 
					
						
							| 
									
										
										
										
											2009-01-03 17:21:32 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 			else { | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 				t->tsnap.modeSelect = t->tsnap.snap_self ? SNAP_ALL : SNAP_NOT_ACTIVE; | 
					
						
							| 
									
										
										
										
											2009-01-03 17:21:32 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-11-01 00:06:53 +00:00
										 |  |  | 		/* Particles edit mode*/ | 
					
						
							|  |  |  | 		else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
 | 
					
						
							| 
									
										
										
										
											2013-04-03 09:48:21 +00:00
										 |  |  | 		         (obedit == NULL && base_act && base_act->object && base_act->object->mode & OB_MODE_PARTICLE_EDIT)) | 
					
						
							| 
									
										
										
										
											2009-11-01 00:06:53 +00:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 			t->tsnap.modeSelect = SNAP_ALL; | 
					
						
							| 
									
										
										
										
											2009-11-01 00:06:53 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		/* Object mode */ | 
					
						
							|  |  |  | 		else if (t->tsnap.applySnap != NULL && // A snapping function actually exist
 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		         (obedit == NULL) ) // Object Mode
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-01-30 18:30:19 -03:00
										 |  |  | 			/* In "Edit Strokes" mode, Snap tool can perform snap to selected or active objects (see T49632)
 | 
					
						
							|  |  |  | 			 * TODO: perform self snap in gpencil_strokes */ | 
					
						
							|  |  |  | 			t->tsnap.modeSelect = ((t->options & CTX_GPENCIL_STROKES) != 0) ? SNAP_ALL : SNAP_NOT_SELECTED; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			/* Grid if snap is not possible */ | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 			t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-07-04 20:47:12 +00:00
										 |  |  | 	else if (t->spacetype == SPACE_NODE) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		setSnappingCallback(t); | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-07-04 20:47:12 +00:00
										 |  |  | 		if (t->tsnap.applySnap != NULL) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			t->tsnap.modeSelect = SNAP_NOT_SELECTED; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			/* Grid if snap is not possible */ | 
					
						
							|  |  |  | 			t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-19 20:47:38 +01:00
										 |  |  | 	else if (t->spacetype == SPACE_SEQ) { | 
					
						
							|  |  |  | 		/* We do our own snapping currently, so nothing here */ | 
					
						
							|  |  |  | 		t->tsnap.mode = SCE_SNAP_MODE_GRID;  /* Dummy, should we rather add a NOP mode? */ | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 	else { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		/* Always grid outside of 3D view */ | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 		t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 15:21:53 +10:00
										 |  |  | 	if (t->spacetype == SPACE_VIEW3D) { | 
					
						
							|  |  |  | 		if (t->tsnap.object_context == NULL) { | 
					
						
							|  |  |  | 			t->tsnap.object_context = ED_transform_snap_object_context_create_view3d( | 
					
						
							| 
									
										
										
										
											2017-02-03 19:03:31 -03:00
										 |  |  | 			        G.main, t->scene, 0, | 
					
						
							| 
									
										
										
										
											2016-06-19 06:25:54 +10:00
										 |  |  | 			        t->ar, t->view); | 
					
						
							| 
									
										
										
										
											2016-05-09 15:21:53 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			ED_transform_snap_object_context_set_editmesh_callbacks( | 
					
						
							| 
									
										
										
										
											2016-06-19 06:25:54 +10:00
										 |  |  | 			        t->tsnap.object_context, | 
					
						
							|  |  |  | 			        (bool (*)(BMVert *, void *))BM_elem_cb_check_hflag_disabled, | 
					
						
							|  |  |  | 			        bm_edge_is_snap_target, | 
					
						
							|  |  |  | 			        bm_face_is_snap_target, | 
					
						
							|  |  |  | 			        SET_UINT_IN_POINTER((BM_ELEM_SELECT | BM_ELEM_HIDDEN))); | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void initSnapping(TransInfo *t, wmOperator *op) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	ToolSettings *ts = t->settings; | 
					
						
							| 
									
										
										
										
											2009-11-26 19:47:55 +00:00
										 |  |  | 	short snap_target = t->settings->snap_target; | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	resetSnapping(t); | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 	/* if snap property exists */ | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_struct_property_is_set(op->ptr, "snap")) { | 
					
						
							|  |  |  | 		if (RNA_boolean_get(op->ptr, "snap")) { | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 			t->modifiers |= MOD_SNAP; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (RNA_struct_property_is_set(op->ptr, "snap_target")) { | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 				snap_target = RNA_enum_get(op->ptr, "snap_target"); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (RNA_struct_property_is_set(op->ptr, "snap_point")) { | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 				RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 				t->tsnap.status |= SNAP_FORCED | POINT_INIT; | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			/* snap align only defined in specific cases */ | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (RNA_struct_find_property(op->ptr, "snap_align")) { | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 				t->tsnap.align = RNA_boolean_get(op->ptr, "snap_align"); | 
					
						
							|  |  |  | 				RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal); | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 				normalize_v3(t->tsnap.snapNormal); | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-10-12 22:33:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (RNA_struct_find_property(op->ptr, "use_snap_project")) { | 
					
						
							| 
									
										
										
										
											2010-08-18 03:24:52 +00:00
										 |  |  | 				t->tsnap.project = RNA_boolean_get(op->ptr, "use_snap_project"); | 
					
						
							| 
									
										
										
										
											2009-10-12 22:33:32 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2011-06-17 13:02:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 			if (RNA_struct_find_property(op->ptr, "use_snap_self")) { | 
					
						
							| 
									
										
										
										
											2011-07-27 07:22:31 +00:00
										 |  |  | 				t->tsnap.snap_self = RNA_boolean_get(op->ptr, "use_snap_self"); | 
					
						
							| 
									
										
										
										
											2011-06-17 13:02:23 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-03-29 19:52:53 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 	/* use scene defaults only when transform is modal */ | 
					
						
							| 
									
										
										
										
											2012-03-07 04:53:43 +00:00
										 |  |  | 	else if (t->flag & T_MODAL) { | 
					
						
							| 
									
										
										
										
											2014-07-20 01:30:29 +10:00
										 |  |  | 		if (ELEM(t->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_NODE)) { | 
					
						
							| 
									
										
										
										
											2011-07-28 02:15:58 +00:00
										 |  |  | 			if (ts->snap_flag & SCE_SNAP) { | 
					
						
							|  |  |  | 				t->modifiers |= MOD_SNAP; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-11-27 16:15:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 02:53:11 +10:00
										 |  |  | 			t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) != 0); | 
					
						
							|  |  |  | 			t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) != 0); | 
					
						
							|  |  |  | 			t->tsnap.snap_self = !((t->settings->snap_flag & SCE_SNAP_NO_SELF) != 0); | 
					
						
							|  |  |  | 			t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) != 0); | 
					
						
							| 
									
										
										
										
											2011-07-28 02:15:58 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-06-30 18:57:17 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		/* for now only 3d view (others can be added if we want) */ | 
					
						
							|  |  |  | 		if (t->spacetype == SPACE_VIEW3D) { | 
					
						
							|  |  |  | 			t->tsnap.snap_spatial_grid = ((t->settings->snap_flag & SCE_SNAP_ABS_GRID) != 0); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-10-12 22:33:32 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 	t->tsnap.target = snap_target; | 
					
						
							| 
									
										
										
										
											2009-11-26 19:47:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 	initSnappingMode(t); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | void freeSnapping(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (t->tsnap.object_context) { | 
					
						
							|  |  |  | 		ED_transform_snap_object_context_destroy(t->tsnap.object_context); | 
					
						
							|  |  |  | 		t->tsnap.object_context = NULL; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void setSnappingCallback(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	t->tsnap.calcSnap = CalcSnapGeometry; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	switch (t->tsnap.target) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		case SCE_SNAP_TARGET_CLOSEST: | 
					
						
							|  |  |  | 			t->tsnap.targetSnap = TargetSnapClosest; | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case SCE_SNAP_TARGET_CENTER: | 
					
						
							|  |  |  | 			t->tsnap.targetSnap = TargetSnapCenter; | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case SCE_SNAP_TARGET_MEDIAN: | 
					
						
							|  |  |  | 			t->tsnap.targetSnap = TargetSnapMedian; | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case SCE_SNAP_TARGET_ACTIVE: | 
					
						
							|  |  |  | 			t->tsnap.targetSnap = TargetSnapActive; | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	switch (t->mode) { | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		case TFM_TRANSLATION: | 
					
						
							|  |  |  | 			t->tsnap.applySnap = ApplySnapTranslation; | 
					
						
							|  |  |  | 			t->tsnap.distance = TranslationBetween; | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case TFM_ROTATION: | 
					
						
							|  |  |  | 			t->tsnap.applySnap = ApplySnapRotation; | 
					
						
							|  |  |  | 			t->tsnap.distance = RotationBetween; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// Can't do TARGET_CENTER with rotation, use TARGET_MEDIAN instead
 | 
					
						
							|  |  |  | 			if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) { | 
					
						
							|  |  |  | 				t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; | 
					
						
							|  |  |  | 				t->tsnap.targetSnap = TargetSnapMedian; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case TFM_RESIZE: | 
					
						
							|  |  |  | 			t->tsnap.applySnap = ApplySnapResize; | 
					
						
							|  |  |  | 			t->tsnap.distance = ResizeBetween; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// Can't do TARGET_CENTER with resize, use TARGET_MEDIAN instead
 | 
					
						
							|  |  |  | 			if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) { | 
					
						
							|  |  |  | 				t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; | 
					
						
							|  |  |  | 				t->tsnap.targetSnap = TargetSnapMedian; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		default: | 
					
						
							|  |  |  | 			t->tsnap.applySnap = NULL; | 
					
						
							|  |  |  | 			break; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | void addSnapPoint(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2014-07-28 17:10:33 +06:00
										 |  |  | 	/* Currently only 3D viewport works for snapping points. */ | 
					
						
							|  |  |  | 	if (t->tsnap.status & POINT_INIT && t->spacetype == SPACE_VIEW3D) { | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 		TransSnapPoint *p = MEM_callocN(sizeof(TransSnapPoint), "SnapPoint"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 		t->tsnap.selectedPoint = p; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 		copy_v3_v3(p->co, t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		BLI_addtail(&t->tsnap.points, p); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		t->tsnap.status |= MULTI_POINTS; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | eRedrawFlag updateSelectedSnapPoint(TransInfo *t) | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | 	eRedrawFlag status = TREDRAW_NOTHING; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 	if (t->tsnap.status & MULTI_POINTS) { | 
					
						
							|  |  |  | 		TransSnapPoint *p, *closest_p = NULL; | 
					
						
							| 
									
										
										
										
											2014-02-03 02:46:45 +11:00
										 |  |  | 		float dist_min_sq = TRANSFORM_SNAP_MAX_PX; | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		const float mval_fl[2] = {t->mval[0], t->mval[1]}; | 
					
						
							|  |  |  | 		float screen_loc[2]; | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		for (p = t->tsnap.points.first; p; p = p->next) { | 
					
						
							| 
									
										
										
										
											2014-02-03 02:46:45 +11:00
										 |  |  | 			float dist_sq; | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			if (ED_view3d_project_float_global(t->ar, p->co, screen_loc, V3D_PROJ_TEST_NOP) != V3D_PROJ_RET_OK) { | 
					
						
							| 
									
										
										
										
											2012-10-04 17:52:12 +00:00
										 |  |  | 				continue; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-03 02:46:45 +11:00
										 |  |  | 			dist_sq = len_squared_v2v2(mval_fl, screen_loc); | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-03 02:46:45 +11:00
										 |  |  | 			if (dist_sq < dist_min_sq) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				closest_p = p; | 
					
						
							| 
									
										
										
										
											2014-02-03 02:46:45 +11:00
										 |  |  | 				dist_min_sq = dist_sq; | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (closest_p) { | 
					
						
							| 
									
										
										
										
											2013-10-23 06:48:36 +00:00
										 |  |  | 			if (t->tsnap.selectedPoint != closest_p) { | 
					
						
							|  |  |  | 				status = TREDRAW_HARD; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 			t->tsnap.selectedPoint = closest_p; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return status; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | void removeSnapPoint(TransInfo *t) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (t->tsnap.status & MULTI_POINTS) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 		updateSelectedSnapPoint(t); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (t->tsnap.selectedPoint) { | 
					
						
							|  |  |  | 			BLI_freelinkN(&t->tsnap.points, t->tsnap.selectedPoint); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-08 06:07:10 +11:00
										 |  |  | 			if (BLI_listbase_is_empty(&t->tsnap.points)) { | 
					
						
							| 
									
										
										
										
											2011-12-26 20:23:07 +00:00
										 |  |  | 				t->tsnap.status &= ~MULTI_POINTS; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			t->tsnap.selectedPoint = NULL; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void getSnapPoint(TransInfo *t, float vec[3]) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (t->tsnap.points.first) { | 
					
						
							|  |  |  | 		TransSnapPoint *p; | 
					
						
							|  |  |  | 		int total = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		vec[0] = vec[1] = vec[2] = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		for (p = t->tsnap.points.first; p; p = p->next, total++) { | 
					
						
							|  |  |  | 			add_v3_v3(vec, p->co); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (t->tsnap.status & POINT_INIT) { | 
					
						
							|  |  |  | 			add_v3_v3(vec, t->tsnap.snapPoint); | 
					
						
							|  |  |  | 			total++; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		mul_v3_fl(vec, 1.0f / total); | 
					
						
							| 
									
										
										
										
											2012-03-24 06:38:07 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 		copy_v3_v3(vec, t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | /********************** APPLY **************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void ApplySnapTranslation(TransInfo *t, float vec[3]) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-12-01 18:26:18 +00:00
										 |  |  | 	float point[3]; | 
					
						
							|  |  |  | 	getSnapPoint(t, point); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (t->spacetype == SPACE_NODE) { | 
					
						
							|  |  |  | 		char border = t->tsnap.snapNodeBorder; | 
					
						
							|  |  |  | 		if (border & (NODE_LEFT | NODE_RIGHT)) | 
					
						
							|  |  |  | 			vec[0] = point[0] - t->tsnap.snapTarget[0]; | 
					
						
							|  |  |  | 		if (border & (NODE_BOTTOM | NODE_TOP)) | 
					
						
							|  |  |  | 			vec[1] = point[1] - t->tsnap.snapTarget[1]; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							| 
									
										
										
										
											2016-06-21 16:17:05 +10:00
										 |  |  | 		if (t->spacetype == SPACE_VIEW3D) { | 
					
						
							|  |  |  | 			if (t->options & CTX_PAINT_CURVE) { | 
					
						
							|  |  |  | 				if (ED_view3d_project_float_global(t->ar, point, point, V3D_PROJ_TEST_NOP) != V3D_PROJ_RET_OK) { | 
					
						
							|  |  |  | 					zero_v3(point);  /* no good answer here... */ | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		sub_v3_v3v3(vec, point, t->tsnap.snapTarget); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 14:05:00 +00:00
										 |  |  | static void ApplySnapRotation(TransInfo *t, float *value) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-01-18 12:03:43 +11:00
										 |  |  | 	float point[3]; | 
					
						
							|  |  |  | 	getSnapPoint(t, point); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	float dist = RotationBetween(t, t->tsnap.snapTarget, point); | 
					
						
							|  |  |  | 	*value = dist; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void ApplySnapResize(TransInfo *t, float vec[3]) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-01-18 12:03:43 +11:00
										 |  |  | 	float point[3]; | 
					
						
							|  |  |  | 	getSnapPoint(t, point); | 
					
						
							| 
									
										
										
										
											2015-08-26 20:27:04 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-18 12:03:43 +11:00
										 |  |  | 	float dist = ResizeBetween(t, t->tsnap.snapTarget, point); | 
					
						
							| 
									
										
										
										
											2015-08-26 22:23:41 +10:00
										 |  |  | 	copy_v3_fl(vec, dist); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************** DISTANCE **************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 02:53:11 +10:00
										 |  |  | static float TranslationBetween(TransInfo *UNUSED(t), const float p1[3], const float p2[3]) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 	return len_squared_v3v3(p1, p2); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 02:53:11 +10:00
										 |  |  | static float RotationBetween(TransInfo *t, const float p1[3], const float p2[3]) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-06-26 16:19:39 +10:00
										 |  |  | 	float angle, start[3], end[3]; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-26 16:19:39 +10:00
										 |  |  | 	sub_v3_v3v3(start, p1, t->center_global); | 
					
						
							|  |  |  | 	sub_v3_v3v3(end,   p2, t->center_global); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							|  |  |  | 	// Angle around a constraint axis (error prone, will need debug)
 | 
					
						
							|  |  |  | 	if (t->con.applyRot != NULL && (t->con.mode & CON_APPLY)) { | 
					
						
							|  |  |  | 		float axis[3], tmp[3]; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		t->con.applyRot(t, NULL, axis, NULL); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		project_v3_v3v3(tmp, end, axis); | 
					
						
							|  |  |  | 		sub_v3_v3v3(end, end, tmp); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		project_v3_v3v3(tmp, start, axis); | 
					
						
							|  |  |  | 		sub_v3_v3v3(start, start, tmp); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		normalize_v3(end); | 
					
						
							|  |  |  | 		normalize_v3(start); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		cross_v3_v3v3(tmp, start, end); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2011-03-28 17:06:15 +00:00
										 |  |  | 		if (dot_v3v3(tmp, axis) < 0.0f) | 
					
						
							| 
									
										
										
										
											2014-09-17 14:11:37 +10:00
										 |  |  | 			angle = -acosf(dot_v3v3(start, end)); | 
					
						
							| 
									
										
										
										
											2012-05-19 13:55:54 +00:00
										 |  |  | 		else | 
					
						
							| 
									
										
										
										
											2014-09-17 14:11:37 +10:00
										 |  |  | 			angle = acosf(dot_v3v3(start, end)); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							|  |  |  | 		float mtx[3][3]; | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		copy_m3_m4(mtx, t->viewmat); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		mul_m3_v3(mtx, end); | 
					
						
							|  |  |  | 		mul_m3_v3(mtx, start); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-09-17 14:11:37 +10:00
										 |  |  | 		angle = atan2f(start[1], start[0]) - atan2f(end[1], end[0]); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2011-03-28 17:06:15 +00:00
										 |  |  | 	if (angle > (float)M_PI) { | 
					
						
							|  |  |  | 		angle = angle - 2 * (float)M_PI; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2011-03-28 17:06:15 +00:00
										 |  |  | 	else if (angle < -((float)M_PI)) { | 
					
						
							|  |  |  | 		angle = 2.0f * (float)M_PI + angle; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	return angle; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 02:53:11 +10:00
										 |  |  | static float ResizeBetween(TransInfo *t, const float p1[3], const float p2[3]) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-06-26 16:19:39 +10:00
										 |  |  | 	float d1[3], d2[3], len_d1; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-26 16:19:39 +10:00
										 |  |  | 	sub_v3_v3v3(d1, p1, t->center_global); | 
					
						
							|  |  |  | 	sub_v3_v3v3(d2, p2, t->center_global); | 
					
						
							| 
									
										
										
										
											2015-08-26 22:23:41 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	if (t->con.applyRot != NULL && (t->con.mode & CON_APPLY)) { | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		mul_m3_v3(t->con.pmtx, d1); | 
					
						
							|  |  |  | 		mul_m3_v3(t->con.pmtx, d2); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-10-23 12:27:15 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	project_v3_v3v3(d1, d1, d2); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2011-12-26 19:03:32 +00:00
										 |  |  | 	len_d1 = len_v3(d1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 	/* Use 'invalid' dist when `center == p1` (after projecting),
 | 
					
						
							|  |  |  | 	 * in this case scale will _never_ move the point in relation to the center, | 
					
						
							|  |  |  | 	 * so it makes no sense to take it into account when scaling. see: T46503 */ | 
					
						
							|  |  |  | 	return len_d1 != 0.0f ? len_v3(d2) / len_d1 : TRANSFORM_DIST_INVALID; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************** CALC **************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-08 04:00:06 +00:00
										 |  |  | static void UNUSED_FUNCTION(CalcSnapGrid) (TransInfo *t, float *UNUSED(vec)) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	snapGridIncrementAction(t, t->tsnap.snapPoint, BIG_GEARS); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (t->spacetype == SPACE_VIEW3D) { | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 		float loc[3]; | 
					
						
							|  |  |  | 		float no[3]; | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 		float mval[2]; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 		bool found = false; | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		float dist_px = SNAP_MIN_DISTANCE; // Use a user defined value here
 | 
					
						
							| 
									
										
										
										
											2009-10-22 23:22:05 +00:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		mval[0] = t->mval[0]; | 
					
						
							|  |  |  | 		mval[1] = t->mval[1]; | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 		if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME) { | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 			found = peelObjectsTransform( | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 			        t, mval, | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 			        (t->settings->snap_flag & SCE_SNAP_PEEL_OBJECT) != 0, | 
					
						
							|  |  |  | 			        loc, no, NULL); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
										
											2015-09-02 01:25:13 +10:00
										 |  |  | 			zero_v3(no);  /* objects won't set this */ | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 			found = snapObjectsTransform( | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 			        t, mval, &dist_px, | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 			        loc, no); | 
					
						
							| 
									
										
										
										
											2011-05-11 09:28:00 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 		if (found == true) { | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 			copy_v3_v3(t->tsnap.snapPoint, loc); | 
					
						
							|  |  |  | 			copy_v3_v3(t->tsnap.snapNormal, no); | 
					
						
							| 
									
										
										
										
											2008-02-27 19:35:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 			t->tsnap.status |=  POINT_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 			t->tsnap.status &= ~POINT_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 	else if (t->spacetype == SPACE_IMAGE && t->obedit != NULL && t->obedit->type == OB_MESH) { | 
					
						
							| 
									
										
										
										
											2009-03-17 21:44:58 +00:00
										 |  |  | 		/* same as above but for UV's */ | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		Image *ima = ED_space_image(t->sa->spacedata.first); | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 		float co[2]; | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-04-21 16:47:16 +10:00
										 |  |  | 		UI_view2d_region_to_view(&t->ar->v2d, t->mval[0], t->mval[1], &co[0], &co[1]); | 
					
						
							| 
									
										
										
										
											2008-02-27 19:35:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 		if (ED_uvedit_nearest_uv(t->scene, t->obedit, ima, co, t->tsnap.snapPoint)) { | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 			t->tsnap.snapPoint[0] *= t->aspect[0]; | 
					
						
							|  |  |  | 			t->tsnap.snapPoint[1] *= t->aspect[1]; | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			t->tsnap.status |=  POINT_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 			t->tsnap.status &= ~POINT_INIT; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	else if (t->spacetype == SPACE_NODE) { | 
					
						
							|  |  |  | 		float loc[2]; | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		float dist_px = SNAP_MIN_DISTANCE; // Use a user defined value here
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		char node_border; | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2017-08-16 14:16:30 -03:00
										 |  |  | 		if (snapNodesTransform(t, t->mval, loc, &dist_px, &node_border)) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			copy_v2_v2(t->tsnap.snapPoint, loc); | 
					
						
							|  |  |  | 			t->tsnap.snapNodeBorder = node_border; | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			t->tsnap.status |=  POINT_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			t->tsnap.status &= ~POINT_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************** TARGET **************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | static void TargetSnapOffset(TransInfo *t, TransData *td) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (t->spacetype == SPACE_NODE && td != NULL) { | 
					
						
							|  |  |  | 		bNode *node = td->extra; | 
					
						
							|  |  |  | 		char border = t->tsnap.snapNodeBorder; | 
					
						
							| 
									
										
										
										
											2012-09-15 11:48:20 +00:00
										 |  |  | 		float width  = BLI_rctf_size_x(&node->totr); | 
					
						
							|  |  |  | 		float height = BLI_rctf_size_y(&node->totr); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-01-21 13:13:41 +01:00
										 |  |  | #ifdef USE_NODE_CENTER
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		if (border & NODE_LEFT) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[0] -= 0.5f * width; | 
					
						
							|  |  |  | 		if (border & NODE_RIGHT) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[0] += 0.5f * width; | 
					
						
							|  |  |  | 		if (border & NODE_BOTTOM) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[1] -= 0.5f * height; | 
					
						
							|  |  |  | 		if (border & NODE_TOP) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[1] += 0.5f * height; | 
					
						
							| 
									
										
										
										
											2014-01-21 13:13:41 +01:00
										 |  |  | #else
 | 
					
						
							|  |  |  | 		if (border & NODE_LEFT) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[0] -= 0.0f; | 
					
						
							|  |  |  | 		if (border & NODE_RIGHT) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[0] += width; | 
					
						
							|  |  |  | 		if (border & NODE_BOTTOM) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[1] -= height; | 
					
						
							|  |  |  | 		if (border & NODE_TOP) | 
					
						
							|  |  |  | 			t->tsnap.snapTarget[1] += 0.0f; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void TargetSnapCenter(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	/* Only need to calculate once */ | 
					
						
							|  |  |  | 	if ((t->tsnap.status & TARGET_INIT) == 0) { | 
					
						
							| 
									
										
										
										
											2015-06-26 16:19:39 +10:00
										 |  |  | 		copy_v3_v3(t->tsnap.snapTarget, t->center_global); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		TargetSnapOffset(t, NULL); | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-10-21 05:46:41 +00:00
										 |  |  | 		t->tsnap.status |= TARGET_INIT; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void TargetSnapActive(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	/* Only need to calculate once */ | 
					
						
							|  |  |  | 	if ((t->tsnap.status & TARGET_INIT) == 0) { | 
					
						
							| 
									
										
										
										
											2014-05-09 16:52:09 +10:00
										 |  |  | 		if (calculateCenterActive(t, true, t->tsnap.snapTarget)) { | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 				Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 				mul_m4_v3(ob->obmat, t->tsnap.snapTarget); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2014-05-09 16:52:09 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			TargetSnapOffset(t, NULL); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			t->tsnap.status |= TARGET_INIT; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		/* No active, default to median */ | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
										
											2009-12-03 19:18:00 +00:00
										 |  |  | 			t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			t->tsnap.targetSnap = TargetSnapMedian; | 
					
						
							|  |  |  | 			TargetSnapMedian(t); | 
					
						
							| 
									
										
										
										
											2012-10-21 05:46:41 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void TargetSnapMedian(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	// Only need to calculate once
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if ((t->tsnap.status & TARGET_INIT) == 0) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		TransData *td = NULL; | 
					
						
							|  |  |  | 		int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		t->tsnap.snapTarget[0] = 0; | 
					
						
							|  |  |  | 		t->tsnap.snapTarget[1] = 0; | 
					
						
							|  |  |  | 		t->tsnap.snapTarget[2] = 0; | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		for (td = t->data, i = 0; i < t->total && td->flag & TD_SELECTED; i++, td++) { | 
					
						
							| 
									
										
										
										
											2010-04-21 12:27:48 +00:00
										 |  |  | 			add_v3_v3(t->tsnap.snapTarget, td->center); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 		mul_v3_fl(t->tsnap.snapTarget, 1.0 / i); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 		if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 			Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 			mul_m4_v3(ob->obmat, t->tsnap.snapTarget); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		TargetSnapOffset(t, NULL); | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-10-21 05:46:41 +00:00
										 |  |  | 		t->tsnap.status |= TARGET_INIT; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-15 16:38:48 +00:00
										 |  |  | static void TargetSnapClosest(TransInfo *t) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	// Only valid if a snap point has been selected
 | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 	if (t->tsnap.status & POINT_INIT) { | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 		float dist_closest = 0.0f; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		TransData *closest = NULL, *td = NULL; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		/* Object mode */ | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 		if (t->flag & T_OBJECT) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			int i; | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			for (td = t->data, i = 0; i < t->total && td->flag & TD_SELECTED; i++, td++) { | 
					
						
							| 
									
										
										
										
											2012-05-05 14:03:12 +00:00
										 |  |  | 				struct BoundBox *bb = BKE_object_boundbox_get(td->ob); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				 | 
					
						
							|  |  |  | 				/* use boundbox if possible */ | 
					
						
							| 
									
										
										
										
											2012-04-28 06:31:57 +00:00
										 |  |  | 				if (bb) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 					int j; | 
					
						
							|  |  |  | 					 | 
					
						
							|  |  |  | 					for (j = 0; j < 8; j++) { | 
					
						
							|  |  |  | 						float loc[3]; | 
					
						
							|  |  |  | 						float dist; | 
					
						
							|  |  |  | 						 | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 						copy_v3_v3(loc, bb->vec[j]); | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 						mul_m4_v3(td->ext->obmat, loc); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 						 | 
					
						
							|  |  |  | 						dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | 						if ((dist != TRANSFORM_DIST_INVALID) && | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 						    (closest == NULL || fabsf(dist) < fabsf(dist_closest))) | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 						{ | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 							copy_v3_v3(t->tsnap.snapTarget, loc); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 							closest = td; | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 							dist_closest = dist; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				/* use element center otherwise */ | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 				else { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 					float loc[3]; | 
					
						
							|  |  |  | 					float dist; | 
					
						
							|  |  |  | 					 | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 					copy_v3_v3(loc, td->center); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 					 | 
					
						
							|  |  |  | 					dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint); | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | 					if ((dist != TRANSFORM_DIST_INVALID) && | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 					    (closest == NULL || fabsf(dist) < fabsf(dist_closest))) | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 					{ | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 						copy_v3_v3(t->tsnap.snapTarget, loc); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 						closest = td; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-03-06 18:40:15 +00:00
										 |  |  | 		else { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 			int i; | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 			for (td = t->data, i = 0; i < t->total && td->flag & TD_SELECTED; i++, td++) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				float loc[3]; | 
					
						
							|  |  |  | 				float dist; | 
					
						
							|  |  |  | 				 | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 				copy_v3_v3(loc, td->center); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				 | 
					
						
							| 
									
										
										
										
											2012-06-10 22:13:17 +00:00
										 |  |  | 				if (t->flag & (T_EDIT | T_POSE)) { | 
					
						
							|  |  |  | 					Object *ob = t->obedit ? t->obedit : t->poseobj; | 
					
						
							| 
									
										
										
										
											2009-11-10 20:43:45 +00:00
										 |  |  | 					mul_m4_v3(ob->obmat, loc); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 				 | 
					
						
							|  |  |  | 				dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint); | 
					
						
							|  |  |  | 				 | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 				if ((dist != TRANSFORM_DIST_INVALID) && | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 				    (closest == NULL || fabsf(dist) < fabsf(dist_closest))) | 
					
						
							| 
									
										
										
										
											2015-10-16 14:45:05 +11:00
										 |  |  | 				{ | 
					
						
							| 
									
										
										
										
											2011-09-12 04:14:12 +00:00
										 |  |  | 					copy_v3_v3(t->tsnap.snapTarget, loc); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 					closest = td; | 
					
						
							| 
									
										
										
										
											2016-01-18 13:15:38 +11:00
										 |  |  | 					dist_closest = dist; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		TargetSnapOffset(t, closest); | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		t->tsnap.status |= TARGET_INIT; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-02-24 21:25:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | bool snapObjectsTransform( | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  |         TransInfo *t, const float mval[2], | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  |         float *dist_px, | 
					
						
							|  |  |  |         float r_loc[3], float r_no[3]) | 
					
						
							| 
									
										
										
										
											2009-03-20 18:00:51 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 	return ED_transform_snap_object_project_view3d_ex( | 
					
						
							|  |  |  | 	        t->tsnap.object_context, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 	        t->scene->toolsettings->snap_mode, | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 	        &(const struct SnapObjectParams){ | 
					
						
							| 
									
										
										
										
											2017-01-30 18:30:19 -03:00
										 |  |  | 	            .snap_select = t->tsnap.modeSelect, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 	            .use_object_edit_cage = (t->flag & T_EDIT) != 0, | 
					
						
							| 
									
										
										
										
											2016-04-21 11:29:32 +10:00
										 |  |  | 	        }, | 
					
						
							| 
									
										
										
										
											2016-05-10 16:36:46 +10:00
										 |  |  | 	        mval, dist_px, NULL, | 
					
						
							| 
									
										
										
										
											2018-05-06 15:56:09 +02:00
										 |  |  | 	        r_loc, r_no, NULL, | 
					
						
							|  |  |  | 	        NULL, NULL); | 
					
						
							| 
									
										
										
										
											2013-04-03 09:48:21 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-03-20 18:00:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | /******************** PEELING *********************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | bool peelObjectsSnapContext( | 
					
						
							|  |  |  |         SnapObjectContext *sctx, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  |         const float mval[2], | 
					
						
							|  |  |  |         const struct SnapObjectParams *params, | 
					
						
							|  |  |  |         const bool use_peel_object, | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  |         /* return args */ | 
					
						
							|  |  |  |         float r_loc[3], float r_no[3], float *r_thickness) | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 	ListBase depths_peel = {0}; | 
					
						
							|  |  |  | 	ED_transform_snap_object_project_all_view3d_ex( | 
					
						
							|  |  |  | 	        sctx, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 	        params, | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 	        mval, -1.0f, false, | 
					
						
							|  |  |  | 	        &depths_peel); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (!BLI_listbase_is_empty(&depths_peel)) { | 
					
						
							|  |  |  | 		/* At the moment we only use the hits of the first object */ | 
					
						
							|  |  |  | 		struct SnapObjectHitDepth *hit_min = depths_peel.first; | 
					
						
							|  |  |  | 		for (struct SnapObjectHitDepth *iter = hit_min->next; iter; iter = iter->next) { | 
					
						
							|  |  |  | 			if (iter->depth < hit_min->depth) { | 
					
						
							|  |  |  | 				hit_min = iter; | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		struct SnapObjectHitDepth *hit_max = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (use_peel_object) { | 
					
						
							|  |  |  | 			/* if peeling objects, take the first and last from each object */ | 
					
						
							|  |  |  | 			hit_max = hit_min; | 
					
						
							|  |  |  | 			for (struct SnapObjectHitDepth *iter = depths_peel.first; iter; iter = iter->next) { | 
					
						
							|  |  |  | 				if ((iter->depth > hit_max->depth) && (iter->ob_uuid == hit_min->ob_uuid)) { | 
					
						
							|  |  |  | 					hit_max = iter; | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2015-09-14 12:51:04 +02:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		else { | 
					
						
							|  |  |  | 			/* otherwise, pair first with second and so on */ | 
					
						
							|  |  |  | 			for (struct SnapObjectHitDepth *iter = depths_peel.first; iter; iter = iter->next) { | 
					
						
							|  |  |  | 				if ((iter != hit_min) && (iter->ob_uuid == hit_min->ob_uuid)) { | 
					
						
							|  |  |  | 					if (hit_max == NULL) { | 
					
						
							|  |  |  | 						hit_max = iter; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					else if (iter->depth < hit_max->depth) { | 
					
						
							|  |  |  | 						hit_max = iter; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 			/* in this case has only one hit. treat as raycast */ | 
					
						
							|  |  |  | 			if (hit_max == NULL) { | 
					
						
							|  |  |  | 				hit_max = hit_min; | 
					
						
							| 
									
										
										
										
											2016-05-06 04:49:21 +10:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-02-24 00:45:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		mid_v3_v3v3(r_loc, hit_min->co, hit_max->co); | 
					
						
							| 
									
										
										
										
											2012-04-16 10:09:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		if (r_thickness) { | 
					
						
							|  |  |  | 			*r_thickness = hit_max->depth - hit_min->depth; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-05-23 03:24:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		/* XXX, is there a correct normal in this case ???, for now just z up */ | 
					
						
							|  |  |  | 		r_no[0] = 0.0; | 
					
						
							|  |  |  | 		r_no[1] = 0.0; | 
					
						
							|  |  |  | 		r_no[2] = 1.0; | 
					
						
							| 
									
										
										
										
											2016-05-06 04:49:21 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 		BLI_freelistN(&depths_peel); | 
					
						
							|  |  |  | 		return true; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 	return false; | 
					
						
							| 
									
										
										
										
											2009-03-20 18:00:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | bool peelObjectsTransform( | 
					
						
							|  |  |  |         TransInfo *t, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  |         const float mval[2], | 
					
						
							|  |  |  |         const bool use_peel_object, | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  |         /* return args */ | 
					
						
							|  |  |  |         float r_loc[3], float r_no[3], float *r_thickness) | 
					
						
							| 
									
										
										
										
											2009-03-20 18:00:51 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 	return peelObjectsSnapContext( | 
					
						
							|  |  |  | 	        t->tsnap.object_context, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 	        mval, | 
					
						
							|  |  |  | 	        &(const struct SnapObjectParams){ | 
					
						
							| 
									
										
										
										
											2017-01-30 18:30:19 -03:00
										 |  |  | 	            .snap_select = t->tsnap.modeSelect, | 
					
						
							| 
									
										
										
										
											2016-06-03 16:54:58 +10:00
										 |  |  | 	            .use_object_edit_cage = (t->flag & T_EDIT) != 0, | 
					
						
							|  |  |  | 	        }, | 
					
						
							|  |  |  | 	        use_peel_object, | 
					
						
							| 
									
										
										
										
											2016-05-11 19:59:02 +10:00
										 |  |  | 	        r_loc, r_no, r_thickness); | 
					
						
							| 
									
										
										
										
											2009-03-20 18:00:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | /******************** NODES ***********************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 13:43:10 +11:00
										 |  |  | static bool snapNodeTest(View2D *v2d, bNode *node, eSnapSelect snap_select) | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	/* node is use for snapping only if a) snap mode matches and b) node is inside the view */ | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 	return ((snap_select == SNAP_NOT_SELECTED && !(node->flag & NODE_SELECT)) || | 
					
						
							|  |  |  | 	        (snap_select == SNAP_ALL          && !(node->flag & NODE_ACTIVE))) && | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	        (node->totr.xmin < v2d->cur.xmax && node->totr.xmax > v2d->cur.xmin && | 
					
						
							|  |  |  | 	         node->totr.ymin < v2d->cur.ymax && node->totr.ymax > v2d->cur.ymin); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static NodeBorder snapNodeBorder(int snap_node_mode) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	switch (snap_node_mode) { | 
					
						
							|  |  |  | 		case SCE_SNAP_MODE_NODE_X: | 
					
						
							|  |  |  | 			return NODE_LEFT | NODE_RIGHT; | 
					
						
							|  |  |  | 		case SCE_SNAP_MODE_NODE_Y: | 
					
						
							|  |  |  | 			return NODE_TOP | NODE_BOTTOM; | 
					
						
							|  |  |  | 		case SCE_SNAP_MODE_NODE_XY: | 
					
						
							|  |  |  | 			return NODE_LEFT | NODE_RIGHT | NODE_TOP | NODE_BOTTOM; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | static bool snapNode( | 
					
						
							|  |  |  |         ToolSettings *ts, SpaceNode *UNUSED(snode), ARegion *ar, bNode *node, const int mval[2], | 
					
						
							|  |  |  |         float r_loc[2], float *r_dist_px, char *r_node_border) | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	View2D *v2d = &ar->v2d; | 
					
						
							|  |  |  | 	NodeBorder border = snapNodeBorder(ts->snap_node_mode); | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 	bool retval = false; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	rcti totr; | 
					
						
							|  |  |  | 	int new_dist; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2014-04-21 16:47:16 +10:00
										 |  |  | 	UI_view2d_view_to_region_rcti(v2d, &node->totr, &totr); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	if (border & NODE_LEFT) { | 
					
						
							|  |  |  | 		new_dist = abs(totr.xmin - mval[0]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		if (new_dist < *r_dist_px) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			UI_view2d_region_to_view(v2d, totr.xmin, mval[1], &r_loc[0], &r_loc[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			*r_dist_px = new_dist; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			*r_node_border = NODE_LEFT; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 			retval = true; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (border & NODE_RIGHT) { | 
					
						
							|  |  |  | 		new_dist = abs(totr.xmax - mval[0]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		if (new_dist < *r_dist_px) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			UI_view2d_region_to_view(v2d, totr.xmax, mval[1], &r_loc[0], &r_loc[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			*r_dist_px = new_dist; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			*r_node_border = NODE_RIGHT; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 			retval = true; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (border & NODE_BOTTOM) { | 
					
						
							|  |  |  | 		new_dist = abs(totr.ymin - mval[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		if (new_dist < *r_dist_px) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			UI_view2d_region_to_view(v2d, mval[0], totr.ymin, &r_loc[0], &r_loc[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			*r_dist_px = new_dist; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			*r_node_border = NODE_BOTTOM; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 			retval = true; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	if (border & NODE_TOP) { | 
					
						
							|  |  |  | 		new_dist = abs(totr.ymax - mval[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 		if (new_dist < *r_dist_px) { | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			UI_view2d_region_to_view(v2d, mval[0], totr.ymax, &r_loc[0], &r_loc[1]); | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			*r_dist_px = new_dist; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 			*r_node_border = NODE_TOP; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 			retval = true; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	return retval; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | static bool snapNodes( | 
					
						
							|  |  |  |         ToolSettings *ts, SpaceNode *snode, ARegion *ar, | 
					
						
							| 
									
										
										
										
											2017-10-17 13:43:10 +11:00
										 |  |  |         const int mval[2], eSnapSelect snap_select, | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  |         float r_loc[2], float *r_dist_px, char *r_node_border) | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	bNodeTree *ntree = snode->edittree; | 
					
						
							|  |  |  | 	bNode *node; | 
					
						
							| 
									
										
										
										
											2013-03-08 18:28:26 +00:00
										 |  |  | 	bool retval = false; | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	*r_node_border = 0; | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	for (node = ntree->nodes.first; node; node = node->next) { | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 		if (snapNodeTest(&ar->v2d, node, snap_select)) { | 
					
						
							| 
									
										
										
										
											2013-04-03 07:36:37 +00:00
										 |  |  | 			retval |= snapNode(ts, snode, ar, node, mval, r_loc, r_dist_px, r_node_border); | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	return retval; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | bool snapNodesTransform( | 
					
						
							| 
									
										
										
										
											2017-08-16 14:16:30 -03:00
										 |  |  |         TransInfo *t, const int mval[2], | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  |         float r_loc[2], float *r_dist_px, char *r_node_border) | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 	return snapNodes( | 
					
						
							| 
									
										
										
										
											2017-08-16 14:16:30 -03:00
										 |  |  | 	        t->settings, t->sa->spacedata.first, t->ar, mval, t->tsnap.modeSelect, | 
					
						
							| 
									
										
										
										
											2015-12-02 18:08:48 +11:00
										 |  |  | 	        r_loc, r_dist_px, r_node_border); | 
					
						
							| 
									
										
										
										
											2012-06-29 14:34:46 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | /*================================================================*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-10 00:23:06 +02:00
										 |  |  | static void applyGridIncrement(TransInfo *t, float *val, int max_index, const float fac[3], GearsType action); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | void snapGridIncrementAction(TransInfo *t, float *val, GearsType action) | 
					
						
							| 
									
										
										
										
											2011-09-28 05:53:40 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	float fac[3]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fac[NO_GEARS]    = t->snap[0]; | 
					
						
							|  |  |  | 	fac[BIG_GEARS]   = t->snap[1]; | 
					
						
							|  |  |  | 	fac[SMALL_GEARS] = t->snap[2]; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	applyGridIncrement(t, val, t->idx_max, fac, action); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | void snapGridIncrement(TransInfo *t, float *val) | 
					
						
							| 
									
										
										
										
											2011-09-28 05:53:40 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	GearsType action; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 	/* only do something if using absolute or incremental grid snapping */ | 
					
						
							|  |  |  | 	if (!ELEM(t->tsnap.mode, SCE_SNAP_MODE_INCREMENT, SCE_SNAP_MODE_GRID)) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		return; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-12 11:17:42 +00:00
										 |  |  | 	action = activeSnap(t) ? BIG_GEARS : NO_GEARS; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-03 22:15:59 +00:00
										 |  |  | 	if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		action = SMALL_GEARS; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-06 17:46:32 +00:00
										 |  |  | 	snapGridIncrementAction(t, val, action); | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-19 20:47:38 +01:00
										 |  |  | void snapSequenceBounds(TransInfo *t, const int mval[2]) | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | { | 
					
						
							|  |  |  | 	float xmouse, ymouse; | 
					
						
							|  |  |  | 	int frame; | 
					
						
							|  |  |  | 	int mframe; | 
					
						
							| 
									
										
										
										
											2016-02-01 15:15:10 +11:00
										 |  |  | 	TransSeq *ts = t->custom.type.data; | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | 	/* reuse increment, strictly speaking could be another snap mode, but leave as is */ | 
					
						
							|  |  |  | 	if (!(t->modifiers & MOD_SNAP_INVERT)) | 
					
						
							| 
									
										
										
										
											2015-03-19 20:47:38 +01:00
										 |  |  | 		return; | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* convert to frame range */ | 
					
						
							|  |  |  | 	UI_view2d_region_to_view(&t->ar->v2d, mval[0], mval[1], &xmouse, &ymouse); | 
					
						
							| 
									
										
										
										
											2017-09-27 11:13:03 +10:00
										 |  |  | 	mframe = round_fl_to_int(xmouse); | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | 	/* now find the closest sequence */ | 
					
						
							|  |  |  | 	frame = BKE_sequencer_find_next_prev_edit(t->scene, mframe, SEQ_SIDE_BOTH, true, false, true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (!ts->snap_left) | 
					
						
							|  |  |  | 		frame = frame - (ts->max - ts->min); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-19 20:47:38 +01:00
										 |  |  | 	t->values[0] = frame - ts->min; | 
					
						
							| 
									
										
										
										
											2014-11-24 18:18:35 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-10 00:23:06 +02:00
										 |  |  | static void applyGridIncrement(TransInfo *t, float *val, int max_index, const float fac[3], GearsType action) | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 	float asp_local[3] = {1, 1, 1}; | 
					
						
							|  |  |  | 	const bool use_aspect = ELEM(t->mode, TFM_TRANSLATION); | 
					
						
							|  |  |  | 	const float *asp = use_aspect ? t->aspect : asp_local; | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 	BLI_assert(ELEM(t->tsnap.mode, SCE_SNAP_MODE_INCREMENT, SCE_SNAP_MODE_GRID)); | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 	BLI_assert(max_index <= 2); | 
					
						
							| 
									
										
										
										
											2011-07-26 13:33:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 	/* Early bailing out if no need to snap */ | 
					
						
							|  |  |  | 	if (fac[action] == 0.0f) { | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 		return; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2014-11-20 17:44:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 	if (use_aspect) { | 
					
						
							|  |  |  | 		/* custom aspect for fcurve */ | 
					
						
							|  |  |  | 		if (t->spacetype == SPACE_IPO) { | 
					
						
							|  |  |  | 			View2D *v2d = &t->ar->v2d; | 
					
						
							|  |  |  | 			View2DGrid *grid; | 
					
						
							|  |  |  | 			SpaceIpo *sipo = t->sa->spacedata.first; | 
					
						
							|  |  |  | 			int unity = V2D_UNIT_VALUES; | 
					
						
							|  |  |  | 			int unitx = (sipo->flag & SIPO_DRAWTIME) ? V2D_UNIT_SECONDS : V2D_UNIT_FRAMESCALE; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			/* grid */ | 
					
						
							|  |  |  | 			grid = UI_view2d_grid_calc(t->scene, v2d, unitx, V2D_GRID_NOCLAMP, unity, V2D_GRID_NOCLAMP, t->ar->winx, t->ar->winy); | 
					
						
							| 
									
										
										
										
											2014-11-20 17:44:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-26 15:45:09 +10:00
										 |  |  | 			UI_view2d_grid_size(grid, &asp_local[0], &asp_local[1]); | 
					
						
							|  |  |  | 			UI_view2d_grid_free(grid); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			asp = asp_local; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-11-20 17:44:47 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 	/* absolute snapping on grid based on global center */ | 
					
						
							| 
									
										
										
										
											2015-07-02 02:13:15 +10:00
										 |  |  | 	if ((t->tsnap.snap_spatial_grid) && (t->mode == TFM_TRANSLATION)) { | 
					
						
							| 
									
										
										
										
											2016-05-31 23:56:59 +10:00
										 |  |  | 		const float *center_global = t->center_global; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/* use a fallback for cursor selection,
 | 
					
						
							|  |  |  | 		 * this isn't useful as a global center for absolute grid snapping | 
					
						
							|  |  |  | 		 * since its not based on the position of the selection. */ | 
					
						
							|  |  |  | 		if (t->around == V3D_AROUND_CURSOR) { | 
					
						
							|  |  |  | 			const TransCenterData *cd = transformCenter_from_type(t, V3D_AROUND_CENTER_MEAN); | 
					
						
							|  |  |  | 			center_global = cd->global; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 		for (i = 0; i <= max_index; i++) { | 
					
						
							|  |  |  | 			/* do not let unconstrained axis jump to absolute grid increments */ | 
					
						
							|  |  |  | 			if (!(t->con.mode & CON_APPLY) || t->con.mode & (CON_AXIS0 << i)) { | 
					
						
							|  |  |  | 				const float iter_fac = fac[action] * asp[i]; | 
					
						
							| 
									
										
										
										
											2016-05-31 23:56:59 +10:00
										 |  |  | 				val[i] = iter_fac * roundf((val[i] + center_global[i]) / iter_fac) - center_global[i]; | 
					
						
							| 
									
										
										
										
											2015-06-27 15:30:17 +10:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							|  |  |  | 		/* relative snapping in fixed increments */ | 
					
						
							|  |  |  | 		for (i = 0; i <= max_index; i++) { | 
					
						
							|  |  |  | 			const float iter_fac = fac[action] * asp[i]; | 
					
						
							|  |  |  | 			val[i] = iter_fac * roundf(val[i] / iter_fac); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
											
												2.5
Transform:
First working port of the transform code:
- Object mode only (other conversions need to be ported)
- Contraints (global and local only) working
- Snap (no edit mode, obviously) working
- Numinput working
- Gears (Ctrl and Shift) working
- Only grap, rotate, scale, shear, warp and to sphere have been added as hotkey, but the rest should work too once accessible
- No manipulator
- No drawn feedback other than moving stuff and header print (no constraint line, snap circle, ...)
- No NDOF support
I've only tested Scons support, though Makefil *should* work, I *think*.
Misc:
-QuatIsNull function in arith
-Exporting project_* and view[line|ray] functions from view3d
											
										 
											2008-12-29 01:41:28 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } |