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 ) : none yet .
*
* * * * * * END GPL LICENSE BLOCK * * * * *
*/
2011-02-27 20:29:51 +00:00
/** \file blender/editors/transform/transform.h
* \ ingroup edtransform
*/
2012-02-17 18:59:41 +00:00
# ifndef __TRANSFORM_H__
# define __TRANSFORM_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-07-08 16:17:47 +00:00
# include "ED_transform.h"
2010-02-20 20:29:09 +00:00
# include "ED_numinput.h"
2013-02-28 11:29:27 +00:00
# include "ED_view3d.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
2017-10-16 17:15:03 -02:00
# include "RE_engine.h"
2009-12-01 18:26:18 +00:00
# include "DNA_listBase.h"
2018-02-06 16:34:11 +11:00
# include "DEG_depsgraph.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
/* ************************** Types ***************************** */
2018-01-18 15:58:02 +01:00
struct Depsgraph ;
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
struct TransInfo ;
struct TransData ;
2009-09-28 19:49:36 +00:00
struct TransformOrientation ;
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
struct TransSnap ;
struct NumInput ;
struct Object ;
struct View3D ;
struct ScrArea ;
struct Scene ;
2017-11-22 10:52:39 -02:00
struct ViewLayer ;
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
struct bConstraint ;
2009-12-21 17:23:44 +00:00
struct wmKeyMap ;
struct wmKeyConfig ;
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
struct bContext ;
struct wmEvent ;
2009-02-16 03:01:56 +00:00
struct wmTimer ;
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
struct ARegion ;
2009-09-28 19:49:36 +00:00
struct ReportList ;
2014-07-09 19:58:48 +03:00
struct EditBone ;
2017-10-16 17:15:03 -02:00
struct RenderEngineType ;
2016-05-06 04:49:21 +10:00
struct SnapObjectContext ;
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
2018-02-06 23:27:49 +11:00
# include "DNA_object_enums.h"
2013-10-23 06:48:36 +00:00
/* transinfo->redraw */
typedef enum {
TREDRAW_NOTHING = 0 ,
TREDRAW_HARD = 1 ,
TREDRAW_SOFT = 2 ,
} eRedrawFlag ;
2009-12-01 18:26:18 +00:00
typedef struct TransSnapPoint {
2012-04-29 15:47:02 +00:00
struct TransSnapPoint * next , * prev ;
2009-12-01 18:26:18 +00:00
float co [ 3 ] ;
} TransSnapPoint ;
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
typedef struct TransSnap {
2009-03-29 19:52:53 +00:00
short mode ;
2009-12-03 19:18:00 +00:00
short 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
short modePoint ;
2009-11-26 19:47:55 +00:00
short modeSelect ;
2013-04-04 09:20:46 +00:00
bool align ;
2014-04-17 02:53:11 +10:00
bool project ;
bool snap_self ;
bool peel ;
2015-06-30 18:57:17 +10:00
bool snap_spatial_grid ;
2009-03-29 19:52:53 +00:00
short status ;
2017-02-03 02:27:57 -03:00
float snapPoint [ 3 ] ; /* snapping from this point (in global-space)*/
float snapTarget [ 3 ] ; /* to this point (in global-space)*/
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 snapNormal [ 3 ] ;
2012-06-29 14:34:46 +00:00
char snapNodeBorder ;
2009-12-01 18:26:18 +00:00
ListBase points ;
2011-12-26 20:23:07 +00:00
TransSnapPoint * selectedPoint ;
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 last ;
void ( * applySnap ) ( struct TransInfo * , float * ) ;
void ( * calcSnap ) ( struct TransInfo * , float * ) ;
void ( * targetSnap ) ( struct TransInfo * ) ;
2016-01-18 13:15:38 +11:00
/**
* Get the transform distance between two points ( used by Closest snap )
*
* \ note Return value can be anything ,
* where the smallest absolute value defines whats closest .
*/
2014-04-17 02:53:11 +10:00
float ( * distance ) ( struct TransInfo * , const float p1 [ 3 ] , const float p2 [ 3 ] ) ;
2016-04-21 11:29:32 +10:00
/**
* Re - usable snap context data .
*/
2016-05-06 04:49:21 +10:00
struct SnapObjectContext * object_context ;
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
} TransSnap ;
typedef struct TransCon {
2009-12-17 17:34:56 +00:00
short orientation ; /**/
2010-03-22 09:30:00 +00:00
char text [ 50 ] ; /* Description of the Constraint for header_print */
float mtx [ 3 ] [ 3 ] ; /* Matrix of the Constraint space */
float imtx [ 3 ] [ 3 ] ; /* Inverse Matrix of the Constraint space */
float pmtx [ 3 ] [ 3 ] ; /* Projection Constraint Matrix (same as imtx with some axis == 0) */
2011-05-12 16:47:36 +00:00
int imval [ 2 ] ; /* initial mouse value for visual calculation */
2012-03-03 16:31:46 +00:00
/* the one in TransInfo is not garanty to stay the same (Rotates change it) */
2010-03-22 09:30:00 +00:00
int mode ; /* Mode flags of the Constraint */
2013-01-15 13:08:51 +00:00
void ( * drawExtra ) ( struct TransInfo * t ) ;
2012-03-03 16:31:46 +00:00
/* For constraints that needs to draw differently from the other
* uses this instead of the generic draw function */
2013-01-15 13:08:51 +00:00
void ( * applyVec ) ( struct TransInfo * t , struct TransData * td , const float in [ 3 ] , float out [ 3 ] , float pvec [ 3 ] ) ;
2012-03-03 16:31:46 +00:00
/* Apply function pointer for linear vectorial transformation */
/* The last three parameters are pointers to the in/out/printable vectors */
2013-01-15 23:17:45 +00:00
void ( * applySize ) ( struct TransInfo * t , struct TransData * td , float smat [ 3 ] [ 3 ] ) ;
2012-03-03 16:31:46 +00:00
/* Apply function pointer for size transformation */
2013-01-15 13:08:51 +00:00
void ( * applyRot ) ( struct TransInfo * t , struct TransData * td , float vec [ 3 ] , float * angle ) ;
2012-03-03 16:31:46 +00:00
/* Apply function pointer for rotation transformation */
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
} TransCon ;
typedef struct TransDataExtension {
float drot [ 3 ] ; /* Initial object drot */
2012-02-25 16:49:59 +00:00
// float drotAngle; /* Initial object drotAngle, TODO: not yet implemented */
// float drotAxis[3]; /* Initial object drotAxis, TODO: not yet implemented */
2009-09-28 10:19:20 +00:00
float dquat [ 4 ] ; /* Initial object dquat */
2011-12-04 03:35:54 +00:00
float dscale [ 3 ] ; /* Initial object dscale */
2014-08-05 16:05:24 -04:00
float * rot ; /* Rotation of the data to transform */
2010-03-22 09:30:00 +00:00
float irot [ 3 ] ; /* Initial rotation */
2014-08-05 16:05:24 -04:00
float * quat ; /* Rotation quaternion of the data to transform */
2010-03-22 09:30:00 +00:00
float iquat [ 4 ] ; /* Initial rotation quaternion */
2014-08-05 16:05:24 -04:00
float * rotAngle ; /* Rotation angle of the data to transform */
2012-03-03 16:31:46 +00:00
float irotAngle ; /* Initial rotation angle */
2014-08-05 16:05:24 -04:00
float * rotAxis ; /* Rotation axis of the data to transform */
2012-03-03 16:31:46 +00:00
float irotAxis [ 4 ] ; /* Initial rotation axis */
2014-08-05 16:05:24 -04:00
float * size ; /* Size of the data to transform */
2010-03-22 09:30:00 +00:00
float isize [ 3 ] ; /* Initial size */
2009-07-12 02:01:13 +00:00
float obmat [ 4 ] [ 4 ] ; /* Object matrix */
2010-10-24 06:16:44 +00:00
float l_smtx [ 3 ] [ 3 ] ; /* use instead of td->smtx, It is the same but without the 'bone->bone_mat', see TD_PBONE_LOCAL_MTX_C */
2012-05-13 16:01:59 +00:00
float r_mtx [ 3 ] [ 3 ] ; /* The rotscale matrix of pose bone, to allow using snap-align in translation mode,
* when td - > mtx is the loc pose bone matrix ( and hence can ' t be used to apply rotation in some cases ,
* namely when a bone is in " NoLocal " or " Hinge " mode ) . . . */
float r_smtx [ 3 ] [ 3 ] ; /* Invers of previous one. */
2010-11-14 19:19:58 +00:00
int rotOrder ; /* rotation mode, as defined in eRotationModes (DNA_action_types.h) */
2013-01-23 12:06:18 +00:00
float oloc [ 3 ] , orot [ 3 ] , oquat [ 4 ] , orotAxis [ 3 ] , orotAngle ; /* Original object transformation used for rigid bodies */
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
} TransDataExtension ;
typedef struct TransData2D {
float loc [ 3 ] ; /* Location of data used to transform (x,y,0) */
float * loc2d ; /* Pointer to real 2d location of data */
2010-05-06 19:54:43 +00:00
2011-10-21 01:33:06 +00:00
float * h1 , * h2 ; /* Pointer to handle locations, if handles aren't being moved independently */
2010-05-06 19:54:43 +00:00
float ih1 [ 2 ] , ih2 [ 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
} TransData2D ;
2012-03-09 00:41:09 +00:00
/* we need to store 2 handles for each transdata in case the other handle wasnt 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
typedef struct TransDataCurveHandleFlags {
char ih1 , ih2 ;
char * h1 , * h2 ;
} TransDataCurveHandleFlags ;
2009-01-21 07:01:20 +00:00
/* for sequencer transform */
typedef struct TransDataSeq {
struct Sequence * seq ;
2009-01-23 23:14:02 +00:00
int flag ; /* a copy of seq->flag that may be modified for nested strips */
2010-09-04 20:55:31 +00:00
int start_offset ; /* use this so we can have transform data at the strips start, but apply correctly to the start frame */
2009-01-21 07:01:20 +00:00
short sel_flag ; /* one of SELECT, SEQ_LEFTSEL and SEQ_RIGHTSEL */
2009-07-12 02:01:13 +00:00
2009-01-21 07:01:20 +00:00
} TransDataSeq ;
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-11-24 18:18:35 +01:00
typedef struct TransSeq {
TransDataSeq * tdseq ;
int min ;
int max ;
bool snap_left ;
} TransSeq ;
2009-06-09 11:26:45 +00:00
/* for NLA transform (stored in td->extra pointer) */
typedef struct TransDataNla {
2009-07-12 03:42:39 +00:00
ID * id ; /* ID-block NLA-data is attached to */
2009-07-07 05:41:59 +00:00
struct NlaTrack * oldTrack ; /* Original NLA-Track that the strip belongs to */
struct NlaTrack * nlt ; /* Current NLA-Track that the strip belongs to */
struct NlaStrip * strip ; /* NLA-strip this data represents */
/* dummy values for transform to write in - must have 3 elements... */
float h1 [ 3 ] ; /* start handle */
float h2 [ 3 ] ; /* end handle */
int trackIndex ; /* index of track that strip is currently in */
int handle ; /* handle-index: 0 for dummy entry, -1 for start, 1 for end, 2 for both ends */
2009-06-09 11:26:45 +00:00
} TransDataNla ;
2009-09-22 08:41:03 +00:00
struct LinkNode ;
struct GHash ;
2015-02-11 19:40:54 +11:00
/* header of TransDataEdgeSlideVert, TransDataEdgeSlideEdge */
typedef struct TransDataGenericSlideVert {
struct BMVert * v ;
struct LinkNode * * cd_loop_groups ;
2015-02-16 18:49:18 +11:00
float co_orig_3d [ 3 ] ;
2015-02-11 19:40:54 +11:00
} TransDataGenericSlideVert ;
2013-01-13 05:19:47 +00:00
typedef struct TransDataEdgeSlideVert {
2015-02-11 19:40:54 +11:00
/* TransDataGenericSlideVert */
2009-11-29 00:53:23 +00:00
struct BMVert * v ;
2015-02-11 19:40:54 +11:00
struct LinkNode * * cd_loop_groups ;
2013-04-19 02:22:23 +00:00
float v_co_orig [ 3 ] ;
2015-02-16 18:49:18 +11:00
/* end generic */
2009-12-26 08:47:38 +00:00
2012-05-23 09:46:32 +00:00
float edge_len ;
2015-05-07 19:57:54 +10:00
struct BMVert * v_side [ 2 ] ;
2015-02-16 18:49:18 +11:00
2012-11-07 11:19:54 +00:00
/* add origvert.co to get the original locations */
2015-05-07 19:57:54 +10:00
float dir_side [ 2 ] [ 3 ] ;
2012-08-31 12:08:04 +00:00
int loop_nr ;
2013-01-13 05:19:47 +00:00
} TransDataEdgeSlideVert ;
2009-09-22 08:41:03 +00:00
2015-01-12 02:18:20 +11:00
/* store original data so we can correct UV's and similar when sliding */
typedef struct SlideOrigData {
/* flag that is set when origfaces is initialized */
bool use_origfaces ;
2015-11-03 19:08:14 +11:00
int cd_loop_mdisp_offset ;
2015-02-16 18:49:18 +11:00
struct GHash * origverts ; /* map {BMVert: TransDataGenericSlideVert} */
2015-01-12 02:18:20 +11:00
struct GHash * origfaces ;
struct BMesh * bm_origfaces ;
2015-02-11 19:40:54 +11:00
struct MemArena * arena ;
/* number of math BMLoop layers */
int layer_math_map_num ;
/* array size of 'layer_math_map_num'
* maps TransDataVertSlideVert . cd_group index to absolute CustomData layer index */
int * layer_math_map ;
2015-07-21 14:15:31 +10:00
/* array of slide vert data especially for mirror verts */
TransDataGenericSlideVert * sv_mirror ;
int totsv_mirror ;
2015-01-12 02:18:20 +11:00
} SlideOrigData ;
2013-01-13 05:19:47 +00:00
typedef struct EdgeSlideData {
TransDataEdgeSlideVert * sv ;
2009-12-26 08:47:38 +00:00
int totsv ;
2012-02-27 13:47:53 +00:00
2013-04-19 02:22:23 +00:00
int mval_start [ 2 ] , mval_end [ 2 ] ;
2011-04-13 21:48:16 +00:00
struct BMEditMesh * em ;
2012-05-23 09:46:32 +00:00
2015-01-12 02:18:20 +11:00
SlideOrigData orig_data ;
2012-05-23 09:46:32 +00:00
float perc ;
2015-10-12 16:44:07 +02:00
bool use_even ;
bool flipped ;
2012-05-23 09:46:32 +00:00
int curr_sv_index ;
2015-05-07 21:28:03 +10:00
/** when un-clamped - use this index: #TransDataEdgeSlideVert.dir_side */
int curr_side_unclamp ;
2013-01-13 05:19:47 +00:00
} EdgeSlideData ;
2009-09-22 08:41:03 +00:00
2013-01-13 14:08:53 +00:00
typedef struct TransDataVertSlideVert {
2015-02-11 19:40:54 +11:00
/* TransDataGenericSlideVert */
2015-04-29 19:39:58 +10:00
struct BMVert * v ;
2015-02-11 19:40:54 +11:00
struct LinkNode * * cd_loop_groups ;
2015-02-16 18:49:18 +11:00
float co_orig_3d [ 3 ] ;
2015-02-11 19:40:54 +11:00
/* end generic */
2013-01-13 14:08:53 +00:00
float ( * co_link_orig_3d ) [ 3 ] ;
int co_link_tot ;
int co_link_curr ;
} TransDataVertSlideVert ;
typedef struct VertSlideData {
TransDataVertSlideVert * sv ;
int totsv ;
struct BMEditMesh * em ;
2015-01-12 02:18:20 +11:00
SlideOrigData orig_data ;
2013-01-13 14:08:53 +00:00
float perc ;
2015-10-12 16:44:07 +02:00
bool use_even ;
bool flipped ;
2013-01-13 14:08:53 +00:00
int curr_sv_index ;
2015-04-08 22:58:31 +10:00
/* result of ED_view3d_ob_project_mat_get */
float proj_mat [ 4 ] [ 4 ] ;
2013-01-13 14:08:53 +00:00
} VertSlideData ;
2014-07-09 19:58:48 +03:00
typedef struct BoneInitData {
struct EditBone * bone ;
float tail [ 3 ] ;
float rad_tail ;
float roll ;
float head [ 3 ] ;
float dist ;
float xwidth ;
float zwidth ;
} BoneInitData ;
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
typedef struct TransData {
float dist ; /* Distance needed to affect element (for Proportionnal Editing) */
float rdist ; /* Distance to the nearest element (for Proportionnal Editing) */
float factor ; /* Factor of the transformation (for Proportionnal Editing) */
2010-03-22 09:30:00 +00:00
float * loc ; /* Location of the data to transform */
float iloc [ 3 ] ; /* Initial location */
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 * val ; /* Value pointer for special transforms */
2014-02-28 10:35:11 +01:00
float ival ; /* Old value*/
2010-03-22 09:30:00 +00:00
float center [ 3 ] ; /* Individual data center */
float mtx [ 3 ] [ 3 ] ; /* Transformation matrix from data space to global space */
float smtx [ 3 ] [ 3 ] ; /* Transformation matrix from global space to data space */
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 axismtx [ 3 ] [ 3 ] ; /* Axis orientation matrix of the data */
struct Object * ob ;
struct bConstraint * con ; /* for objects/bones, the first constraint in its constraint stack */
TransDataExtension * ext ; /* for objects, poses. 1 single malloc per TransInfo! */
TransDataCurveHandleFlags * hdata ; /* for curves, stores handle flags for modification/cancel */
2012-02-27 13:47:53 +00:00
void * extra ; /* extra data (mirrored element pointer, in editmode mesh to BMVert) (editbone for roll fixing) (...) */
int flag ; /* Various flags */
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
short protectflag ; /* If set, copy of Object or PoseChannel protection */
} TransData ;
2008-12-29 20:37:54 +00:00
typedef struct MouseInput {
2015-10-30 17:31:07 +11:00
void ( * apply ) ( struct TransInfo * t , struct MouseInput * mi , const double mval [ 2 ] , float output [ 3 ] ) ;
2013-01-14 08:02:06 +00:00
void ( * post ) ( struct TransInfo * t , float values [ 3 ] ) ;
2009-07-12 02:01:13 +00:00
2011-05-12 16:47:36 +00:00
int imval [ 2 ] ; /* initial mouse position */
2014-04-17 02:53:11 +10:00
bool precision ;
2015-10-30 17:31:07 +11:00
float precision_factor ;
2013-10-12 03:42:06 +00:00
float center [ 2 ] ;
2008-12-29 20:37:54 +00:00
float factor ;
2009-09-21 00:48:36 +00:00
void * data ; /* additional data, if needed by the particular function */
2015-10-30 17:31:07 +11:00
/**
2015-11-07 17:31:28 +11:00
* Use virtual cursor , which takes precision into account
2015-10-30 17:31:07 +11:00
* keeping track of the cursors ' virtual ' location ,
* to avoid jumping values when its toggled .
*
* This works well for scaling drag motion ,
* but not for rotating around a point ( rotaton needs its own custom accumulator )
*/
bool use_virtual_mval ;
struct {
double prev [ 2 ] ;
double accum [ 2 ] ;
} virtual_mval ;
2008-12-29 20:37:54 +00:00
} MouseInput ;
2016-02-01 15:15:10 +11:00
typedef struct TransCustomData {
void * data ;
void ( * free_cb ) ( struct TransInfo * , struct TransCustomData * ) ;
unsigned int use_free : 1 ;
} TransCustomData ;
2016-05-31 23:56:59 +10:00
typedef struct TransCenterData {
float local [ 3 ] , global [ 3 ] ;
unsigned int is_set : 1 ;
} TransCenterData ;
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
typedef struct TransInfo {
2010-03-22 09:30:00 +00:00
int mode ; /* current mode */
int flag ; /* generic flags for special behaviors */
int modifiers ; /* special modifiers, by function, not key */
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
short state ; /* current state (running, canceled,...)*/
2010-03-22 09:30:00 +00:00
int options ; /* current context/options for transform */
float val ; /* init value for some transformations (and rotation angle) */
2013-10-23 03:57:42 +00:00
void ( * transform ) ( struct TransInfo * , const int [ 2 ] ) ;
2010-03-22 09:30:00 +00:00
/* transform function pointer */
2013-10-23 06:48:36 +00:00
eRedrawFlag ( * handleEvent ) ( struct TransInfo * , const struct wmEvent * ) ;
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
/* event handler function pointer RETURN 1 if redraw is needed */
2010-03-22 09:30:00 +00:00
int total ; /* total number of transformed data */
TransData * data ; /* transformed data (array) */
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
TransDataExtension * ext ; /* transformed data extension (array) */
TransData2D * data2d ; /* transformed data for 2d (array) */
2010-03-22 09:30:00 +00:00
TransCon con ; /* transformed constraint */
TransSnap tsnap ;
NumInput num ; /* numerical input */
MouseInput mouse ; /* mouse input */
2013-10-23 06:48:36 +00:00
eRedrawFlag redraw ; /* redraw flag */
2009-03-06 15:50:15 +00:00
float prop_size ; /* proportional circle radius */
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
char proptext [ 20 ] ; /* proportional falloff text */
2015-06-26 15:45:09 +10:00
float aspect [ 3 ] ; /* spaces using non 1:1 aspect, (uv's, f-curve, movie-clip... etc)
* use for conversion and snapping . */
2015-06-26 16:19:39 +10:00
float center [ 3 ] ; /* center of transformation (in local-space) */
float center_global [ 3 ] ; /* center of transformation (in global-space) */
2013-10-12 03:42:06 +00:00
float center2d [ 2 ] ; /* center in screen coordinates */
2016-05-31 23:56:59 +10:00
/* Lazy initialize center data for when we need other center values.
* V3D_AROUND_ACTIVE + 1 ( static assert checks this ) */
TransCenterData center_cache [ 5 ] ;
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
short idx_max ; /* maximum index on the input vector */
float snap [ 3 ] ; /* Snapping Gears */
2015-06-30 18:57:17 +10:00
float snap_spatial [ 3 ] ; /* Spatial snapping gears(even when rotating, scaling... etc) */
2009-01-24 05:38:25 +00:00
char frame_side ; /* Mouse side of the cfra, 'L', 'R' or 'B' */
2009-07-12 02:01:13 +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 viewmat [ 4 ] [ 4 ] ; /* copy from G.vd, prevents feedback, */
float viewinv [ 4 ] [ 4 ] ; /* and to make sure we don't have to */
float persmat [ 4 ] [ 4 ] ; /* access G.vd from other space types */
float persinv [ 4 ] [ 4 ] ;
short persp ;
short around ;
char spacetype ; /* spacetype where transforming is */
2009-04-30 11:47:35 +00:00
char helpline ; /* helpline modes (not to be confused with hotline) */
2009-07-12 02:01:13 +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 vec [ 3 ] ; /* translation, to show for widget */
float mat [ 3 ] [ 3 ] ; /* rot/rescale, to show for widget */
2009-07-12 02:01:13 +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 spacemtx [ 3 ] [ 3 ] ; /* orientation matrix of the current space */
2012-01-11 08:51:06 +00:00
char spacename [ 64 ] ; /* name of the current space, MAX_NAME */
2009-07-12 02:01:13 +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
struct Object * poseobj ; /* if t->flag & T_POSE, this denotes pose object */
2009-07-12 02:01:13 +00:00
2016-02-01 15:15:10 +11:00
/**
* Rule of thumb for choosing between mode / type :
* - If transform mode uses the data , assign to ` mode `
* ( typically in transform . c ) .
* - If conversion uses the data as an extension to the # TransData , assign to ` type `
* ( typically in transform_conversion . c ) .
*/
struct {
/* owned by the mode (grab, scale, bend... )*/
union {
TransCustomData mode , first_elem ;
} ;
/* owned by the type (mesh, armature, nla...) */
TransCustomData type ;
} custom ;
# define TRANS_CUSTOM_DATA_ELEM_MAX (sizeof(((TransInfo *)NULL)->custom) / sizeof(TransCustomData))
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
/*************** NEW STUFF *********************/
2009-12-17 17:50:55 +00:00
short launch_event ; /* event type used to launch transform */
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-06 15:50:15 +00:00
short current_orientation ;
2017-06-01 20:41:18 +02:00
TransformOrientation * custom_orientation ; /* this gets used when current_orientation is V3D_MANIP_CUSTOM */
2009-12-17 17:50:55 +00:00
short twtype ; /* backup from view3d, to restore on end */
2009-03-06 15:50:15 +00:00
short prop_mode ;
2009-10-15 21:54:22 +00:00
short mirror ;
2009-03-06 15:50:15 +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 values [ 4 ] ;
2009-03-06 15:50:15 +00:00
float auto_values [ 4 ] ;
2010-01-04 20:49:42 +00:00
float axis [ 3 ] ;
2010-11-03 04:38:07 +00:00
float axis_orig [ 3 ] ; /* TransCon can change 'axis', store the original value here */
2013-09-17 13:07:48 +00:00
2014-04-17 02:53:11 +10:00
bool remove_on_cancel ; /* remove elements if operator is canceled */
2013-09-17 13:07:48 +00:00
2018-02-06 16:34:11 +11:00
EvaluationContext eval_ctx ;
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 * view ;
2010-11-20 21:43:16 +00:00
struct bContext * context ; /* Only valid (non null) during an operator called function. */
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
struct ScrArea * sa ;
struct ARegion * ar ;
2018-01-18 15:58:02 +01:00
struct Depsgraph * depsgraph ;
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
struct Scene * scene ;
2017-11-22 10:52:39 -02:00
struct ViewLayer * view_layer ;
2017-11-28 15:06:32 +01:00
struct RenderEngineType * engine_type ;
2009-06-23 00:41:55 +00:00
struct ToolSettings * settings ;
2009-02-16 03:01:56 +00:00
struct wmTimer * animtimer ;
2013-02-14 14:01:02 +00:00
struct wmKeyMap * keymap ; /* so we can do lookups for header text */
2013-08-20 06:04:46 +00:00
struct ReportList * reports ; /* assign from the operator, or can be NULL */
2011-05-12 16:47:36 +00:00
int mval [ 2 ] ; /* current mouse position */
2013-03-09 11:40:42 +00:00
float zfac ; /* use for 3d view */
2013-04-12 02:16:44 +00:00
struct Object * obedit ;
float obedit_mat [ 3 ] [ 3 ] ; /* normalized editmode matrix (T_EDIT only) */
2010-03-22 09:30:00 +00:00
void * draw_handle_apply ;
void * draw_handle_view ;
void * draw_handle_pixel ;
void * draw_handle_cursor ;
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
} TransInfo ;
/* ******************** Macros & Prototypes *********************** */
/* transinfo->state */
2009-11-12 19:49:26 +00:00
# define TRANS_STARTING 0
# define TRANS_RUNNING 1
# define TRANS_CONFIRM 2
# define TRANS_CANCEL 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
/* transinfo->flag */
# define T_OBJECT (1 << 0)
# define T_EDIT (1 << 1)
# define T_POSE (1 << 2)
# define T_TEXTURE (1 << 3)
2014-03-01 01:21:25 +11:00
/* transforming the camera while in camera view */
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
# define T_CAMERA (1 << 4)
2010-03-22 09:30:00 +00:00
// trans on points, having no rotation/scale
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
# define T_POINTS (1 << 6)
2017-04-07 00:35:57 +10:00
/* empty slot - (1 << 7) */
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
/* restrictions flags */
# define T_ALL_RESTRICTIONS ((1 << 8)|(1 << 9)|(1 << 10))
# define T_NO_CONSTRAINT (1 << 8)
# define T_NULL_ONE (1 << 9)
# define T_NO_ZERO (1 << 10)
# define T_PROP_EDIT (1 << 11)
# define T_PROP_CONNECTED (1 << 12)
2013-06-20 13:24:07 +00:00
# define T_PROP_PROJECTED (1 << 25)
# define T_PROP_EDIT_ALL (T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED)
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
# define T_V3D_ALIGN (1 << 14)
/* for 2d views like uv or ipo */
2009-07-12 02:01:13 +00:00
# define T_2D_EDIT (1 << 15)
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
# define T_CLIP_UV (1 << 16)
/* auto-ik is on */
# define T_AUTOIK (1 << 18)
2009-03-06 15:50:15 +00:00
# define T_MIRROR (1 << 19)
# define T_AUTOVALUES (1 << 20)
/* to specificy if we save back settings at the end */
# define T_MODAL (1 << 21)
2010-03-28 13:59:33 +00:00
/* no retopo */
# define T_NO_PROJECT (1 << 22)
2010-04-02 19:40:51 +00:00
# define T_RELEASE_CONFIRM (1 << 23)
2011-11-07 12:55:18 +00:00
/* alternative transformation. used to add offset to tracking markers */
# define T_ALT_TRANSFORM (1 << 24)
2017-08-28 16:00:28 +10:00
/** #TransInfo.center has been set, don't change it. */
# define T_OVERRIDE_CENTER (1 << 25)
2009-01-03 22:15:59 +00:00
/* TransInfo->modifiers */
# define MOD_CONSTRAINT_SELECT 0x01
# define MOD_PRECISION 0x02
2009-11-26 19:47:55 +00:00
# define MOD_SNAP 0x04
2009-12-03 19:18:00 +00:00
# define MOD_SNAP_INVERT 0x08
# define MOD_CONSTRAINT_PLANE 0x10
2009-01-03 22:15:59 +00:00
2014-01-21 13:13:41 +01:00
/* use node center for transform instead of upper-left corner.
* disabled since it makes absolute snapping not work so nicely
*/
// #define USE_NODE_CENTER
2009-01-03 22:15:59 +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-04-30 11:47:35 +00:00
/* transinfo->helpline */
# define HLP_NONE 0
# define HLP_SPRING 1
# define HLP_ANGLE 2
# define HLP_HARROW 3
# define HLP_VARROW 4
# define HLP_TRACKBALL 5
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
/* transinfo->con->mode */
# define CON_APPLY 1
# define CON_AXIS0 2
# define CON_AXIS1 4
# define CON_AXIS2 8
# define CON_SELECT 16
# define CON_NOFLIP 32 /* does not reorient vector to face viewport when on */
2009-01-18 21:36:38 +00:00
# define CON_USER 64
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->flag */
# define TD_SELECTED 1
# define TD_NOACTION (1 << 2)
# define TD_USEQUAT (1 << 3)
# define TD_NOTCONNECTED (1 << 4)
# define TD_SINGLESIZE (1 << 5) /* used for scaling of MetaElem->rad */
Merge plane track feature from tomato branch
This commit includes all the changes made for plane tracker
in tomato branch.
Movie clip editor changes:
- Artist might create a plane track out of multiple point
tracks which belongs to the same track (minimum amount of
point tracks is 4, maximum is not actually limited).
When new plane track is added, it's getting "tracked"
across all point tracks, which makes it stick to the same
plane point tracks belong to.
- After plane track was added, it need to be manually adjusted
in a way it covers feature one might to mask/replace.
General transform tools (G, R, S) or sliding corners with
a mouse could be sued for this. Plane corner which
corresponds to left bottom image corner has got X/Y axis
on it (red is for X axis, green for Y).
- Re-adjusting plane corners makes plane to be "re-tracked"
for the frames sequence between current frame and next
and previous keyframes.
- Kayframes might be removed from the plane, using Shit-X
(Marker Delete) operator. However, currently manual
re-adjustment or "re-track" trigger is needed.
Compositor changes:
- Added new node called Plane Track Deform.
- User selects which plane track to use (for this he need
to select movie clip datablock, object and track names).
- Node gets an image input, which need to be warped into
the plane.
- Node outputs:
* Input image warped into the plane.
* Plane, rasterized to a mask.
Masking changes:
- Mask points might be parented to a plane track, which
makes this point deforming in a way as if it belongs
to the tracked plane.
Some video tutorials are available:
- Coder video: http://www.youtube.com/watch?v=vISEwqNHqe4
- Artist video: https://vimeo.com/71727578
This is mine and Keir's holiday code project :)
2013-08-16 09:46:30 +00:00
# define TD_INDIVIDUAL_SCALE (1 << 8) /* Scale relative to individual element 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
# define TD_NOCENTER (1 << 9)
# define TD_NO_EXT (1 << 10) /* ext abused for particle key timing */
# define TD_SKIP (1 << 11) /* don't transform this data */
# define TD_BEZTRIPLE (1 << 12) /* if this is a bez triple, we need to restore the handles, if this is set transdata->misc.hdata needs freeing */
# define TD_NO_LOC (1 << 13) /* when this is set, don't apply translation changes to this element */
2009-01-28 02:56:58 +00:00
# define TD_NOTIMESNAP (1 << 14) /* for Graph Editor autosnap, indicates that point should not undergo autosnapping */
2011-09-25 12:31:21 +00:00
# define TD_INTVALUES (1 << 15) /* for Graph Editor - curves that can only have int-values need their keyframes tagged with this */
# define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */
2010-05-06 19:54:43 +00:00
# define TD_MOVEHANDLE1 (1 << 17) /* For fcurve handles, move them along with their keyframes */
# define TD_MOVEHANDLE2 (1 << 18)
2010-10-24 06:16:44 +00:00
# define TD_PBONE_LOCAL_MTX_P (1 << 19) /* exceptional case with pose bone rotating when a parent bone has 'Local Location' option enabled and rotating also transforms it. */
# define TD_PBONE_LOCAL_MTX_C (1 << 20) /* same as above but for a child bone */
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
/* transsnap->status */
2009-11-26 19:47:55 +00:00
# define SNAP_FORCED 1
# define TARGET_INIT 2
# define POINT_INIT 4
2009-12-01 18:26:18 +00:00
# define MULTI_POINTS 8
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-06-23 16:43:12 +02:00
/* Hard min/max for proportional size. */
# define T_PROP_SIZE_MIN 1e-6f
# define T_PROP_SIZE_MAX 1e12f
2014-04-17 13:46:34 +10:00
bool initTransform ( struct bContext * C , struct TransInfo * t , struct wmOperator * op , const struct wmEvent * event , int mode ) ;
2009-01-03 22:15:59 +00:00
void saveTransform ( struct bContext * C , struct TransInfo * t , struct wmOperator * op ) ;
2013-03-13 09:03:46 +00:00
int transformEvent ( TransInfo * t , const struct wmEvent * event ) ;
2010-11-20 21:43:16 +00:00
void transformApply ( struct bContext * C , TransInfo * t ) ;
2008-12-31 17:11:42 +00:00
int transformEnd ( 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
void setTransformViewMatrices ( TransInfo * t ) ;
2015-06-26 15:45:09 +10:00
void setTransformViewAspect ( TransInfo * t , float r_aspect [ 3 ] ) ;
2015-10-30 17:31:07 +11:00
void convertViewVec ( TransInfo * t , float r_vec [ 3 ] , double dx , double dy ) ;
2013-02-28 11:29:27 +00:00
void projectIntViewEx ( TransInfo * t , const float vec [ 3 ] , int adr [ 2 ] , const eV3DProjTest flag ) ;
2012-03-12 06:53:47 +00:00
void projectIntView ( TransInfo * t , const float vec [ 3 ] , int adr [ 2 ] ) ;
2013-02-28 11:29:27 +00:00
void projectFloatViewEx ( TransInfo * t , const float vec [ 3 ] , float adr [ 2 ] , const eV3DProjTest flag ) ;
2012-03-12 06:53:47 +00:00
void projectFloatView ( TransInfo * t , const float vec [ 3 ] , float adr [ 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
2014-03-30 11:08:33 +11:00
void applyAspectRatio ( TransInfo * t , float vec [ 2 ] ) ;
void removeAspectRatio ( 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
2009-03-28 20:46:38 +00:00
void drawPropCircle ( const struct bContext * C , TransInfo * t ) ;
2009-01-10 18:33:16 +00:00
2009-12-21 17:23:44 +00:00
struct wmKeyMap * transform_modal_keymap ( struct wmKeyConfig * keyconf ) ;
2.5
Modal keymaps.
I've tried to make it as simple as possible, yet still using sufficient facilities to enable self-documenting UIs, saving/reading in files, and proper Python support.
The simplicity is: the 'modal keymap' just checks an event, uses event matching similarly to other keymap matching, and if there's a match it changes the event type, and sets the event value to what the modal keymap has defined. The event values are being defined using EnumPropertyItem structs, so the UI will be able to show all options in self-documenting way.
This system also allows to still handle hardcoded own events.
Tech doc:
1) define keymap
- Create map with unique name, WM_modalkeymap_add()
- Give map property definitions (EnumPropertyItem *)
This only for UI, so user can get information on available options
2) items
- WM_modalkeymap_add_item(): give it an enum value for events
3) activate
- In keymap definition code, assign the modal keymap to operatortype
WM_modalkeymap_assign()
4) event manager
- The event handler will check for modal keymap, if so:
- If the modal map has a match:
- Sets event->type to EVT_MODAL_MAP
- Sets event->val to the enum value
5) modal handler
- If event type is EVT_MODAL_MAP:
- Check event->val, handle it
- Other events can just be handled still
Two examples added in the code:
editors/transform/transform.c: transform_modal_keymap()
editors/screen/screen_ops.c: keymap_modal_set()
Also: to support 'key release' the define KM_RELEASE now is officially
used in event manager, this is not '0', so don't check key events with
the old convention if(event->val) but use if(event->val==KM_PRESS)
2009-07-21 11:03:07 +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
/*********************** transform_conversions.c ********** */
struct ListBase ;
2009-01-28 02:56:58 +00:00
2012-06-08 14:31:38 +00:00
void flushTransIntFrameActionData ( TransInfo * t ) ;
2009-01-28 02:56:58 +00:00
void flushTransGraphData ( TransInfo * t ) ;
void remake_graph_transdata ( TransInfo * t , struct ListBase * anim_data ) ;
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 flushTransUVs ( TransInfo * t ) ;
void flushTransParticles ( TransInfo * t ) ;
2013-04-04 09:20:46 +00:00
bool clipUVTransform ( TransInfo * t , float vec [ 2 ] , const bool resize ) ;
2012-08-06 13:40:29 +00:00
void clipUVData ( TransInfo * t ) ;
2009-01-04 01:08:01 +00:00
void flushTransNodes ( TransInfo * t ) ;
2009-01-21 07:01:20 +00:00
void flushTransSeq ( TransInfo * t ) ;
2011-11-07 12:55:18 +00:00
void flushTransTracking ( TransInfo * t ) ;
2012-06-04 16:42:58 +00:00
void flushTransMasking ( TransInfo * t ) ;
2014-07-21 12:02:05 +02:00
void flushTransPaintCurve ( TransInfo * t ) ;
2014-07-09 19:58:48 +03:00
void restoreBones ( 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
2017-04-07 00:35:57 +10:00
/*********************** transform_manipulator.c ********** */
2017-08-03 08:08:47 +10:00
# define MANIPULATOR_AXIS_LINE_WIDTH 2.0f
2017-04-07 00:35:57 +10:00
2018-02-06 16:34:11 +11:00
/* return 0 when no gimbal for selection */
2018-02-06 23:27:49 +11:00
bool gimbal_axis ( struct Object * ob , float gmat [ 3 ] [ 3 ] , const eObjectMode 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
/*********************** TransData Creation and General Handling *********** */
void createTransData ( struct bContext * C , TransInfo * t ) ;
void sort_trans_data_dist ( TransInfo * t ) ;
2009-12-14 03:20:17 +00:00
void special_aftertrans_update ( struct bContext * C , TransInfo * t ) ;
2013-06-24 22:41:37 +00:00
int special_transform_moving ( 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
void transform_autoik_update ( TransInfo * t , short mode ) ;
2014-11-27 21:37:42 +01:00
bool transdata_check_local_islands ( TransInfo * t , short around ) ;
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-07-12 02:01:13 +00:00
int count_set_pose_transflags ( int * out_mode , short around , struct Object * 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
/* auto-keying stuff used by special_aftertrans_update */
2017-11-23 13:51:49 -02:00
void autokeyframe_ob_cb_func ( struct bContext * C , struct Scene * scene , struct ViewLayer * view_layer , struct View3D * v3d , struct Object * ob , int tmode ) ;
2009-12-14 03:20:17 +00:00
void autokeyframe_pose_cb_func ( struct bContext * C , struct Scene * scene , struct View3D * v3d , struct Object * ob , int tmode , short targetless_ik ) ;
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
/*********************** Constraints *****************************/
2010-10-16 14:32:17 +00:00
void drawConstraint ( TransInfo * t ) ;
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
void getConstraintMatrix ( TransInfo * t ) ;
void setConstraint ( TransInfo * t , float space [ 3 ] [ 3 ] , int mode , const char text [ ] ) ;
2013-05-01 05:26:10 +00:00
void setAxisMatrixConstraint ( TransInfo * t , int mode , const char text [ ] ) ;
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 setLocalConstraint ( TransInfo * t , int mode , const char text [ ] ) ;
2009-10-07 20:55:14 +00:00
void setUserConstraint ( TransInfo * t , short orientation , int mode , const char text [ ] ) ;
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 constraintNumInput ( TransInfo * t , float vec [ 3 ] ) ;
2013-04-04 09:20:46 +00:00
bool isLockConstraint ( TransInfo * t ) ;
int getConstraintSpaceDimension ( 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
char constraintModeToChar ( TransInfo * t ) ;
void startConstraint ( TransInfo * t ) ;
void stopConstraint ( TransInfo * t ) ;
void initSelectConstraint ( TransInfo * t , float mtx [ 3 ] [ 3 ] ) ;
void selectConstraint ( TransInfo * t ) ;
void postSelectConstraint ( TransInfo * t ) ;
void setNearestAxis ( TransInfo * t ) ;
/*********************** Snapping ********************************/
typedef enum {
NO_GEARS = 0 ,
BIG_GEARS = 1 ,
SMALL_GEARS = 2
} GearsType ;
2013-11-06 17:46:32 +00:00
void snapGridIncrement ( TransInfo * t , float * val ) ;
void snapGridIncrementAction ( TransInfo * t , float * val , 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-03-19 20:47:38 +01:00
void snapSequenceBounds ( TransInfo * t , const int mval [ 2 ] ) ;
2014-11-24 18:18:35 +01:00
2013-04-04 09:20:46 +00:00
bool activeSnap ( TransInfo * t ) ;
bool validSnap ( TransInfo * t ) ;
2009-12-03 19:18:00 +00:00
2009-03-29 19:52:53 +00:00
void initSnapping ( struct TransInfo * t , struct wmOperator * op ) ;
2016-04-21 11:29:32 +10:00
void freeSnapping ( struct TransInfo * t ) ;
2009-10-12 22:33:32 +00:00
void applyProject ( TransInfo * t ) ;
2013-11-06 17:46:32 +00:00
void applyGridAbsolute ( 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
void applySnapping ( TransInfo * t , float * vec ) ;
void resetSnapping ( TransInfo * t ) ;
2013-10-23 06:48:36 +00:00
eRedrawFlag handleSnapping ( TransInfo * t , const struct wmEvent * event ) ;
2009-03-28 20:46:38 +00:00
void drawSnapping ( const struct bContext * C , TransInfo * t ) ;
2013-04-04 09:20:46 +00:00
bool usingSnappingNormal ( TransInfo * t ) ;
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
2009-12-01 18:26:18 +00:00
void getSnapPoint ( TransInfo * t , float vec [ 3 ] ) ;
void addSnapPoint ( TransInfo * t ) ;
2013-10-23 06:48:36 +00:00
eRedrawFlag updateSelectedSnapPoint ( TransInfo * t ) ;
2009-12-01 18:26:18 +00:00
void removeSnapPoint ( TransInfo * t ) ;
2008-12-29 20:37:54 +00:00
/********************** Mouse Input ******************************/
typedef enum {
INPUT_NONE ,
INPUT_VECTOR ,
INPUT_SPRING ,
INPUT_SPRING_FLIP ,
2014-06-03 22:02:02 +06:00
INPUT_SPRING_DELTA ,
2008-12-29 20:37:54 +00:00
INPUT_ANGLE ,
2013-10-13 01:09:23 +00:00
INPUT_ANGLE_SPRING ,
2008-12-29 20:37:54 +00:00
INPUT_TRACKBALL ,
INPUT_HORIZONTAL_RATIO ,
INPUT_HORIZONTAL_ABSOLUTE ,
INPUT_VERTICAL_RATIO ,
2009-09-21 00:48:36 +00:00
INPUT_VERTICAL_ABSOLUTE ,
2013-01-31 22:18:37 +00:00
INPUT_CUSTOM_RATIO ,
2014-06-03 22:02:02 +06:00
INPUT_CUSTOM_RATIO_FLIP ,
2008-12-29 20:37:54 +00:00
} MouseInputMode ;
2016-12-15 11:12:43 +01:00
void initMouseInput ( TransInfo * t , MouseInput * mi , const float center [ 2 ] , const int mval [ 2 ] , const bool precision ) ;
2008-12-29 20:37:54 +00:00
void initMouseInputMode ( TransInfo * t , MouseInput * mi , MouseInputMode mode ) ;
2013-10-23 06:48:36 +00:00
eRedrawFlag handleMouseInput ( struct TransInfo * t , struct MouseInput * mi , const struct wmEvent * event ) ;
2011-05-20 07:40:05 +00:00
void applyMouseInput ( struct TransInfo * t , struct MouseInput * mi , const int mval [ 2 ] , float output [ 3 ] ) ;
2008-12-29 20:37:54 +00:00
2013-01-15 03:35:31 +00:00
void setCustomPoints ( TransInfo * t , MouseInput * mi , const int start [ 2 ] , const int end [ 2 ] ) ;
2013-01-14 08:02:06 +00:00
void setInputPostFct ( MouseInput * mi , void ( * post ) ( struct TransInfo * t , float values [ 3 ] ) ) ;
2009-09-21 00:48:36 +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
/*********************** Generics ********************************/
2013-11-25 07:49:49 +11:00
void initTransInfo ( struct bContext * C , TransInfo * t , struct wmOperator * op , const struct wmEvent * event ) ;
2013-04-18 01:52:38 +00:00
void postTrans ( struct bContext * C , TransInfo * t ) ;
2013-04-24 15:15:01 +00:00
void resetTransModal ( 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
void resetTransRestrictions ( TransInfo * t ) ;
2012-08-05 20:40:26 +00:00
void drawLine ( TransInfo * t , const float center [ 3 ] , const float dir [ 3 ] , char axis , short options ) ;
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
/* DRAWLINE options flags */
# define DRAWLIGHT 1
void applyTransObjects ( TransInfo * t ) ;
void restoreTransObjects ( TransInfo * t ) ;
void recalcData ( TransInfo * t ) ;
void calculateCenter2D ( TransInfo * t ) ;
2016-05-31 23:56:59 +10:00
void calculateCenterGlobal (
TransInfo * t , const float center_local [ 3 ] ,
float r_center_global [ 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-05-31 23:56:59 +10:00
const TransCenterData * transformCenter_from_type ( TransInfo * t , int around ) ;
2014-05-09 16:52:09 +10:00
void calculateCenter ( TransInfo * t ) ;
/* API functions for getting center points */
void calculateCenterBound ( TransInfo * t , float r_center [ 3 ] ) ;
void calculateCenterMedian ( TransInfo * t , float r_center [ 3 ] ) ;
void calculateCenterCursor ( TransInfo * t , float r_center [ 3 ] ) ;
void calculateCenterCursor2D ( TransInfo * t , float r_center [ 2 ] ) ;
void calculateCenterCursorGraph2D ( TransInfo * t , float r_center [ 2 ] ) ;
bool calculateCenterActive ( TransInfo * t , bool select_only , float r_center [ 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
void calculatePropRatio ( TransInfo * t ) ;
void getViewVector ( TransInfo * t , float coord [ 3 ] , float vec [ 3 ] ) ;
2015-07-14 04:27:32 +10:00
void transform_data_ext_rotate ( TransData * td , float mat [ 3 ] [ 3 ] , bool use_drot ) ;
2009-01-18 21:36:38 +00:00
/*********************** Transform Orientations ******************************/
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-18 21:36:38 +00:00
void initTransformOrientation ( 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
/* Those two fill in mat and return non-zero on success */
2013-04-04 09:20:46 +00:00
bool createSpaceNormal ( float mat [ 3 ] [ 3 ] , const float normal [ 3 ] ) ;
2013-07-24 13:56:36 +00:00
bool createSpaceNormalTangent ( float mat [ 3 ] [ 3 ] , const float normal [ 3 ] , const float tangent [ 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
2013-11-25 07:49:49 +11:00
struct TransformOrientation * addMatrixSpace ( struct bContext * C , float mat [ 3 ] [ 3 ] ,
const char * name , const bool overwrite ) ;
2017-06-01 20:41:18 +02:00
bool applyTransformOrientation ( const struct TransformOrientation * ts , float r_mat [ 3 ] [ 3 ] , char r_name [ 64 ] ) ;
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
# define ORIENTATION_NONE 0
# define ORIENTATION_NORMAL 1
# define ORIENTATION_VERT 2
# define ORIENTATION_EDGE 3
# define ORIENTATION_FACE 4
2015-09-09 02:05:10 +10:00
int getTransformOrientation_ex ( const struct bContext * C , float normal [ 3 ] , float plane [ 3 ] , const short around ) ;
int getTransformOrientation ( const struct bContext * C , float normal [ 3 ] , float plane [ 3 ] ) ;
2009-11-06 10:38:00 +00:00
2013-01-13 05:19:47 +00:00
void freeEdgeSlideTempFaces ( EdgeSlideData * sld ) ;
2016-02-01 15:15:10 +11:00
void freeEdgeSlideVerts ( TransInfo * t , TransCustomData * custom_data ) ;
2013-01-13 05:19:47 +00:00
void projectEdgeSlideData ( TransInfo * t , bool is_final ) ;
2009-09-22 08:41:03 +00:00
2015-01-12 02:18:20 +11:00
void freeVertSlideTempFaces ( VertSlideData * sld ) ;
2016-02-01 15:15:10 +11:00
void freeVertSlideVerts ( TransInfo * t , TransCustomData * custom_data ) ;
2015-01-12 02:18:20 +11:00
void projectVertSlideData ( TransInfo * t , bool is_final ) ;
2013-01-13 14:08:53 +00:00
2013-02-18 16:35:13 +00:00
/* TODO. transform_queries.c */
2013-05-01 05:26:10 +00:00
bool checkUseAxisMatrix ( TransInfo * t ) ;
2013-02-18 16:35:13 +00:00
2016-04-21 11:29:32 +10:00
# define TRANSFORM_DIST_MAX_PX 1000.0f
# define TRANSFORM_SNAP_MAX_PX 100.0f
# define TRANSFORM_DIST_INVALID -FLT_MAX
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
# endif