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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-06-23 04:41:55 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-06-23 04:41:55 +0400
commite2b6cea3b95ca41854661726ccea684421738c8f (patch)
tree8f0feed0ee4e3af460145984f183f24ef111d044
parent272fac8fd6e8c64472c856b85994f841678f172c (diff)
2.5: Tool Settings
* Moved proportional edit, snap, autokey mode, and a few others from Scene to ToolSettings. * RNA wrapped properties in ToolSettings for the UV editor: proportional edit, snap settings, selection modes.
-rw-r--r--source/blender/blenkernel/intern/scene.c7
-rw-r--r--source/blender/blenloader/intern/readfile.c89
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c105
-rw-r--r--source/blender/editors/include/ED_keyframing.h4
-rw-r--r--source/blender/editors/include/UI_icons.h2
-rw-r--r--source/blender/editors/mesh/editmesh.c2
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c2
-rw-r--r--source/blender/editors/object/object_edit.c2
-rw-r--r--source/blender/editors/physics/editparticle.c32
-rw-r--r--source/blender/editors/space_image/image_header.c14
-rw-r--r--source/blender/editors/space_time/time_header.c4
-rw-r--r--source/blender/editors/space_view3d/drawobject.c56
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c124
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c21
-rw-r--r--source/blender/editors/transform/transform.c14
-rw-r--r--source/blender/editors/transform/transform.h1
-rw-r--r--source/blender/editors/transform/transform_conversions.c10
-rw-r--r--source/blender/editors/transform/transform_generics.c12
-rw-r--r--source/blender/editors/transform/transform_snap.c19
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c22
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c112
-rw-r--r--source/blender/makesdna/DNA_scene_types.h61
-rw-r--r--source/blender/makesdna/DNA_space_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_scene.c98
-rw-r--r--source/blender/makesrna/intern/rna_wm.c2
26 files changed, 470 insertions, 349 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 3b51af57e0b..23da5c66850 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -203,9 +203,6 @@ Scene *add_scene(char *name)
sce= alloc_libblock(&G.main->scene, ID_SCE, name);
sce->lay= 1;
- sce->selectmode= SCE_SELECT_VERTEX;
- sce->editbutsize= 0.1;
- sce->autokey_mode= U.autokey_mode;
sce->r.mode= R_GAMMA;
sce->r.cfra= 1;
@@ -275,6 +272,10 @@ Scene *add_scene(char *name)
sce->toolsettings->select_thresh= 0.01f;
sce->toolsettings->jointrilimit = 0.8f;
+ sce->toolsettings->selectmode= SCE_SELECT_VERTEX;
+ sce->toolsettings->normalsize= 0.1;
+ sce->toolsettings->autokey_mode= U.autokey_mode;
+
sce->toolsettings->skgen_resolution = 100;
sce->toolsettings->skgen_threshold_internal = 0.01f;
sce->toolsettings->skgen_threshold_external = 0.01f;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 48aa3f6a3b7..54caad7f35b 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7102,22 +7102,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
if(main->versionfile <= 234) {
- Scene *sce;
World *wo;
bScreen *sc;
- int set_zbuf_sel=0;
// force sumo engine to be active
for (wo = main->world.first; wo; wo= wo->id.next) {
if(wo->physicsEngine==0) wo->physicsEngine = 2;
}
- for (sce= main->scene.first; sce; sce= sce->id.next) {
- if(sce->selectmode==0) {
- sce->selectmode= SCE_SELECT_VERTEX;
- set_zbuf_sel= 1;
- }
- }
for (sc= main->screen.first; sc; sc= sc->id.next) {
ScrArea *sa;
for (sa= sc->areabase.first; sa; sa= sa->next) {
@@ -7125,7 +7117,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
for (sl= sa->spacedata.first; sl; sl= sl->next) {
if(sl->spacetype==SPACE_VIEW3D) {
View3D *v3d= (View3D *)sl;
- if(set_zbuf_sel) v3d->flag |= V3D_ZBUF_SELECT;
+ v3d->flag |= V3D_ZBUF_SELECT;
}
else if(sl->spacetype==SPACE_TEXT) {
SpaceText *st= (SpaceText *)sl;
@@ -7160,16 +7152,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
if(main->versionfile <= 236) {
Object *ob;
- Scene *sce= main->scene.first;
Camera *cam= main->camera.first;
Material *ma;
bScreen *sc;
- while(sce) {
- if(sce->editbutsize==0.0) sce->editbutsize= 0.1f;
-
- sce= sce->id.next;
- }
while(cam) {
if(cam->ortho_scale==0.0) {
cam->ortho_scale= 256.0f/cam->lens;
@@ -8795,15 +8781,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
}
- /* autokey mode settings now used from scene, but need to be initialised off userprefs */
- if (main->versionfile < 247 || (main->versionfile == 247 && main->subversionfile < 8)) {
- Scene *sce;
-
- for (sce= main->scene.first; sce; sce= sce->id.next) {
- if (sce->autokey_mode == 0)
- sce->autokey_mode= U.autokey_mode;
- }
- }
if (main->versionfile < 247 || (main->versionfile == 247 && main->subversionfile < 9)) {
Lamp *la= main->lamp.first;
@@ -8996,6 +8973,34 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
+ if (main->versionfile < 249 && main->subversionfile < 2) {
+ Scene *sce= main->scene.first;
+ Sequence *seq;
+ Editing *ed;
+
+ while(sce) {
+ ed= sce->ed;
+ if(ed) {
+ SEQP_BEGIN(ed, seq) {
+ if (seq->strip && seq->strip->proxy){
+ if (sce->r.size != 100.0) {
+ seq->strip->proxy->size
+ = sce->r.size;
+ } else {
+ seq->strip->proxy->size
+ = 25.0;
+ }
+ seq->strip->proxy->quality =90;
+ }
+ }
+ SEQ_END
+ }
+
+ sce= sce->id.next;
+ }
+
+ }
+
if (main->versionfile < 250) {
bScreen *screen;
Scene *scene;
@@ -9081,6 +9086,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
{
Object *ob;
Material *ma;
+ Scene *sce;
+ ToolSettings *ts;
int i;
for(ob = main->object.first; ob; ob = ob->id.next) {
@@ -9153,37 +9160,17 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ma->mode &= ~MA_HALO;
}
}
- }
-
- if (main->versionfile < 249 && main->subversionfile < 2) {
- Scene *sce= main->scene.first;
- Sequence *seq;
- Editing *ed;
-
- while(sce) {
- ed= sce->ed;
- if(ed) {
- SEQP_BEGIN(ed, seq) {
- if (seq->strip && seq->strip->proxy){
- if (sce->r.size != 100.0) {
- seq->strip->proxy->size
- = sce->r.size;
- } else {
- seq->strip->proxy->size
- = 25.0;
- }
- seq->strip->proxy->quality =90;
- }
- }
- SEQ_END
+
+ for(sce = main->scene.first; sce; sce = sce->id.next) {
+ ts= sce->toolsettings;
+ if(ts->normalsize == 0.0) {
+ ts->normalsize= 0.1f;
+ ts->selectmode= SCE_SELECT_VERTEX;
+ ts->autokey_mode= U.autokey_mode;
}
-
- sce= sce->id.next;
}
-
}
-
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index f010abdb7e7..fb030b91ce1 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -243,6 +243,7 @@ void BIF_makeListTemplates(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
Base *base;
int index = 0;
@@ -263,7 +264,7 @@ void BIF_makeListTemplates(bContext *C)
index++;
BLI_ghash_insert(TEMPLATES_HASH, SET_INT_IN_POINTER(index), ob);
- if (ob == scene->toolsettings->skgen_template)
+ if (ob == ts->skgen_template)
{
TEMPLATES_CURRENT = index;
}
@@ -305,8 +306,9 @@ char *BIF_listTemplates(bContext *C)
int BIF_currentTemplate(bContext *C)
{
- Scene *scene = CTX_data_scene(C);
- if (TEMPLATES_CURRENT == 0 && scene->toolsettings->skgen_template != NULL)
+ ToolSettings *ts = CTX_data_tool_settings(C);
+
+ if (TEMPLATES_CURRENT == 0 && ts->skgen_template != NULL)
{
GHashIterator ghi;
BLI_ghashIterator_init(&ghi, TEMPLATES_HASH);
@@ -316,7 +318,7 @@ int BIF_currentTemplate(bContext *C)
Object *ob = BLI_ghashIterator_getValue(&ghi);
int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
- if (ob == scene->toolsettings->skgen_template)
+ if (ob == ts->skgen_template)
{
TEMPLATES_CURRENT = key;
break;
@@ -360,8 +362,8 @@ RigGraph* sk_makeTemplateGraph(bContext *C, Object *ob)
int BIF_nbJointsTemplate(bContext *C)
{
- Scene *scene = CTX_data_scene(C);
- RigGraph *rg = sk_makeTemplateGraph(C, scene->toolsettings->skgen_template);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ RigGraph *rg = sk_makeTemplateGraph(C, ts->skgen_template);
if (rg)
{
@@ -375,7 +377,7 @@ int BIF_nbJointsTemplate(bContext *C)
char * BIF_nameBoneTemplate(bContext *C)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
SK_Sketch *stk = GLOBAL_sketch;
RigGraph *rg;
int index = 0;
@@ -385,7 +387,7 @@ char * BIF_nameBoneTemplate(bContext *C)
index = stk->active_stroke->nb_points;
}
- rg = sk_makeTemplateGraph(C, scene->toolsettings->skgen_template);
+ rg = sk_makeTemplateGraph(C, ts->skgen_template);
if (rg == NULL)
{
@@ -418,14 +420,14 @@ void BIF_freeTemplates(bContext *C)
void BIF_setTemplate(bContext *C, int index)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (index > 0)
{
- scene->toolsettings->skgen_template = BLI_ghash_lookup(TEMPLATES_HASH, SET_INT_IN_POINTER(index));
+ ts->skgen_template = BLI_ghash_lookup(TEMPLATES_HASH, SET_INT_IN_POINTER(index));
}
else
{
- scene->toolsettings->skgen_template = NULL;
+ ts->skgen_template = NULL;
if (TEMPLATE_RIGG != NULL)
{
@@ -439,19 +441,19 @@ void BIF_setTemplate(bContext *C, int index)
void sk_autoname(bContext *C, ReebArc *arc)
{
- Scene *scene = CTX_data_scene(C);
- if (scene->toolsettings->skgen_retarget_options & SK_RETARGET_AUTONAME)
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ if (ts->skgen_retarget_options & SK_RETARGET_AUTONAME)
{
if (arc == NULL)
{
- char *num = scene->toolsettings->skgen_num_string;
+ char *num = ts->skgen_num_string;
int i = atoi(num);
i++;
BLI_snprintf(num, 8, "%i", i);
}
else
{
- char *side = scene->toolsettings->skgen_side_string;
+ char *side = ts->skgen_side_string;
int valid = 0;
int caps = 0;
@@ -525,7 +527,7 @@ ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3])
void sk_retargetStroke(bContext *C, SK_Stroke *stk)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
Object *obedit = CTX_data_edit_object(C);
float imat[4][4];
float tmat[3][3];
@@ -541,7 +543,7 @@ void sk_retargetStroke(bContext *C, SK_Stroke *stk)
sk_autoname(C, arc);
- rg = sk_makeTemplateGraph(C, scene->toolsettings->skgen_template);
+ rg = sk_makeTemplateGraph(C, ts->skgen_template);
BIF_retargetArc(C, arc, rg);
@@ -1408,10 +1410,10 @@ void sk_startStroke(SK_Sketch *sketch)
void sk_endStroke(bContext *C, SK_Sketch *sketch)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
sk_shrinkStrokeBuffer(sketch->active_stroke);
- if (scene->toolsettings->bone_sketching & BONE_SKETCHING_ADJUST)
+ if (ts->bone_sketching & BONE_SKETCHING_ADJUST)
{
sk_endOverdraw(sketch);
}
@@ -1521,10 +1523,10 @@ int sk_addStrokeDrawPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_Dra
int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
int point_added = 0;
- if (scene->snap_mode == SCE_SNAP_MODE_VOLUME)
+ if (ts->snap_mode == SCE_SNAP_MODE_VOLUME)
{
ListBase depth_peels;
DepthPeel *p1, *p2;
@@ -1557,7 +1559,7 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
p1->flag = 1;
/* if peeling objects, take the first and last from each object */
- if (scene->snap_flag & SCE_SNAP_PEEL_OBJECT)
+ if (ts->snap_flag & SCE_SNAP_PEEL_OBJECT)
{
DepthPeel *peel;
for (peel = p1->next; peel; peel = peel->next)
@@ -1627,7 +1629,7 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
int dist = SNAP_MIN_DISTANCE; // Use a user defined value here
/* snap to strokes */
- // if (scene->snap_mode == SCE_SNAP_MODE_VERTEX) /* snap all the time to strokes */
+ // if (ts->snap_mode == SCE_SNAP_MODE_VERTEX) /* snap all the time to strokes */
for (snap_stk = sketch->strokes.first; snap_stk; snap_stk = snap_stk->next)
{
SK_Point *spt = NULL;
@@ -1713,7 +1715,7 @@ int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_Dra
void sk_addStrokePoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd, short snap)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
int point_added = 0;
if (snap)
@@ -1726,7 +1728,7 @@ void sk_addStrokePoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
point_added = sk_addStrokeDrawPoint(C, sketch, stk, dd);
}
- if (stk == sketch->active_stroke && scene->toolsettings->bone_sketching & BONE_SKETCHING_ADJUST)
+ if (stk == sketch->active_stroke && ts->bone_sketching & BONE_SKETCHING_ADJUST)
{
sk_updateOverdraw(C, sketch, stk, dd);
}
@@ -1951,7 +1953,7 @@ static int iteratorStopped(void *arg)
void sk_convertStroke(bContext *C, SK_Stroke *stk)
{
Object *obedit = CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
bArmature *arm = obedit->data;
SK_Point *head;
EditBone *parent = NULL;
@@ -1990,17 +1992,17 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
initStrokeIterator(iter, stk, head_index, i);
- if (scene->toolsettings->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE)
+ if (ts->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE)
{
- bone = subdivideArcBy(scene->toolsettings, arm, arm->edbo, iter, invmat, tmat, nextAdaptativeSubdivision);
+ bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextAdaptativeSubdivision);
}
- else if (scene->toolsettings->bone_sketching_convert == SK_CONVERT_CUT_LENGTH)
+ else if (ts->bone_sketching_convert == SK_CONVERT_CUT_LENGTH)
{
- bone = subdivideArcBy(scene->toolsettings, arm, arm->edbo, iter, invmat, tmat, nextLengthSubdivision);
+ bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextLengthSubdivision);
}
- else if (scene->toolsettings->bone_sketching_convert == SK_CONVERT_CUT_FIXED)
+ else if (ts->bone_sketching_convert == SK_CONVERT_CUT_FIXED)
{
- bone = subdivideArcBy(scene->toolsettings, arm, arm->edbo, iter, invmat, tmat, nextFixedSubdivision);
+ bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextFixedSubdivision);
}
}
@@ -2042,14 +2044,14 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
void sk_convert(bContext *C, SK_Sketch *sketch)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
SK_Stroke *stk;
for (stk = sketch->strokes.first; stk; stk = stk->next)
{
if (stk->selected == 1)
{
- if (scene->toolsettings->bone_sketching_convert == SK_CONVERT_RETARGET)
+ if (ts->bone_sketching_convert == SK_CONVERT_RETARGET)
{
sk_retargetStroke(C, stk);
}
@@ -2693,7 +2695,7 @@ void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend)
rect.ymin= mval[1]-5;
rect.ymax= mval[1]+5;
- hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
+ hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
if (hits>0)
{
@@ -2743,6 +2745,7 @@ void sk_queueRedrawSketch(SK_Sketch *sketch)
void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
{
+ ToolSettings *ts= scene->toolsettings;
SK_Stroke *stk;
glDisable(GL_DEPTH_TEST);
@@ -2779,7 +2782,7 @@ void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
if (stk->selected == 1)
{
- sk_drawStrokeSubdivision(scene->toolsettings, stk);
+ sk_drawStrokeSubdivision(ts, stk);
}
}
@@ -2794,9 +2797,9 @@ void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
{
SK_Point *last = sk_lastStrokePoint(sketch->active_stroke);
- if (scene->toolsettings->bone_sketching & BONE_SKETCHING_QUICK)
+ if (ts->bone_sketching & BONE_SKETCHING_QUICK)
{
- sk_drawStrokeSubdivision(scene->toolsettings, sketch->active_stroke);
+ sk_drawStrokeSubdivision(ts, sketch->active_stroke);
}
if (last != NULL)
@@ -2839,7 +2842,7 @@ void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
int sk_finish_stroke(bContext *C, SK_Sketch *sketch)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (sketch->active_stroke != NULL)
{
@@ -2847,9 +2850,9 @@ int sk_finish_stroke(bContext *C, SK_Sketch *sketch)
sk_endStroke(C, sketch);
- if (scene->toolsettings->bone_sketching & BONE_SKETCHING_QUICK)
+ if (ts->bone_sketching & BONE_SKETCHING_QUICK)
{
- if (scene->toolsettings->bone_sketching_convert == SK_CONVERT_RETARGET)
+ if (ts->bone_sketching_convert == SK_CONVERT_RETARGET)
{
sk_retargetStroke(C, stk);
}
@@ -3196,11 +3199,11 @@ static int sketch_draw_preview(bContext *C, wmOperator *op, wmEvent *event)
int ED_operator_sketch_mode_active_stroke(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (obedit &&
obedit->type == OB_ARMATURE &&
- scene->toolsettings->bone_sketching & BONE_SKETCHING &&
+ ts->bone_sketching & BONE_SKETCHING &&
GLOBAL_sketch != NULL &&
GLOBAL_sketch->active_stroke != NULL)
{
@@ -3215,12 +3218,12 @@ int ED_operator_sketch_mode_active_stroke(bContext *C)
int ED_operator_sketch_mode_gesture(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (obedit &&
obedit->type == OB_ARMATURE &&
- scene->toolsettings->bone_sketching & BONE_SKETCHING &&
- (scene->toolsettings->bone_sketching & BONE_SKETCHING_QUICK) == 0 &&
+ ts->bone_sketching & BONE_SKETCHING &&
+ (ts->bone_sketching & BONE_SKETCHING_QUICK) == 0 &&
GLOBAL_sketch != NULL &&
GLOBAL_sketch->active_stroke == NULL)
{
@@ -3235,12 +3238,12 @@ int ED_operator_sketch_mode_gesture(bContext *C)
int ED_operator_sketch_full_mode(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (obedit &&
obedit->type == OB_ARMATURE &&
- scene->toolsettings->bone_sketching & BONE_SKETCHING &&
- (scene->toolsettings->bone_sketching & BONE_SKETCHING_QUICK) == 0)
+ ts->bone_sketching & BONE_SKETCHING &&
+ (ts->bone_sketching & BONE_SKETCHING_QUICK) == 0)
{
return 1;
}
@@ -3253,11 +3256,11 @@ int ED_operator_sketch_full_mode(bContext *C)
int ED_operator_sketch_mode(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
if (obedit &&
obedit->type == OB_ARMATURE &&
- scene->toolsettings->bone_sketching & BONE_SKETCHING)
+ ts->bone_sketching & BONE_SKETCHING)
{
return 1;
}
diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h
index a15a258d45a..9d063910aa9 100644
--- a/source/blender/editors/include/ED_keyframing.h
+++ b/source/blender/editors/include/ED_keyframing.h
@@ -178,9 +178,9 @@ void ANIM_OT_remove_driver_button(struct wmOperatorType *ot);
/* Auto-Keying macros for use by various tools */
/* check if auto-keyframing is enabled (per scene takes presidence) */
-#define IS_AUTOKEY_ON(scene) ((scene) ? (scene->autokey_mode & AUTOKEY_ON) : (U.autokey_mode & AUTOKEY_ON))
+#define IS_AUTOKEY_ON(scene) ((scene) ? (scene->toolsettings->autokey_mode & AUTOKEY_ON) : (U.autokey_mode & AUTOKEY_ON))
/* check the mode for auto-keyframing (per scene takes presidence) */
-#define IS_AUTOKEY_MODE(scene, mode) ((scene) ? (scene->autokey_mode == AUTOKEY_MODE_##mode) : (U.autokey_mode == AUTOKEY_MODE_##mode))
+#define IS_AUTOKEY_MODE(scene, mode) ((scene) ? (scene->toolsettings->autokey_mode == AUTOKEY_MODE_##mode) : (U.autokey_mode == AUTOKEY_MODE_##mode))
/* check if a flag is set for auto-keyframing (as userprefs only!) */
#define IS_AUTOKEY_FLAG(flag) (U.autokey_flag & AUTOKEY_FLAG_##flag)
diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h
index a38dfd93c30..884020ae7dc 100644
--- a/source/blender/editors/include/UI_icons.h
+++ b/source/blender/editors/include/UI_icons.h
@@ -74,8 +74,8 @@ DEF_ICON(ICON_CHECKBOX_DEHLT)
DEF_ICON(ICON_CHECKBOX_HLT)
DEF_ICON(ICON_UNLOCKED)
DEF_ICON(ICON_LOCKED)
-DEF_ICON(ICON_PINNED)
DEF_ICON(ICON_UNPINNED)
+DEF_ICON(ICON_PINNED)
DEF_ICON(ICON_BLANK015)
DEF_ICON(ICON_RIGHTARROW)
DEF_ICON(ICON_DOWNARROW_HLT)
diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c
index dd003d103d5..c05751feddc 100644
--- a/source/blender/editors/mesh/editmesh.c
+++ b/source/blender/editors/mesh/editmesh.c
@@ -841,7 +841,7 @@ void make_editMesh(Scene *scene, Object *ob)
em= me->edit_mesh;
- em->selectmode= scene->selectmode; // warning needs to be synced
+ em->selectmode= scene->toolsettings->selectmode; // warning needs to be synced
em->act_face = NULL;
em->totvert= tot= me->totvert;
em->totedge= me->totedge;
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index a1f8b3251c8..07ed6ae7a01 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -3531,7 +3531,7 @@ static void mesh_selection_type(Scene *scene, EditMesh *em, int val)
/* note, em stores selectmode to be able to pass it on everywhere without scene,
this is only until all select modes and toolsettings are settled more */
- scene->selectmode= em->selectmode;
+ scene->toolsettings->selectmode= em->selectmode;
// if (EM_texFaceCheck())
}
}
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 74a1fc12631..7a75e3875ea 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -3661,7 +3661,7 @@ void special_editmenu(Scene *scene, View3D *v3d)
if(!psys)
return;
- if(scene->selectmode & SCE_SELECT_POINT)
+ if(pset->selectmode & SCE_SELECT_POINT)
nr= pupmenu("Specials%t|Rekey%x1|Subdivide%x2|Select First%x3|Select Last%x4|Remove Doubles%x5");
else
nr= pupmenu("Specials%t|Rekey%x1|Remove Doubles%x5");
diff --git a/source/blender/editors/physics/editparticle.c b/source/blender/editors/physics/editparticle.c
index a9fc65bdc37..1b6b5b43522 100644
--- a/source/blender/editors/physics/editparticle.c
+++ b/source/blender/editors/physics/editparticle.c
@@ -225,7 +225,7 @@ void PE_hide_keys_time(Scene *scene, ParticleSystem *psys, float cfra)
ParticleEditSettings *pset=PE_settings(scene);
int i, k, totpart= psys->totpart;
- if(pset->draw_timed && scene->selectmode==SCE_SELECT_POINT) {
+ if(pset->draw_timed && pset->selectmode==SCE_SELECT_POINT) {
LOOP_PARTICLES(i, pa) {
LOOP_KEYS(k, key) {
if(fabs(cfra-*key->time) < pset->draw_timed)
@@ -425,11 +425,12 @@ static void for_mouse_hit_keys(PEData *data, ForKeyFunc func, int nearest)
ParticleEdit *edit= psys->edit;
ParticleData *pa;
ParticleEditKey *key;
+ ParticleEditSettings *pset= PE_settings(data->scene);
int i, k, totpart, nearest_pa, nearest_key;
float dist= data->rad;
/* in path select mode we have no keys */
- if(data->scene->selectmode==SCE_SELECT_PATH)
+ if(pset->selectmode==SCE_SELECT_PATH)
return;
totpart= psys->totpart;
@@ -439,7 +440,7 @@ static void for_mouse_hit_keys(PEData *data, ForKeyFunc func, int nearest)
LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
- if(data->scene->selectmode == SCE_SELECT_END) {
+ if(pset->selectmode == SCE_SELECT_END) {
/* only do end keys */
key= edit->keys[i] + pa->totkey-1;
@@ -481,18 +482,19 @@ static void foreach_mouse_hit_particle(PEData *data, ForParticleFunc func, int s
ParticleSystem *psys= data->psys;
ParticleData *pa;
ParticleEditKey *key;
+ ParticleEditSettings *pset= PE_settings(data->scene);
int i, k, totpart;
totpart= psys->totpart;
/* all is selected in path mode */
- if(data->scene->selectmode==SCE_SELECT_PATH)
+ if(pset->selectmode==SCE_SELECT_PATH)
selected=0;
LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
- if(data->scene->selectmode==SCE_SELECT_END) {
+ if(pset->selectmode==SCE_SELECT_END) {
/* only do end keys */
key= psys->edit->keys[i] + pa->totkey-1;
@@ -522,6 +524,7 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
ParticleData *pa;
ParticleEditKey *key;
ParticleSystemModifierData *psmd=0;
+ ParticleEditSettings *pset= PE_settings(data->scene);
int i, k, totpart;
float mat[4][4], imat[4][4];
@@ -529,7 +532,7 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
totpart= psys->totpart;
/* all is selected in path mode */
- if(data->scene->selectmode==SCE_SELECT_PATH)
+ if(pset->selectmode==SCE_SELECT_PATH)
selected= 0;
Mat4One(imat);
@@ -541,7 +544,7 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, pa, mat);
Mat4Invert(imat,mat);
- if(data->scene->selectmode==SCE_SELECT_END) {
+ if(pset->selectmode==SCE_SELECT_END) {
/* only do end keys */
key= psys->edit->keys[i] + pa->totkey-1;
@@ -610,6 +613,7 @@ static int count_selected_keys(Scene *scene, ParticleSystem *psys)
{
ParticleData *pa;
ParticleEditKey *key;
+ ParticleEditSettings *pset= PE_settings(scene);
int i, k, totpart, sel= 0;
totpart= psys->totpart;
@@ -619,12 +623,12 @@ static int count_selected_keys(Scene *scene, ParticleSystem *psys)
key= psys->edit->keys[i];
- if(scene->selectmode==SCE_SELECT_POINT) {
+ if(pset->selectmode==SCE_SELECT_POINT) {
for(k=0; k<pa->totkey; k++,key++)
if(key->flag & PEK_SELECT)
sel++;
}
- else if(scene->selectmode==SCE_SELECT_END) {
+ else if(pset->selectmode==SCE_SELECT_END) {
key += pa->totkey-1;
if(key->flag & PEK_SELECT)
@@ -1454,6 +1458,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
ParticleEdit *edit;
ParticleData *pa;
ParticleEditKey *key;
+ ParticleEditSettings *pset= PE_settings(scene);
float co[3], mat[4][4];
short vertco[2];
int i, k, totpart;
@@ -1470,7 +1475,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, mat);
- if(scene->selectmode==SCE_SELECT_POINT) {
+ if(pset->selectmode==SCE_SELECT_POINT) {
LOOP_KEYS(k, key) {
VECCOPY(co, key->co);
Mat4MulVecfl(mat, co);
@@ -1487,7 +1492,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
}
}
}
- else if(scene->selectmode==SCE_SELECT_END) {
+ else if(pset->selectmode==SCE_SELECT_END) {
key= edit->keys[i] + pa->totkey - 1;
VECCOPY(co, key->co);
@@ -2349,7 +2354,7 @@ enum { DEL_PARTICLE, DEL_KEY };
static EnumPropertyItem delete_type_items[]= {
{DEL_PARTICLE, "PARTICLE", 0, "Particle", ""},
{DEL_KEY, "KEY", 0, "Key", ""},
- {0, NULL, NULL}};
+ {0, NULL, 0, NULL, NULL}};
static void set_delete_particle(PEData *data, int pa_index)
{
@@ -3842,6 +3847,7 @@ void PE_change_act_psys(Scene *scene, Object *ob, ParticleSystem *psys)
static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
Scene *scene= CTX_data_scene(C);
+ ParticleEditSettings *pset=PE_settings(scene);
uiPopupMenu *pup;
uiLayout *layout;
@@ -3849,7 +3855,7 @@ static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
layout= uiPupMenuLayout(pup);
uiItemO(layout, NULL, 0, "PARTICLE_OT_rekey");
- if(scene->selectmode & SCE_SELECT_POINT) {
+ if(pset->selectmode & SCE_SELECT_POINT) {
uiItemO(layout, NULL, 0, "PARTICLE_OT_subdivide");
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_first");
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_last");
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index adf4772efde..9550c4c3a29 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -802,11 +802,11 @@ void image_header_buttons(const bContext *C, ARegion *ar)
uiBlockBeginAlign(block);
uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_REDR, ICON_VERTEXSEL,
- xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
+ xco,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_REDR, ICON_EDGESEL,
- xco+=XIC,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
+ xco+=XIC,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_REDR, ICON_FACESEL,
- xco+=XIC,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
+ xco+=XIC,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
uiBlockEndAlign(block);
}
@@ -837,14 +837,14 @@ void image_header_buttons(const bContext *C, ARegion *ar)
/* snap options, identical to options in 3d view header */
uiBlockBeginAlign(block);
- if (scene->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab).");
+ if (scene->toolsettings->snap_flag & SCE_SNAP) {
+ uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->toolsettings->snap_flag, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab).");
xco+= XIC;
- uiDefButS(block, MENU, B_NOP, "Mode%t|Closest%x0|Center%x1|Median%x2",xco,yco,70,YIC, &scene->snap_target, 0, 0, 0, 0, "Snap Target Mode.");
+ uiDefButS(block, MENU, B_NOP, "Mode%t|Closest%x0|Center%x1|Median%x2",xco,yco,70,YIC, &scene->toolsettings->snap_target, 0, 0, 0, 0, "Snap Target Mode.");
xco+= 70;
}
else {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab).");
+ uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &scene->toolsettings->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab).");
xco+= XIC;
}
diff --git a/source/blender/editors/space_time/time_header.c b/source/blender/editors/space_time/time_header.c
index cf9c12f3dff..29f31671670 100644
--- a/source/blender/editors/space_time/time_header.c
+++ b/source/blender/editors/space_time/time_header.c
@@ -567,12 +567,12 @@ void time_header_buttons(const bContext *C, ARegion *ar)
uiBlockBeginAlign(block);
uiDefIconButBitS(block, TOG, AUTOKEY_ON, B_REDRAWALL, ICON_REC,
- xco, yco, XIC, YIC, &(scene->autokey_mode), 0, 0, 0, 0, "Automatic keyframe insertion for Objects and Bones");
+ xco, yco, XIC, YIC, &(scene->toolsettings->autokey_mode), 0, 0, 0, 0, "Automatic keyframe insertion for Objects and Bones");
xco+= XIC;
if (IS_AUTOKEY_ON(scene)) {
uiDefButS(block, MENU, B_REDRAWALL,
"Auto-Keying Mode %t|Add/Replace Keys%x3|Replace Keys %x5",
- xco, yco, (int)5.5*XIC, YIC, &(scene->autokey_mode), 0, 1, 0, 0,
+ xco, yco, (int)5.5*XIC, YIC, &(scene->toolsettings->autokey_mode), 0, 1, 0, 0,
"Mode of automatic keyframe insertion for Objects and Bones");
xco+= (6*XIC);
}
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 42da6775d5f..ea9fb66dae0 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -117,7 +117,7 @@
(vd->drawtype==OB_SOLID && vd->flag2 & V3D_SOLID_TEX))
#define CHECK_OB_DRAWFACEDOT(sce, vd, dt) \
-( (sce->selectmode & SCE_SELECT_FACE) && \
+( (sce->toolsettings->selectmode & SCE_SELECT_FACE) && \
(vd->drawtype<=OB_SOLID) && \
(((vd->drawtype==OB_SOLID) && (dt>=OB_SOLID) && (vd->flag2 & V3D_SOLID_TEX) && (vd->flag & V3D_ZBUF_SELECT)) == 0) \
)
@@ -1493,14 +1493,14 @@ void nurbs_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, Nurb
static void draw_dm_face_normals__mapFunc(void *userData, int index, float *cent, float *no)
{
- Scene *scene= (Scene *)userData;
+ ToolSettings *ts= ((Scene *)userData)->toolsettings;
EditFace *efa = EM_get_face_for_index(index);
if (efa->h==0 && efa->fgonf!=EM_FGON) {
glVertex3fv(cent);
- glVertex3f( cent[0] + no[0]*scene->editbutsize,
- cent[1] + no[1]*scene->editbutsize,
- cent[2] + no[2]*scene->editbutsize);
+ glVertex3f( cent[0] + no[0]*ts->normalsize,
+ cent[1] + no[1]*ts->normalsize,
+ cent[2] + no[2]*ts->normalsize);
}
}
static void draw_dm_face_normals(Scene *scene, DerivedMesh *dm)
@@ -1529,19 +1529,20 @@ static void draw_dm_face_centers(DerivedMesh *dm, int sel)
static void draw_dm_vert_normals__mapFunc(void *userData, int index, float *co, float *no_f, short *no_s)
{
Scene *scene= (Scene *)userData;
+ ToolSettings *ts= scene->toolsettings;
EditVert *eve = EM_get_vert_for_index(index);
if (eve->h==0) {
glVertex3fv(co);
if (no_f) {
- glVertex3f( co[0] + no_f[0]*scene->editbutsize,
- co[1] + no_f[1]*scene->editbutsize,
- co[2] + no_f[2]*scene->editbutsize);
+ glVertex3f( co[0] + no_f[0]*ts->normalsize,
+ co[1] + no_f[1]*ts->normalsize,
+ co[2] + no_f[2]*ts->normalsize);
} else {
- glVertex3f( co[0] + no_s[0]*scene->editbutsize/32767.0f,
- co[1] + no_s[1]*scene->editbutsize/32767.0f,
- co[2] + no_s[2]*scene->editbutsize/32767.0f);
+ glVertex3f( co[0] + no_s[0]*ts->normalsize/32767.0f,
+ co[1] + no_s[1]*ts->normalsize/32767.0f,
+ co[2] + no_s[2]*ts->normalsize/32767.0f);
}
}
}
@@ -1762,7 +1763,9 @@ static void draw_dm_bweights__mapFunc(void *userData, int index, float *co, floa
}
static void draw_dm_bweights(Scene *scene, DerivedMesh *dm)
{
- if (scene->selectmode & SCE_SELECT_VERTEX) {
+ ToolSettings *ts= scene->toolsettings;
+
+ if (ts->selectmode & SCE_SELECT_VERTEX) {
glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE) + 2);
bglBegin(GL_POINTS);
dm->foreachMappedVert(dm, draw_dm_bweights__mapFunc, NULL);
@@ -1786,6 +1789,7 @@ static void draw_dm_bweights(Scene *scene, DerivedMesh *dm)
static void draw_em_fancy_verts(Scene *scene, View3D *v3d, Object *obedit, EditMesh *em, DerivedMesh *cageDM, EditVert *eve_act)
{
+ ToolSettings *ts= scene->toolsettings;
int sel;
if(v3d->zbuf) glDepthMask(0); // disable write in zbuffer, zbuf select
@@ -1817,7 +1821,7 @@ static void draw_em_fancy_verts(Scene *scene, View3D *v3d, Object *obedit, EditM
col[3] = fcol[3] = 255;
}
- if(scene->selectmode & SCE_SELECT_VERTEX) {
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
glPointSize(size);
glColor4ubv((GLubyte *)col);
draw_dm_verts(cageDM, sel, eve_act);
@@ -1842,6 +1846,7 @@ static void draw_em_fancy_verts(Scene *scene, View3D *v3d, Object *obedit, EditM
static void draw_em_fancy_edges(Scene *scene, View3D *v3d, Mesh *me, DerivedMesh *cageDM, short sel_only, EditEdge *eed_act)
{
+ ToolSettings *ts= scene->toolsettings;
int pass;
unsigned char wireCol[4], selCol[4], actCol[4];
@@ -1871,11 +1876,11 @@ static void draw_em_fancy_edges(Scene *scene, View3D *v3d, Mesh *me, DerivedMesh
if (!sel_only) wireCol[3] = 255;
}
- if(scene->selectmode == SCE_SELECT_FACE) {
+ if(ts->selectmode == SCE_SELECT_FACE) {
draw_dm_edges_sel(cageDM, wireCol, selCol, actCol, eed_act);
}
- else if( (me->drawflag & ME_DRAWEDGES) || (scene->selectmode & SCE_SELECT_EDGE) ) {
- if(cageDM->drawMappedEdgesInterp && (scene->selectmode & SCE_SELECT_VERTEX)) {
+ else if( (me->drawflag & ME_DRAWEDGES) || (ts->selectmode & SCE_SELECT_EDGE) ) {
+ if(cageDM->drawMappedEdgesInterp && (ts->selectmode & SCE_SELECT_VERTEX)) {
glShadeModel(GL_SMOOTH);
draw_dm_edges_sel_interp(cageDM, wireCol, selCol);
glShadeModel(GL_FLAT);
@@ -3561,6 +3566,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, ParticleSystem *psys, int dt)
{
+ ToolSettings *ts= scene->toolsettings;
ParticleEdit *edit = psys->edit;
ParticleData *pa;
ParticleCacheKey **path;
@@ -3664,13 +3670,13 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
}
/* draw edit vertices */
- if(scene->selectmode!=SCE_SELECT_PATH){
+ if(pset->selectmode!=SCE_SELECT_PATH){
glDisableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDisable(GL_LIGHTING);
glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE));
- if(scene->selectmode==SCE_SELECT_POINT){
+ if(pset->selectmode==SCE_SELECT_POINT){
float *cd=0,*cdata=0;
cd=cdata=MEM_callocN(edit->totkeys*(timed?4:3)*sizeof(float), "particle edit color data");
@@ -3709,7 +3715,7 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
MEM_freeN(cdata);
cd=cdata=0;
}
- else if(scene->selectmode == SCE_SELECT_END){
+ else if(pset->selectmode == SCE_SELECT_END){
for(i=0, pa=psys->particles; i<totpart; i++, pa++){
if((pa->flag & PARS_HIDE)==0){
key = edit->keys[i] + pa->totkey - 1;
@@ -3947,6 +3953,7 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel)
static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, Nurb *nurb, int dt)
{
+ ToolSettings *ts= scene->toolsettings;
Object *ob= base->object;
Curve *cu = ob->data;
Nurb *nu;
@@ -3978,7 +3985,7 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base,
/* direction vectors for 3d curve paths
when at its lowest, dont render normals */
- if(cu->flag & CU_3D && scene->editbutsize > 0.0015) {
+ if(cu->flag & CU_3D && ts->normalsize > 0.0015) {
UI_ThemeColor(TH_WIRE);
for (bl=cu->bev.first,nu=nurb; nu && bl; bl=bl->next,nu=nu->next) {
BevPoint *bevp= (BevPoint *)(bl+1);
@@ -3986,7 +3993,7 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base,
int skip= nu->resolu/16;
while (nr-->0) { /* accounts for empty bevel lists */
- float fac= bevp->radius * scene->editbutsize;
+ float fac= bevp->radius * ts->normalsize;
float ox,oy,oz; // Offset perpendicular to the curve
float dx,dy,dz; // Delta along the curve
@@ -5408,6 +5415,7 @@ static void bbs_mesh_solid(Scene *scene, View3D *v3d, Object *ob)
void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
{
+ ToolSettings *ts= scene->toolsettings;
wmMultMatrix(ob->obmat);
@@ -5425,8 +5433,8 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
EM_init_index_arrays(em, 1, 1, 1);
- bbs_mesh_solid_EM(scene, v3d, ob, dm, scene->selectmode & SCE_SELECT_FACE);
- if(scene->selectmode & SCE_SELECT_FACE)
+ bbs_mesh_solid_EM(scene, v3d, ob, dm, ts->selectmode & SCE_SELECT_FACE);
+ if(ts->selectmode & SCE_SELECT_FACE)
em_solidoffs = 1+em->totface;
else
em_solidoffs= 1;
@@ -5438,7 +5446,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
em_wireoffs= em_solidoffs + em->totedge;
// we draw verts if vert select mode or if in transform (for snap).
- if(scene->selectmode & SCE_SELECT_VERTEX || G.moving & G_TRANSFORM_EDIT) {
+ if(ts->selectmode & SCE_SELECT_VERTEX || G.moving & G_TRANSFORM_EDIT) {
bbs_mesh_verts(dm, em_wireoffs);
em_vertoffs= em_wireoffs + em->totvert;
}
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index b6e9e05b120..ca911876c89 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -1663,7 +1663,7 @@ static void view3d_panel_bonesketch_spaces(const bContext *C, Panel *pa)
uiBlockEndAlign(block);
- uiDefButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_NOP, "Peel Objects", 10, yco, 200, 20, &scene->snap_flag, 0, 0, 0, 0, "Peel whole objects as one");
+ uiDefButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_NOP, "Peel Objects", 10, yco, 200, 20, &scene->toolsettings->snap_flag, 0, 0, 0, 0, "Peel whole objects as one");
}
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index de0680c6cc1..13ebeb05a5b 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -1812,6 +1812,7 @@ static void do_view3d_transformmenu(bContext *C, void *arg, int event)
{
#if 0
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
switch(event) {
case 1:
@@ -1870,22 +1871,22 @@ static void do_view3d_transformmenu(bContext *C, void *arg, int event)
Transform();
break;
case 15:
- scene->snap_flag &= ~SCE_SNAP;
+ ts->snap_flag &= ~SCE_SNAP;
break;
case 16:
- scene->snap_flag |= SCE_SNAP;
+ ts->snap_flag |= SCE_SNAP;
break;
case 17:
- scene->snap_target = SCE_SNAP_TARGET_CLOSEST;
+ ts->snap_target = SCE_SNAP_TARGET_CLOSEST;
break;
case 18:
- scene->snap_target = SCE_SNAP_TARGET_CENTER;
+ ts->snap_target = SCE_SNAP_TARGET_CENTER;
break;
case 19:
- scene->snap_target = SCE_SNAP_TARGET_MEDIAN;
+ ts->snap_target = SCE_SNAP_TARGET_MEDIAN;
break;
case 20:
- scene->snap_target = SCE_SNAP_TARGET_ACTIVE;
+ ts->snap_target = SCE_SNAP_TARGET_ACTIVE;
break;
case 21:
alignmenu();
@@ -1896,7 +1897,7 @@ static void do_view3d_transformmenu(bContext *C, void *arg, int event)
static uiBlock *view3d_transformmenu(bContext *C, ARegion *ar, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
short yco = 20, menuwidth = 120;
@@ -1948,7 +1949,7 @@ static uiBlock *view3d_transformmenu(bContext *C, ARegion *ar, void *arg_unused)
{
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- if (scene->snap_flag & SCE_SNAP)
+ if (ts->snap_flag & SCE_SNAP)
{
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
@@ -1961,7 +1962,7 @@ static uiBlock *view3d_transformmenu(bContext *C, ARegion *ar, void *arg_unused)
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- switch(scene->snap_target)
+ switch(ts->snap_target)
{
case SCE_SNAP_TARGET_CLOSEST:
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
@@ -2650,34 +2651,34 @@ static uiBlock *view3d_edit_objectmenu(bContext *C, ARegion *ar, void *arg_unuse
static void do_view3d_edit_propfalloffmenu(bContext *C, void *arg, int event)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
- scene->prop_mode= event;
+ ts->prop_mode= event;
}
static uiBlock *view3d_edit_propfalloffmenu(bContext *C, ARegion *ar, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
uiBlock *block;
short yco = 20, menuwidth = 120;
block= uiBeginBlock(C, ar, "view3d_edit_propfalloffmenu", UI_EMBOSSP);
uiBlockSetButmFunc(block, do_view3d_edit_propfalloffmenu, NULL);
- if (scene->prop_mode==PROP_SMOOTH) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Smooth|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SMOOTH, "");
+ if (ts->prop_mode==PROP_SMOOTH) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Smooth|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SMOOTH, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Smooth|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SMOOTH, "");
- if (scene->prop_mode==PROP_SPHERE) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sphere|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SPHERE, "");
+ if (ts->prop_mode==PROP_SPHERE) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sphere|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SPHERE, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Sphere|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SPHERE, "");
- if (scene->prop_mode==PROP_ROOT) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Root|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_ROOT, "");
+ if (ts->prop_mode==PROP_ROOT) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Root|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_ROOT, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Root|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_ROOT, "");
- if (scene->prop_mode==PROP_SHARP) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sharp|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SHARP, "");
+ if (ts->prop_mode==PROP_SHARP) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sharp|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SHARP, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Sharp|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SHARP, "");
- if (scene->prop_mode==PROP_LIN) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Linear|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_LIN, "");
+ if (ts->prop_mode==PROP_LIN) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Linear|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_LIN, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Linear|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_LIN, "");
- if (scene->prop_mode==PROP_RANDOM) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Random|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_RANDOM, "");
+ if (ts->prop_mode==PROP_RANDOM) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Random|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_RANDOM, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Random|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_RANDOM, "");
- if (scene->prop_mode==PROP_CONST) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Constant|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_CONST, "");
+ if (ts->prop_mode==PROP_CONST) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Constant|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_CONST, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Constant|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_CONST, "");
uiBlockSetDirection(block, UI_RIGHT);
@@ -2698,7 +2699,7 @@ void do_view3d_edit_mesh_verticesmenu(bContext *C, void *arg, int event)
make_parent();
break;
case 1: /* remove doubles */
- count= removedoublesflag(1, 0, scene->toolsettings->doublimit);
+ count= removedoublesflag(1, 0, ts->doublimit);
notice("Removed: %d", count);
if (count) { /* only undo and redraw if an action is taken */
DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
@@ -2768,18 +2769,18 @@ void do_view3d_edit_mesh_edgesmenu(bContext *C, void *arg, int event)
switch(event) {
case 0: /* subdivide smooth */
- esubdivideflag(1, 0.0, scene->toolsettings->editbutflag | B_SMOOTH,1,0);
+ esubdivideflag(1, 0.0, ts->editbutflag | B_SMOOTH,1,0);
ED_undo_push(C, "Subdivide Smooth");
break;
case 1: /*subdivide fractal */
randfac= 10;
if(button(&randfac, 1, 100, "Rand fac:")==0) return;
fac= -( (float)randfac )/100;
- esubdivideflag(1, fac, scene->toolsettings->editbutflag,1,0);
+ esubdivideflag(1, fac, ts->editbutflag,1,0);
ED_undo_push(C, "Subdivide Fractal");
break;
case 2: /* subdivide */
- esubdivideflag(1, 0.0, scene->toolsettings->editbutflag,1,0);
+ esubdivideflag(1, 0.0, ts->editbutflag,1,0);
ED_undo_push(C, "Subdivide");
break;
case 3: /* knife subdivide */
@@ -3142,6 +3143,7 @@ static uiBlock *view3d_edit_mesh_scriptsmenu(bContext *C, ARegion *ar, void *arg
static void do_view3d_edit_meshmenu(bContext *C, void *arg, int event)
{
#if 0
+ ToolSettings *ts= CTX_data_tool_settings(C);
Scene *scene= CTX_data_scene(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
@@ -3185,12 +3187,12 @@ static void do_view3d_edit_meshmenu(bContext *C, void *arg, int event)
Transform();
break;
case 12: /* proportional edit (toggle) */
- if(scene->proportional) scene->proportional= 0;
- else scene->proportional= 1;
+ if(ts->proportional) ts->proportional= 0;
+ else ts->proportional= 1;
break;
case 13: /* automerge edit (toggle) */
- if(scene->automerge) scene->automerge= 0;
- else scene->automerge= 1;
+ if(ts->automerge) ts->automerge= 0;
+ else ts->automerge= 1;
break;
case 15:
uv_autocalc_tface();
@@ -3204,7 +3206,7 @@ static void do_view3d_edit_meshmenu(bContext *C, void *arg, int event)
static uiBlock *view3d_edit_meshmenu(bContext *C, ARegion *ar, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
short yco= 0, menuwidth=120;
@@ -3250,7 +3252,7 @@ static uiBlock *view3d_edit_meshmenu(bContext *C, ARegion *ar, void *arg_unused)
- if(scene->proportional) {
+ if(ts->proportional) {
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
} else {
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
@@ -3261,7 +3263,7 @@ static uiBlock *view3d_edit_meshmenu(bContext *C, ARegion *ar, void *arg_unused)
/* PITA but we should let users know that automerge cant work with multires :/ */
uiDefIconTextBut(block, BUTM, 1,
- scene->automerge ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT,
+ ts->automerge ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT,
((Mesh*)obedit->data)->mr ? "AutoMerge Editing (disabled by multires)" : "AutoMerge Editing",
0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
@@ -3536,8 +3538,8 @@ static void do_view3d_edit_latticemenu(bContext *C, void *arg, int event)
Transform();
break;
case 5: /* proportional edit (toggle) */
- if(scene->proportional) scene->proportional= 0;
- else scene->proportional= 1;
+ if(ts->proportional) ts->proportional= 0;
+ else ts->proportional= 1;
break;
case 7: /* delete keyframe */
common_deletekey();
@@ -3548,7 +3550,7 @@ static void do_view3d_edit_latticemenu(bContext *C, void *arg, int event)
static uiBlock *view3d_edit_latticemenu(bContext *C, ARegion *ar, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
uiBlock *block;
short yco= 0, menuwidth=120;
@@ -3574,7 +3576,7 @@ static uiBlock *view3d_edit_latticemenu(bContext *C, ARegion *ar, void *arg_unus
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- if(scene->proportional) {
+ if(ts->proportional) {
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
} else {
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
@@ -4695,7 +4697,7 @@ static uiBlock *view3d_faceselmenu(bContext *C, ARegion *ar, void *arg_unused)
static void view3d_select_particlemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
@@ -4704,7 +4706,7 @@ static void view3d_select_particlemenu(bContext *C, uiLayout *layout, void *arg_
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_all_toggle");
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_linked");
- if(scene->selectmode & SCE_SELECT_POINT) {
+ if(ts->particle.selectmode & SCE_SELECT_POINT) {
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_last"); // |W, 4
uiItemO(layout, NULL, 0, "PARTICLE_OT_select_first"); // |W, 3
}
@@ -4724,7 +4726,7 @@ static void view3d_particle_showhidemenu(bContext *C, uiLayout *layout, void *ar
static void view3d_particlemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
// XXX uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Particle Edit Properties|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, "");
// add_blockhandler(sa, VIEW3D_HANDLER_OBJECT, UI_PNL_UNSTOW);
@@ -4739,7 +4741,7 @@ static void view3d_particlemenu(bContext *C, uiLayout *layout, void *arg_unused)
uiItemO(layout, NULL, 0, "PARTICLE_OT_remove_doubles"); // |W, 5
uiItemO(layout, NULL, 0, "PARTICLE_OT_delete");
- if(scene->selectmode & SCE_SELECT_POINT)
+ if(ts->particle.selectmode & SCE_SELECT_POINT)
uiItemO(layout, NULL, 0, "PARTICLE_OT_subdivide"); // |W, 2
uiItemO(layout, NULL, 0, "PARTICLE_OT_rekey"); // |W, 1
@@ -4873,6 +4875,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
{
wmWindow *win= CTX_wm_window(C);
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
Base *basact= CTX_data_active_base(C);
@@ -5007,7 +5010,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
if(em) {
if(shift==0 || em->selectmode==0)
em->selectmode= SCE_SELECT_VERTEX;
- scene->selectmode= em->selectmode;
+ ts->selectmode= em->selectmode;
EM_selectmode_set(em);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Vertex");
@@ -5021,7 +5024,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
}
em->selectmode = SCE_SELECT_EDGE;
}
- scene->selectmode= em->selectmode;
+ ts->selectmode= em->selectmode;
EM_selectmode_set(em);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Edge");
@@ -5030,12 +5033,12 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
case B_SEL_FACE:
if(em) {
if( shift==0 || em->selectmode==0){
- if( ((scene->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_VERTEX) || ((scene->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_EDGE)){
- if(ctrl) EM_convertsel(em, (scene->selectmode ^ SCE_SELECT_FACE),SCE_SELECT_FACE);
+ if( ((ts->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_VERTEX) || ((ts->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_EDGE)){
+ if(ctrl) EM_convertsel(em, (ts->selectmode ^ SCE_SELECT_FACE),SCE_SELECT_FACE);
}
em->selectmode = SCE_SELECT_FACE;
}
- scene->selectmode= em->selectmode;
+ ts->selectmode= em->selectmode;
EM_selectmode_set(em);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Face");
@@ -5043,15 +5046,15 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
break;
case B_SEL_PATH:
- scene->selectmode= SCE_SELECT_PATH;
+ ts->particle.selectmode= SCE_SELECT_PATH;
ED_undo_push(C, "Selectmode Set: Path");
break;
case B_SEL_POINT:
- scene->selectmode = SCE_SELECT_POINT;
+ ts->particle.selectmode = SCE_SELECT_POINT;
ED_undo_push(C, "Selectmode Set: Point");
break;
case B_SEL_END:
- scene->selectmode = SCE_SELECT_END;
+ ts->particle.selectmode = SCE_SELECT_END;
ED_undo_push(C, "Selectmode Set: End point");
break;
@@ -5280,6 +5283,7 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *ob= OBACT;
Object *obedit = CTX_data_edit_object(C);
uiBlock *block;
@@ -5449,11 +5453,11 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
if((obedit && (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || G.f & G_PARTICLEEDIT) {
uiBlockBeginAlign(block);
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(scene->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) ");
+ uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) ");
xco+= XIC+10;
- if(scene->proportional) {
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(scene->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) ");
+ if(ts->proportional) {
+ uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(ts->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) ");
xco+= XIC+10;
}
uiBlockEndAlign(block);
@@ -5464,21 +5468,21 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
if (BIF_snappingSupported(obedit)) {
uiBlockBeginAlign(block);
- if (scene->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
+ if (ts->snap_flag & SCE_SNAP) {
+ uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
+ uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
xco+= XIC;
- if (scene->snap_mode == SCE_SNAP_MODE_VOLUME) {
- uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center");
+ if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) {
+ uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center");
xco+= XIC;
}
- uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(scene->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
+ uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
xco+= XIC;
- uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &scene->snap_target, 0, 0, 0, 0, "Snap Target Mode");
+ uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode");
xco+= XIC+70;
} else {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
+ uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
xco+= XIC;
}
@@ -5509,11 +5513,11 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
}
else if(G.f & G_PARTICLEEDIT) {
uiBlockBeginAlign(block);
- uiDefIconButBitS(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Path edit mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode");
xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Point select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode");
xco+= XIC;
- uiDefIconButBitS(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &scene->selectmode, 1.0, 0.0, 0, 0, "Tip select mode");
+ uiDefIconButBitS(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode");
xco+= XIC;
uiBlockEndAlign(block);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index e0e8ac7c7a7..a153f795292 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -438,6 +438,7 @@ static void do_lasso_select_mesh__doSelectFace(void *userData, EditFace *efa, in
static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves, short select)
{
struct { ViewContext vc; rcti *rect; short (*mcords)[2], moves, select, pass, done; } data;
+ ToolSettings *ts= vc->scene->toolsettings;
rcti rect;
int bbsel;
@@ -456,14 +457,14 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves
bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax);
- if(vc->scene->selectmode & SCE_SELECT_VERTEX) {
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
EM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
mesh_foreachScreenVert(vc, do_lasso_select_mesh__doSelectVert, &data, 1);
}
}
- if(vc->scene->selectmode & SCE_SELECT_EDGE) {
+ if(ts->selectmode & SCE_SELECT_EDGE) {
/* Does both bbsel and non-bbsel versions (need screen cos for both) */
data.pass = 0;
@@ -475,7 +476,7 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves
}
}
- if(vc->scene->selectmode & SCE_SELECT_FACE) {
+ if(ts->selectmode & SCE_SELECT_FACE) {
if (bbsel) {
EM_backbuf_checkAndSelectFaces(vc->em, select);
} else {
@@ -1277,6 +1278,7 @@ static void do_mesh_box_select__doSelectFace(void *userData, EditFace *efa, int
static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select)
{
struct { ViewContext vc; rcti *rect; short select, pass, done; } data;
+ ToolSettings *ts= vc->scene->toolsettings;
int bbsel;
data.vc= *vc;
@@ -1287,14 +1289,14 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select)
bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax);
- if(vc->scene->selectmode & SCE_SELECT_VERTEX) {
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
EM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
mesh_foreachScreenVert(vc, do_mesh_box_select__doSelectVert, &data, 1);
}
}
- if(vc->scene->selectmode & SCE_SELECT_EDGE) {
+ if(ts->selectmode & SCE_SELECT_EDGE) {
/* Does both bbsel and non-bbsel versions (need screen cos for both) */
data.pass = 0;
@@ -1306,7 +1308,7 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select)
}
}
- if(vc->scene->selectmode & SCE_SELECT_FACE) {
+ if(ts->selectmode & SCE_SELECT_FACE) {
if(bbsel) {
EM_backbuf_checkAndSelectFaces(vc->em, select);
} else {
@@ -1639,6 +1641,7 @@ static void mesh_circle_doSelectFace(void *userData, EditFace *efa, int x, int y
static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, float rad)
{
+ ToolSettings *ts= vc->scene->toolsettings;
int bbsel;
if(vc->obedit==NULL && (FACESEL_PAINT_TEST)) {
@@ -1666,7 +1669,7 @@ static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, floa
data.mval[1] = mval[1];
data.radius = rad;
- if(vc->scene->selectmode & SCE_SELECT_VERTEX) {
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
if(bbsel) {
EM_backbuf_checkAndSelectVerts(vc->em, selecting==LEFTMOUSE);
} else {
@@ -1674,7 +1677,7 @@ static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, floa
}
}
- if(vc->scene->selectmode & SCE_SELECT_EDGE) {
+ if(ts->selectmode & SCE_SELECT_EDGE) {
if (bbsel) {
EM_backbuf_checkAndSelectEdges(vc->em, selecting==LEFTMOUSE);
} else {
@@ -1682,7 +1685,7 @@ static void mesh_circle_select(ViewContext *vc, int selecting, short *mval, floa
}
}
- if(vc->scene->selectmode & SCE_SELECT_FACE) {
+ if(ts->selectmode & SCE_SELECT_FACE) {
if(bbsel) {
EM_backbuf_checkAndSelectFaces(vc->em, selecting==LEFTMOUSE);
} else {
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 674de81a9f5..3311fb7d0fe 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1134,7 +1134,7 @@ void drawTransform(const struct bContext *C, struct ARegion *ar, void *arg)
void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
{
- Scene *sce = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
int constraint_axis[3] = {0, 0, 0};
int proportional = 0;
@@ -1195,8 +1195,8 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
// XXX If modal, save settings back in scene
if (t->flag & T_MODAL)
{
- sce->prop_mode = t->prop_mode;
- sce->proportional = proportional;
+ ts->prop_mode = t->prop_mode;
+ ts->proportional = proportional;
if(t->spacetype == SPACE_VIEW3D)
{
@@ -2359,7 +2359,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
}
else if (t->flag & T_EDIT) {
- if(t->around==V3D_LOCAL && (t->scene->selectmode & SCE_SELECT_FACE)) {
+ if(t->around==V3D_LOCAL && (t->settings->selectmode & SCE_SELECT_FACE)) {
VECCOPY(center, td->center);
}
else {
@@ -2660,7 +2660,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
}
else {
/* !TODO! Make this if not rely on G */
- if(around==V3D_LOCAL && (t->scene->selectmode & SCE_SELECT_FACE)) {
+ if(around==V3D_LOCAL && (t->settings->selectmode & SCE_SELECT_FACE)) {
center = td->center;
}
}
@@ -3126,7 +3126,7 @@ static void headerTranslation(TransInfo *t, float vec[3], char *str) {
sprintf(distvec, "%.4f", dist);
if(t->flag & T_AUTOIK) {
- short chainlen= t->scene->toolsettings->autoik_chainlen;
+ short chainlen= t->settings->autoik_chainlen;
if(chainlen)
sprintf(autoik, "AutoIK-Len: %d", chainlen);
@@ -4251,7 +4251,7 @@ int Align(TransInfo *t, short mval[2])
VECCOPY(t->center, td->center);
}
else {
- if(t->scene->selectmode & SCE_SELECT_FACE) {
+ if(t->settings->selectmode & SCE_SELECT_FACE) {
VECCOPY(t->center, td->center);
}
}
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index ee767fada58..534f142734a 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -257,6 +257,7 @@ typedef struct TransInfo {
struct ScrArea *sa;
struct ARegion *ar;
struct Scene *scene;
+ struct ToolSettings *settings;
struct wmTimer *animtimer;
short mval[2]; /* current mouse position */
struct Object *obedit;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index efe5122ad01..bb1f09ec44e 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -777,7 +777,7 @@ static void pchan_autoik_adjust (bPoseChannel *pchan, short chainlen)
/* change the chain-length of auto-ik */
void transform_autoik_update (TransInfo *t, short mode)
{
- short *chainlen= &t->scene->toolsettings->autoik_chainlen;
+ short *chainlen= &t->settings->autoik_chainlen;
bPoseChannel *pchan;
/* mode determines what change to apply to chainlen */
@@ -1631,7 +1631,7 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
int count = 0, hasselected = 0;
int propmode = t->flag & T_PROP_EDIT;
- if(psys==NULL || t->scene->selectmode==SCE_SELECT_PATH) return;
+ if(psys==NULL || t->settings->particle.selectmode==SCE_SELECT_PATH) return;
psmd = psys_get_modifier(ob,psys);
@@ -2101,7 +2101,7 @@ void createTransBMeshVerts(TransInfo *t, BME_Mesh *bm, BME_TransData_Head *td) {
static void createTransEditVerts(bContext *C, TransInfo *t)
{
- Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
TransData *tob = NULL;
EditMesh *em = ((Mesh *)t->obedit->data)->edit_mesh;
EditVert *eve;
@@ -2119,7 +2119,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
}
// transform now requires awareness for select mode, so we tag the f1 flags in verts
- if(scene->selectmode & SCE_SELECT_VERTEX) {
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->h==0 && (eve->f & SELECT))
eve->f1= SELECT;
@@ -2127,7 +2127,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
eve->f1= 0;
}
}
- else if(scene->selectmode & SCE_SELECT_EDGE) {
+ else if(ts->selectmode & SCE_SELECT_EDGE) {
EditEdge *eed;
for(eve= em->verts.first; eve; eve= eve->next) eve->f1= 0;
for(eed= em->edges.first; eed; eed= eed->next) {
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 171665c9282..f4cb5afc3c2 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -665,6 +665,7 @@ void resetTransRestrictions(TransInfo *t)
int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
{
Scene *sce = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
ARegion *ar = CTX_wm_region(C);
ScrArea *sa = CTX_wm_area(C);
Object *obedit = CTX_data_edit_object(C);
@@ -679,6 +680,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
t->sa = sa;
t->ar = ar;
t->obedit = obedit;
+ t->settings = ts;
t->data = NULL;
t->ext = NULL;
@@ -774,7 +776,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
// Need stuff to take it from edit mesh or whatnot here
else
{
- if (t->obedit && t->obedit->type == OB_MESH && sce->toolsettings->editbutflag & B_MESH_X_MIRROR)
+ if (t->obedit && t->obedit->type == OB_MESH && ts->editbutflag & B_MESH_X_MIRROR)
{
t->flag |= T_MIRROR;
}
@@ -794,10 +796,10 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
else
{
- if ((t->options & CTX_NO_PET) == 0 && (sce->proportional)) {
+ if ((t->options & CTX_NO_PET) == 0 && (ts->proportional)) {
t->flag |= T_PROP_EDIT;
- if(sce->proportional == 2)
+ if(ts->proportional == 2)
t->flag |= T_PROP_CONNECTED; // yes i know, has to become define
}
}
@@ -808,7 +810,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
else
{
- t->prop_size = sce->toolsettings->proportional_size;
+ t->prop_size = ts->proportional_size;
}
if (op && RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && RNA_property_is_set(op->ptr, "proportional_editing_falloff"))
@@ -817,7 +819,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
}
else
{
- t->prop_mode = sce->prop_mode;
+ t->prop_mode = ts->prop_mode;
}
/* TRANSFORM_FIX_ME rna restrictions */
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 72901110388..0b9a176dbdf 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -210,7 +210,7 @@ int handleSnapping(TransInfo *t, wmEvent *event)
if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift)
{
/* toggle snap and reinit */
- t->scene->snap_flag ^= SCE_SNAP;
+ t->settings->snap_flag ^= SCE_SNAP;
initSnapping(t, NULL);
status = 1;
}
@@ -282,10 +282,10 @@ int validSnappingNormal(TransInfo *t)
void initSnapping(TransInfo *t, wmOperator *op)
{
- Scene *scene = t->scene;
+ ToolSettings *ts = t->settings;
Object *obedit = t->obedit;
int snapping = 0;
- short snap_mode = t->scene->snap_target;
+ short snap_mode = t->settings->snap_target;
resetSnapping(t);
@@ -310,8 +310,8 @@ void initSnapping(TransInfo *t, wmOperator *op)
}
else
{
- snapping = ((scene->snap_flag & SCE_SNAP) == SCE_SNAP);
- t->tsnap.align = ((t->scene->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE);
+ snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP);
+ t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE);
}
if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV
@@ -542,7 +542,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
int dist = SNAP_MIN_DISTANCE; // Use a user defined value here
SnapMode mode;
- if (t->scene->snap_mode == SCE_SNAP_MODE_VOLUME)
+ if (t->settings->snap_mode == SCE_SNAP_MODE_VOLUME)
{
ListBase depth_peels;
DepthPeel *p1, *p2;
@@ -575,7 +575,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
p1->flag = 1;
/* if peeling objects, take the first and last from each object */
- if (t->scene->snap_flag & SCE_SNAP_PEEL_OBJECT)
+ if (t->settings->snap_flag & SCE_SNAP_PEEL_OBJECT)
{
DepthPeel *peel;
for (peel = p1->next; peel; peel = peel->next)
@@ -1346,6 +1346,7 @@ int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, E
int snapObject(Scene *scene, ARegion *ar, Object *ob, int editobject, float obmat[][4], float ray_start[3], float ray_normal[3], short mval[2], float *loc, float *no, int *dist, float *depth)
{
+ ToolSettings *ts= scene->toolsettings;
int retval = 0;
if (ob->type == OB_MESH) {
@@ -1363,13 +1364,13 @@ int snapObject(Scene *scene, ARegion *ar, Object *ob, int editobject, float obma
dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
}
- retval = snapDerivedMesh(scene->snap_mode, ar, ob, dm, em, obmat, ray_start, ray_normal, mval, loc, no, dist, depth);
+ retval = snapDerivedMesh(ts->snap_mode, ar, ob, dm, em, obmat, ray_start, ray_normal, mval, loc, no, dist, depth);
dm->release(dm);
}
else if (ob->type == OB_ARMATURE)
{
- retval = snapArmature(scene->snap_mode, ar, ob, ob->data, obmat, ray_start, ray_normal, mval, loc, no, dist, depth);
+ retval = snapArmature(ts->snap_mode, ar, ob, ob->data, obmat, ray_start, ray_normal, mval, loc, no, dist, depth);
}
return retval;
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index aded5a4cff9..b811906f5e5 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -102,17 +102,19 @@ static void drawcursor_sima(SpaceImage *sima, ARegion *ar)
static int draw_uvs_face_check(Scene *scene)
{
+ ToolSettings *ts= scene->toolsettings;
+
/* checks if we are selecting only faces */
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
return 2;
- else if(scene->selectmode & SCE_SELECT_FACE)
+ else if(ts->selectmode & SCE_SELECT_FACE)
return 1;
else
return 0;
}
else
- return (scene->toolsettings->uv_selectmode == UV_SELECT_FACE);
+ return (ts->uv_selectmode == UV_SELECT_FACE);
}
static void draw_uvs_shadow(SpaceImage *sima, Object *obedit)
@@ -418,7 +420,7 @@ static void draw_uvs_other(SpaceImage *sima, Scene *scene, Object *obedit, MTFac
/* draws uv's in the image space */
static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit)
{
- ToolSettings *settings;
+ ToolSettings *ts;
Mesh *me= obedit->data;
EditMesh *em;
EditFace *efa, *efa_act;
@@ -432,13 +434,13 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit)
em= BKE_mesh_get_editmesh(me);
activetf= EM_get_active_mtface(em, &efa_act, NULL, 0); /* will be set to NULL if hidden */
- settings= scene->toolsettings;
+ ts= scene->toolsettings;
drawfaces= draw_uvs_face_check(scene);
- if(settings->uv_flag & UV_SYNC_SELECTION)
- interpedges= (scene->selectmode & SCE_SELECT_VERTEX);
+ if(ts->uv_flag & UV_SYNC_SELECTION)
+ interpedges= (ts->selectmode & SCE_SELECT_VERTEX);
else
- interpedges= (settings->uv_selectmode == UV_SELECT_VERTEX);
+ interpedges= (ts->uv_selectmode == UV_SELECT_VERTEX);
/* draw other uvs */
if(sima->flag & SI_DRAW_OTHER)
@@ -454,7 +456,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit)
/* when sync selection is enabled, all faces are drawn (except for hidden)
* so if cage is the same as the final, theres no point in drawing this */
- if(!((settings->uv_flag & UV_SYNC_SELECTION) && (cagedm == finaldm)))
+ if(!((ts->uv_flag & UV_SYNC_SELECTION) && (cagedm == finaldm)))
draw_uvs_dm_shadow(finaldm);
/* release derivedmesh again */
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 7dca4d34c48..7582145c63b 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -191,7 +191,9 @@ static void uvedit_pixel_to_float(SpaceImage *sima, float *dist, float pixeldist
int uvedit_face_visible_nolocal(Scene *scene, EditFace *efa)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION)
return (efa->h==0);
else
return (efa->h==0 && (efa->f & SELECT));
@@ -199,7 +201,9 @@ int uvedit_face_visible_nolocal(Scene *scene, EditFace *efa)
int uvedit_face_visible(Scene *scene, Image *ima, EditFace *efa, MTFace *tf)
{
- if(scene->toolsettings->uv_flag & UV_SHOW_SAME_IMAGE)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SHOW_SAME_IMAGE)
return (tf->tpage==ima)? uvedit_face_visible_nolocal(scene, efa): 0;
else
return uvedit_face_visible_nolocal(scene, efa);
@@ -207,7 +211,9 @@ int uvedit_face_visible(Scene *scene, Image *ima, EditFace *efa, MTFace *tf)
int uvedit_face_selected(Scene *scene, EditFace *efa, MTFace *tf)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION)
return (efa->f & SELECT);
else
return (!(~tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3)) &&(!efa->v4 || tf->flag & TF_SEL4));
@@ -215,7 +221,9 @@ int uvedit_face_selected(Scene *scene, EditFace *efa, MTFace *tf)
void uvedit_face_select(Scene *scene, EditFace *efa, MTFace *tf)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION)
EM_select_face(efa, 1);
else
tf->flag |= (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
@@ -223,7 +231,9 @@ void uvedit_face_select(Scene *scene, EditFace *efa, MTFace *tf)
void uvedit_face_deselect(Scene *scene, EditFace *efa, MTFace *tf)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION)
EM_select_face(efa, 0);
else
tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
@@ -231,12 +241,13 @@ void uvedit_face_deselect(Scene *scene, EditFace *efa, MTFace *tf)
int uvedit_edge_selected(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
+ ToolSettings *ts= scene->toolsettings;
int nvert= (efa->v4)? 4: 3;
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
return (efa->f & SELECT);
- else if(scene->selectmode == SCE_SELECT_EDGE)
+ else if(ts->selectmode == SCE_SELECT_EDGE)
return (*(&efa->e1 + i))->f & SELECT;
else
return (((efa->v1 + i)->f & SELECT) && ((efa->v1 + (i+1)%nvert)->f & SELECT));
@@ -247,12 +258,13 @@ int uvedit_edge_selected(Scene *scene, EditFace *efa, MTFace *tf, int i)
void uvedit_edge_select(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
+ ToolSettings *ts= scene->toolsettings;
int nvert= (efa->v4)? 4: 3;
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
EM_select_face(efa, 1);
- else if(scene->selectmode == SCE_SELECT_EDGE)
+ else if(ts->selectmode == SCE_SELECT_EDGE)
EM_select_edge((*(&efa->e1 + i)), 1);
else {
(efa->v1 + i)->f |= SELECT;
@@ -265,12 +277,13 @@ void uvedit_edge_select(Scene *scene, EditFace *efa, MTFace *tf, int i)
void uvedit_edge_deselect(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
+ ToolSettings *ts= scene->toolsettings;
int nvert= (efa->v4)? 4: 3;
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
EM_select_face(efa, 0);
- else if(scene->selectmode == SCE_SELECT_EDGE)
+ else if(ts->selectmode == SCE_SELECT_EDGE)
EM_select_edge((*(&efa->e1 + i)), 0);
else {
(efa->v1 + i)->f &= ~SELECT;
@@ -283,8 +296,10 @@ void uvedit_edge_deselect(Scene *scene, EditFace *efa, MTFace *tf, int i)
int uvedit_uv_selected(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
return (efa->f & SELECT);
else
return (*(&efa->v1 + i))->f & SELECT;
@@ -295,8 +310,10 @@ int uvedit_uv_selected(Scene *scene, EditFace *efa, MTFace *tf, int i)
void uvedit_uv_select(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
EM_select_face(efa, 1);
else
(*(&efa->v1 + i))->f |= SELECT;
@@ -307,8 +324,10 @@ void uvedit_uv_select(Scene *scene, EditFace *efa, MTFace *tf, int i)
void uvedit_uv_deselect(Scene *scene, EditFace *efa, MTFace *tf, int i)
{
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode == SCE_SELECT_FACE)
+ ToolSettings *ts= scene->toolsettings;
+
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode == SCE_SELECT_FACE)
EM_select_face(efa, 0);
else
(*(&efa->v1 + i))->f &= ~SELECT;
@@ -1289,6 +1308,7 @@ void UV_OT_stitch(wmOperatorType *ot)
static int select_inverse_exec(bContext *C, wmOperator *op)
{
Scene *scene;
+ ToolSettings *ts;
Object *obedit;
EditMesh *em;
EditFace *efa;
@@ -1296,11 +1316,12 @@ static int select_inverse_exec(bContext *C, wmOperator *op)
MTFace *tf;
scene= CTX_data_scene(C);
+ ts= CTX_data_tool_settings(C);
obedit= CTX_data_edit_object(C);
em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
ima= CTX_data_edit_image(C);
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
EM_select_swap(em);
}
else {
@@ -1339,6 +1360,7 @@ void UV_OT_select_invert(wmOperatorType *ot)
static int de_select_all_exec(bContext *C, wmOperator *op)
{
Scene *scene;
+ ToolSettings *ts;
Object *obedit;
EditMesh *em;
EditFace *efa;
@@ -1347,11 +1369,12 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
int sel;
scene= CTX_data_scene(C);
+ ts= CTX_data_tool_settings(C);
obedit= CTX_data_edit_object(C);
em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
ima= CTX_data_edit_image(C);
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
EM_toggle_select_all(em);
}
else {
@@ -1431,6 +1454,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
Image *ima= CTX_data_edit_image(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
@@ -1445,12 +1469,12 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
uvedit_pixel_to_float(sima, penalty, 5.0f);
/* retrieve operation mode */
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
sync= 1;
- if(scene->selectmode & SCE_SELECT_FACE)
+ if(ts->selectmode & SCE_SELECT_FACE)
selectmode= UV_SELECT_FACE;
- else if(scene->selectmode & SCE_SELECT_EDGE)
+ else if(ts->selectmode & SCE_SELECT_EDGE)
selectmode= UV_SELECT_EDGE;
else
selectmode= UV_SELECT_VERTEX;
@@ -1459,7 +1483,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
}
else {
sync= 0;
- selectmode= scene->toolsettings->uv_selectmode;
+ selectmode= ts->uv_selectmode;
sticky= sima->sticky;
}
@@ -1681,7 +1705,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
if(sync) {
/* flush for mesh selection */
- if(scene->selectmode != SCE_SELECT_FACE) {
+ if(ts->selectmode != SCE_SELECT_FACE) {
if(flush==1) EM_select_flush(em);
else if(flush==-1) EM_deselect_flush(em);
}
@@ -1794,13 +1818,14 @@ static int select_linked_exec(bContext *C, wmOperator *op)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
Image *ima= CTX_data_edit_image(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
float limit[2];
int extend;
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
BKE_report(op->reports, RPT_ERROR, "Can't select linked when sync selection is enabled.");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
@@ -1838,13 +1863,14 @@ void UV_OT_select_linked(wmOperatorType *ot)
static int unlink_selection_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
Image *ima= CTX_data_edit_image(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
EditFace *efa;
MTFace *tf;
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
BKE_report(op->reports, RPT_ERROR, "Can't unlink selection when sync selection is enabled.");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
@@ -1901,12 +1927,13 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
* This only needs to be done when the Mesh is not used for
* selection (so for sticky modes, vertex or location based). */
+ ToolSettings *ts= CTX_data_tool_settings(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
EditFace *efa;
MTFace *tf;
int nverts, i;
- if((scene->toolsettings->uv_flag & UV_SYNC_SELECTION)==0 && sima->sticky == SI_STICKY_VERTEX) {
+ if((ts->uv_flag & UV_SYNC_SELECTION)==0 && sima->sticky == SI_STICKY_VERTEX) {
/* Tag all verts as untouched, then touch the ones that have a face center
* in the loop and select all MTFace UV's that use a touched vert. */
EditVert *eve;
@@ -1937,7 +1964,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
}
}
}
- else if((scene->toolsettings->uv_flag & UV_SYNC_SELECTION)==0 && sima->sticky == SI_STICKY_LOC) {
+ else if((ts->uv_flag & UV_SYNC_SELECTION)==0 && sima->sticky == SI_STICKY_LOC) {
EditFace *efa_vlist;
MTFace *tf_vlist;
UvMapVert *start_vlist=NULL, *vlist_iter;
@@ -2008,7 +2035,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
EM_free_uv_vert_map(vmap);
}
- else { /* SI_STICKY_DISABLE or scene->toolsettings->uv_flag & UV_SYNC_SELECTION */
+ else { /* SI_STICKY_DISABLE or ts->uv_flag & UV_SYNC_SELECTION */
for(efa= em->faces.first; efa; efa= efa->next) {
if(efa->tmp.l) {
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
@@ -2026,6 +2053,7 @@ static int border_select_exec(bContext *C, wmOperator *op)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
Image *ima= CTX_data_edit_image(C);
ARegion *ar= CTX_wm_region(C);
@@ -2049,10 +2077,10 @@ static int border_select_exec(bContext *C, wmOperator *op)
select= (RNA_int_get(op->ptr, "event_type") == LEFTMOUSE); // XXX hardcoded
pinned= RNA_boolean_get(op->ptr, "pinned");
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION)
- faces= (scene->selectmode == SCE_SELECT_FACE);
+ if(ts->uv_flag & UV_SYNC_SELECTION)
+ faces= (ts->selectmode == SCE_SELECT_FACE);
else
- faces= (scene->toolsettings->uv_selectmode == UV_SELECT_FACE);
+ faces= (ts->uv_selectmode == UV_SELECT_FACE);
/* do actual selection */
if(faces && !pinned) {
@@ -2084,7 +2112,7 @@ static int border_select_exec(bContext *C, wmOperator *op)
for(efa= em->faces.first; efa; efa= efa->next) {
tface= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
if(uvedit_face_visible(scene, ima, efa, tface)) {
- if(!pinned || (scene->toolsettings->uv_flag & UV_SYNC_SELECTION) ) {
+ if(!pinned || (ts->uv_flag & UV_SYNC_SELECTION) ) {
/* UV_SYNC_SELECTION - can't do pinned selection */
if(BLI_in_rctf(&rectf, tface->uv[0][0], tface->uv[0][1])) {
if(select) uvedit_uv_select(scene, efa, tface, 0);
@@ -2133,8 +2161,8 @@ static int border_select_exec(bContext *C, wmOperator *op)
if(change) {
/* make sure newly selected vert selection is updated*/
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- if(scene->selectmode != SCE_SELECT_FACE) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->selectmode != SCE_SELECT_FACE) {
if(select) EM_select_flush(em);
else EM_deselect_flush(em);
}
@@ -2668,14 +2696,14 @@ void UV_OT_select_pinned(wmOperatorType *ot)
static int hide_exec(bContext *C, wmOperator *op)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
EditFace *efa;
MTFace *tf;
int swap= RNA_boolean_get(op->ptr, "unselected");
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
EM_hide_mesh(em, swap);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
@@ -2811,14 +2839,14 @@ void UV_OT_hide(wmOperatorType *ot)
static int reveal_exec(bContext *C, wmOperator *op)
{
SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- Scene *scene= CTX_data_scene(C);
+ ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
EditFace *efa;
MTFace *tf;
/* call the mesh function if we are in mesh sync sel */
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
+ if(ts->uv_flag & UV_SYNC_SELECTION) {
EM_reveal_mesh(em);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 4605d1f31e2..828721f0abb 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -47,6 +47,7 @@ struct Group;
struct Text;
struct bNodeTree;
struct AnimData;
+struct Editing;
typedef struct Base {
struct Base *next, *prev;
@@ -382,6 +383,8 @@ typedef struct ParticleEditSettings {
float emitterdist;
int draw_timed;
+
+ int selectmode, pad;
} ParticleEditSettings;
typedef struct TransformOrientation {
@@ -441,14 +444,19 @@ typedef struct ToolSettings {
short editbutflag;
/*Triangle to Quad conversion threshold*/
float jointrilimit;
- /* Extrude Tools */
+ /* Editmode Tools */
float degr;
short step;
short turn;
- float extr_offs;
- float doublimit;
-
+ float extr_offs; /* extrude offset */
+ float doublimit; /* remove doubles limit */
+ float normalsize; /* size of normals */
+ short automerge;
+
+ /* Selection Mode for Mesh */
+ short selectmode;
+
/* Primitive Settings */
/* UV Sphere */
short segments;
@@ -484,8 +492,11 @@ typedef struct ToolSettings {
/* Select Group Threshold */
float select_thresh;
- /* IPO-Editor */
+ /* Graph Editor */
float clean_thresh;
+
+ /* Auto-Keying Mode */
+ short autokey_mode, pad2; /* defines in DNA_userdef_types.h */
/* Retopo */
char retopo_mode;
@@ -512,7 +523,6 @@ typedef struct ToolSettings {
char skgen_postpro_passes;
char skgen_subdivisions[3];
char skgen_multi_level;
- int skgen_pad;
/* Skeleton Sketching */
struct Object *skgen_template;
@@ -526,7 +536,10 @@ typedef struct ToolSettings {
/* Alt+RMB option */
char edge_mode;
- char pad3[2];
+
+ /* transform */
+ short snap_mode, snap_flag, snap_target;
+ short proportional, prop_mode;
} ToolSettings;
typedef struct bStats {
@@ -547,28 +560,22 @@ typedef struct Scene {
struct Image *ima;
ListBase base;
- struct Base *basact;
+ struct Base *basact; /* active base */
struct Object *obedit; /* name replaces old G.obedit */
- float cursor[3];
+ float cursor[3]; /* 3d cursor location */
float twcent[3]; /* center for transform widget */
float twmin[3], twmax[3]; /* boundbox of selection for transform widget */
unsigned int lay;
- /* editmode stuff */
- float editbutsize; /* size of normals */
- short selectmode; /* for mesh only! */
- short proportional, prop_mode;
- short automerge, pad5;
short flag; /* various settings */
- short autokey_mode; /* mode for autokeying (defines in DNA_userdef_types.h) */
short use_nodes;
struct bNodeTree *nodetree;
- void *ed; /* sequence editor data is allocated here */
+ struct Editing *ed; /* sequence editor data is allocated here */
struct GameFraming framing;
@@ -578,20 +585,20 @@ typedef struct Scene {
/* migrate or replace? depends on some internal things... */
/* no, is on the right place (ton) */
struct RenderData r;
- struct AudioData audio; /* DEPRICATED 2.5 */
+ struct AudioData audio; /* DEPRECATED 2.5 */
ScriptLink scriptlink;
ListBase markers;
ListBase transform_spaces;
- short jumpframe;
- short snap_mode, snap_flag, snap_target;
/* none of the dependancy graph vars is mean to be saved */
struct DagForest *theDag;
short dagisvalid, dagflags;
- short pad4, recalc; /* recalc = counterpart of ob->recalc */
+ short recalc; /* recalc = counterpart of ob->recalc */
+
+ short jumpframe;
/* frame step. */
int frame_step;
@@ -791,27 +798,27 @@ typedef struct Scene {
/* base->flag is in DNA_object_types.h */
-/* scene->snap_flag */
+/* toolsettings->snap_flag */
#define SCE_SNAP 1
#define SCE_SNAP_ROTATE 2
#define SCE_SNAP_PEEL_OBJECT 4
-/* scene->snap_target */
+/* toolsettings->snap_target */
#define SCE_SNAP_TARGET_CLOSEST 0
#define SCE_SNAP_TARGET_CENTER 1
#define SCE_SNAP_TARGET_MEDIAN 2
#define SCE_SNAP_TARGET_ACTIVE 3
-/* scene->snap_mode */
+/* toolsettings->snap_mode */
#define SCE_SNAP_MODE_VERTEX 0
#define SCE_SNAP_MODE_EDGE 1
#define SCE_SNAP_MODE_FACE 2
#define SCE_SNAP_MODE_VOLUME 3
-/* sce->selectmode */
+/* toolsettings->selectmode */
#define SCE_SELECT_VERTEX 1 /* for mesh */
#define SCE_SELECT_EDGE 2
#define SCE_SELECT_FACE 4
-/* sce->selectmode for particles */
+/* toolsettings->particle.selectmode for particles */
#define SCE_SELECT_PATH 1
#define SCE_SELECT_POINT 2
#define SCE_SELECT_END 4
@@ -819,7 +826,7 @@ typedef struct Scene {
/* sce->recalc (now in use by previewrender) */
#define SCE_PRV_CHANGED 1
-/* sce->prop_mode (proportional falloff) */
+/* toolsettings->prop_mode (proportional falloff) */
#define PROP_SMOOTH 0
#define PROP_SPHERE 1
#define PROP_ROOT 2
@@ -886,7 +893,7 @@ typedef enum SculptFlags {
/* toolsettings->uv_selectmode */
#define UV_SELECT_VERTEX 1
-#define UV_SELECT_EDGE 2 /* not implemented */
+#define UV_SELECT_EDGE 2
#define UV_SELECT_FACE 4
#define UV_SELECT_ISLAND 8
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 416acd7467e..9dc7e07a95c 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -229,7 +229,7 @@ typedef struct SpaceImage {
char dt_uv; /* UV draw type */
char sticky; /* sticky selection type */
char dt_uvstretch;
- char pad;
+ char around;
float xof, yof; /* user defined offset, image is centered */
float zoom, pad4; /* user defined zoom level */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 5d4916bb3c6..47c9025149a 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -151,8 +151,34 @@ void rna_def_tool_settings(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem uv_select_mode_items[] = {
+ {UV_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
+ {UV_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
+ {UV_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
+ {UV_SELECT_ISLAND, "ISLAND", ICON_LINKEDSEL, "Island", "Island selection mode."},
+ {0, NULL, 0, NULL, NULL}};
+
+ static EnumPropertyItem mesh_select_mode_items[] = {
+ {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."},
+ {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."},
+ {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."},
+ {0, NULL, 0, NULL, NULL}};
+
+ static EnumPropertyItem snap_element_items[] = {
+ {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."},
+ {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."},
+ {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."},
+ {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."},
+ {0, NULL, 0, NULL, NULL}};
+
+ static EnumPropertyItem snap_mode_items[] = {
+ {SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."},
+ {SCE_SNAP_TARGET_CENTER, "CENTER", 0, "Center", "Snap center onto target."},
+ {SCE_SNAP_TARGET_MEDIAN, "MEDIAN", 0, "Median", "Snap median onto target."},
+ {SCE_SNAP_TARGET_ACTIVE, "ACTIVE", 0, "Active", "Snap active onto target."},
+ {0, NULL, 0, NULL, NULL}};
+
srna= RNA_def_struct(brna, "ToolSettings", NULL);
- RNA_def_struct_nested(brna, srna, "Scene");
RNA_def_struct_ui_text(srna, "Tool Settings", "");
prop= RNA_def_property(srna, "sculpt", PROP_POINTER, PROP_NONE);
@@ -163,6 +189,62 @@ void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "VPaint");
RNA_def_property_ui_text(prop, "Vertex Paint", "");
+ /* Transform */
+ prop= RNA_def_property(srna, "proportional_editing", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "proportional", 0);
+ RNA_def_property_ui_text(prop, "Proportional Editing", "Proportional editing mode.");
+
+ prop= RNA_def_property(srna, "proportional_editing_falloff", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "prop_mode");
+ RNA_def_property_enum_items(prop, prop_mode_items);
+ RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
+
+ prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
+ RNA_def_property_ui_text(prop, "Snap", "Snap while Ctrl is held during transform.");
+ RNA_def_property_ui_icon(prop, ICON_SNAP_GEAR, 1);
+
+ prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ROTATE);
+ RNA_def_property_ui_text(prop, "Snap Align Rotation", "Align rotation with the snapping target.");
+ RNA_def_property_ui_icon(prop, ICON_SNAP_NORMAL, 0);
+
+ prop= RNA_def_property(srna, "snap_element", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "snap_mode");
+ RNA_def_property_enum_items(prop, snap_element_items);
+ RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to.");
+
+ prop= RNA_def_property(srna, "snap_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "snap_target");
+ RNA_def_property_enum_items(prop, snap_mode_items);
+ RNA_def_property_ui_text(prop, "Snap Mode", "Which part to snap onto the target.");
+
+ prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PEEL_OBJECT);
+ RNA_def_property_ui_text(prop, "Snap Peel Object", "Consider objects as whole when finding volume center.");
+ RNA_def_property_ui_icon(prop, ICON_SNAP_PEEL_OBJECT, 0);
+
+ /* UV */
+ prop= RNA_def_property(srna, "uv_selection_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "uv_selectmode");
+ RNA_def_property_enum_items(prop, uv_select_mode_items);
+ RNA_def_property_ui_text(prop, "UV Selection Mode", "UV selection and display mode.");
+
+ prop= RNA_def_property(srna, "uv_sync_selection", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SYNC_SELECTION);
+ RNA_def_property_ui_text(prop, "UV Sync Selection", "Keep UV and edit mode mesh selection in sync.");
+ RNA_def_property_ui_icon(prop, ICON_EDIT, 0);
+
+ prop= RNA_def_property(srna, "uv_local_view", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SHOW_SAME_IMAGE);
+ RNA_def_property_ui_text(prop, "UV Local View", "Draw only faces with the currently displayed image assigned.");
+
+ /* Mesh */
+ prop= RNA_def_property(srna, "mesh_selection_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
+ RNA_def_property_enum_items(prop, mesh_select_mode_items);
+ RNA_def_property_ui_text(prop, "Mesh Selection Mode", "Mesh selection and display mode.");
+
rna_def_sculpt(brna);
}
@@ -839,10 +921,6 @@ void RNA_def_scene(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
- static EnumPropertyItem unwrapper_items[] = {
- {0, "CONFORMAL", 0, "Conformal", ""},
- {1, "ANGLEBASED", 0, "Angle Based", ""},
- {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "Scene", "ID");
RNA_def_struct_ui_text(srna, "Scene", "Scene consisting objects and defining time and render related settings.");
@@ -874,11 +952,6 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible when rendering the scene.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_layer_set");
- prop= RNA_def_property(srna, "proportional_editing_falloff", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, NULL, "prop_mode");
- RNA_def_property_enum_items(prop, prop_mode_items);
- RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
-
prop= RNA_def_property(srna, "current_frame", PROP_INT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE);
RNA_def_property_int_sdna(prop, NULL, "r.cfra");
@@ -911,11 +984,6 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Stamp Note", "User define note for the render stamping.");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "unwrapper", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, NULL, "toolsettings->unwrapper");
- RNA_def_property_enum_items(prop, unwrapper_items);
- RNA_def_property_ui_text(prop, "Unwrapper", "Unwrap algorithm used by the Unwrap tool.");
-
prop= RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Node Tree", "Compositing node tree.");
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index a1b51084fca..1bfc3b6f8f6 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -202,7 +202,7 @@ static PointerRNA rna_Operator_properties_get(PointerRNA *ptr)
}
-static int rna_Event_ascii_get(PointerRNA *ptr, char *value)
+static void rna_Event_ascii_get(PointerRNA *ptr, char *value)
{
wmEvent *event= (wmEvent*)ptr->id.data;
value[0]= event->ascii;