Merge branch 'master' into blender2.8

This commit is contained in:
2017-07-29 01:46:27 +10:00
13 changed files with 200 additions and 150 deletions

5
.gitignore vendored
View File

@@ -33,8 +33,3 @@ Desktop.ini
/doc/python_api/sphinx-in/ /doc/python_api/sphinx-in/
/doc/python_api/sphinx-out/ /doc/python_api/sphinx-out/
/doc/python_api/rst/bmesh.ops.rst /doc/python_api/rst/bmesh.ops.rst
/doc/python_api/rst/in_menu.png
/doc/python_api/rst/menu_id.png
/doc/python_api/rst/op_prop.png
/doc/python_api/rst/run_script.png
/doc/python_api/rst/spacebar.png

View File

@@ -331,6 +331,10 @@ def script_paths(subdir=None, user_pref=True, check_all=False, use_user=True):
# so the 'BLENDER_SYSTEM_SCRIPTS' environment variable will be used. # so the 'BLENDER_SYSTEM_SCRIPTS' environment variable will be used.
base_paths = _bpy_script_paths() base_paths = _bpy_script_paths()
# Defined to be (system, user) so we can skip the second if needed.
if not use_user:
base_paths = base_paths[:1]
if check_all: if check_all:
# All possible paths, no duplicates, keep order. # All possible paths, no duplicates, keep order.
if use_user: if use_user:

View File

@@ -250,6 +250,7 @@ class USERPREF_PT_interface(Panel):
col = row.column() col = row.column()
col.label(text="View Manipulation:") col.label(text="View Manipulation:")
col.prop(view, "use_mouse_depth_cursor") col.prop(view, "use_mouse_depth_cursor")
col.prop(view, "use_cursor_lock_adjust")
col.prop(view, "use_mouse_depth_navigate") col.prop(view, "use_mouse_depth_navigate")
col.prop(view, "use_zoom_to_mouse") col.prop(view, "use_zoom_to_mouse")
col.prop(view, "use_rotate_around_active") col.prop(view, "use_rotate_around_active")

View File

@@ -3044,10 +3044,12 @@ static void hair_create_input_dm(ParticleSimulationData *sim, int totpoint, int
/* calculate maximum segment length */ /* calculate maximum segment length */
max_length = 0.0f; max_length = 0.0f;
LOOP_PARTICLES { LOOP_PARTICLES {
for (k=1, key=pa->hair+1; k<pa->totkey; k++,key++) { if (!(pa->flag & PARS_UNEXIST)) {
float length = len_v3v3(key->co, (key-1)->co); for (k=1, key=pa->hair+1; k<pa->totkey; k++,key++) {
if (max_length < length) float length = len_v3v3(key->co, (key-1)->co);
max_length = length; if (max_length < length)
max_length = length;
}
} }
} }
@@ -3059,76 +3061,78 @@ static void hair_create_input_dm(ParticleSimulationData *sim, int totpoint, int
/* make vgroup for pin roots etc.. */ /* make vgroup for pin roots etc.. */
hair_index = 1; hair_index = 1;
LOOP_PARTICLES { LOOP_PARTICLES {
float root_mat[4][4]; if (!(pa->flag & PARS_UNEXIST)) {
float bending_stiffness; float root_mat[4][4];
bool use_hair; float bending_stiffness;
bool use_hair;
pa->hair_index = hair_index;
use_hair = psys_hair_use_simulation(pa, max_length); pa->hair_index = hair_index;
use_hair = psys_hair_use_simulation(pa, max_length);
psys_mat_hair_to_object(sim->ob, sim->psmd->dm_final, psys->part->from, pa, hairmat);
mul_m4_m4m4(root_mat, sim->ob->obmat, hairmat); psys_mat_hair_to_object(sim->ob, sim->psmd->dm_final, psys->part->from, pa, hairmat);
normalize_m4(root_mat); mul_m4_m4m4(root_mat, sim->ob->obmat, hairmat);
normalize_m4(root_mat);
bending_stiffness = CLAMPIS(1.0f - part->bending_random * psys_frand(psys, p + 666), 0.0f, 1.0f);
bending_stiffness = CLAMPIS(1.0f - part->bending_random * psys_frand(psys, p + 666), 0.0f, 1.0f);
for (k=0, key=pa->hair; k<pa->totkey; k++,key++) {
ClothHairData *hair; for (k=0, key=pa->hair; k<pa->totkey; k++,key++) {
float *co, *co_next; ClothHairData *hair;
float *co, *co_next;
co = key->co;
co_next = (key+1)->co; co = key->co;
co_next = (key+1)->co;
/* create fake root before actual root to resist bending */
if (k==0) { /* create fake root before actual root to resist bending */
hair = &psys->clmd->hairdata[pa->hair_index - 1]; if (k==0) {
hair = &psys->clmd->hairdata[pa->hair_index - 1];
copy_v3_v3(hair->loc, root_mat[3]);
copy_m3_m4(hair->rot, root_mat);
hair->radius = hair_radius;
hair->bending_stiffness = bending_stiffness;
add_v3_v3v3(mvert->co, co, co);
sub_v3_v3(mvert->co, co_next);
mul_m4_v3(hairmat, mvert->co);
medge->v1 = pa->hair_index - 1;
medge->v2 = pa->hair_index;
dvert = hair_set_pinning(dvert, 1.0f);
mvert++;
medge++;
}
/* store root transform in cloth data */
hair = &psys->clmd->hairdata[pa->hair_index + k];
copy_v3_v3(hair->loc, root_mat[3]); copy_v3_v3(hair->loc, root_mat[3]);
copy_m3_m4(hair->rot, root_mat); copy_m3_m4(hair->rot, root_mat);
hair->radius = hair_radius; hair->radius = hair_radius;
hair->bending_stiffness = bending_stiffness; hair->bending_stiffness = bending_stiffness;
add_v3_v3v3(mvert->co, co, co); copy_v3_v3(mvert->co, co);
sub_v3_v3(mvert->co, co_next);
mul_m4_v3(hairmat, mvert->co); mul_m4_v3(hairmat, mvert->co);
medge->v1 = pa->hair_index - 1; if (k) {
medge->v2 = pa->hair_index; medge->v1 = pa->hair_index + k - 1;
medge->v2 = pa->hair_index + k;
dvert = hair_set_pinning(dvert, 1.0f); }
/* roots and disabled hairs should be 1.0, the rest can be anything from 0.0 to 1.0 */
if (use_hair)
dvert = hair_set_pinning(dvert, key->weight);
else
dvert = hair_set_pinning(dvert, 1.0f);
mvert++; mvert++;
medge++; if (k)
medge++;
} }
/* store root transform in cloth data */ hair_index += pa->totkey + 1;
hair = &psys->clmd->hairdata[pa->hair_index + k];
copy_v3_v3(hair->loc, root_mat[3]);
copy_m3_m4(hair->rot, root_mat);
hair->radius = hair_radius;
hair->bending_stiffness = bending_stiffness;
copy_v3_v3(mvert->co, co);
mul_m4_v3(hairmat, mvert->co);
if (k) {
medge->v1 = pa->hair_index + k - 1;
medge->v2 = pa->hair_index + k;
}
/* roots and disabled hairs should be 1.0, the rest can be anything from 0.0 to 1.0 */
if (use_hair)
dvert = hair_set_pinning(dvert, key->weight);
else
dvert = hair_set_pinning(dvert, 1.0f);
mvert++;
if (k)
medge++;
} }
hair_index += pa->totkey + 1;
} }
} }
@@ -3154,9 +3158,11 @@ static void do_hair_dynamics(ParticleSimulationData *sim)
totpoint = 0; totpoint = 0;
totedge = 0; totedge = 0;
LOOP_PARTICLES { LOOP_PARTICLES {
/* "out" dm contains all hairs */ if (!(pa->flag & PARS_UNEXIST)) {
totedge += pa->totkey; /* "out" dm contains all hairs */
totpoint += pa->totkey + 1; /* +1 for virtual root point */ totedge += pa->totkey;
totpoint += pa->totkey + 1; /* +1 for virtual root point */
}
} }
realloc_roots = false; /* whether hair root info array has to be reallocated */ realloc_roots = false; /* whether hair root info array has to be reallocated */

View File

@@ -61,6 +61,9 @@ void BLO_update_defaults_userpref_blend(void)
U.uiflag |= USER_QUIT_PROMPT; U.uiflag |= USER_QUIT_PROMPT;
U.uiflag |= USER_CONTINUOUS_MOUSE; U.uiflag |= USER_CONTINUOUS_MOUSE;
/* See T45301 */
U.uiflag |= USER_LOCK_CURSOR_ADJUST;
U.versions = 1; U.versions = 1;
U.savetime = 2; U.savetime = 2;

View File

@@ -685,7 +685,7 @@ static bool ui_but_update_from_old_block(const bContext *C, uiBlock *block, uiBu
if (oldbut->active) { if (oldbut->active) {
/* flags from the buttons we want to refresh, may want to add more here... */ /* flags from the buttons we want to refresh, may want to add more here... */
const int flag_copy = UI_BUT_REDALERT; const int flag_copy = UI_BUT_REDALERT | UI_HAS_ICON;
found_active = true; found_active = true;

View File

@@ -194,8 +194,9 @@ static const char *ui_item_name_add_colon(const char *name, char namestr[UI_MAX_
static int ui_item_fit(int item, int pos, int all, int available, bool is_last, int alignment, float *extra_pixel) static int ui_item_fit(int item, int pos, int all, int available, bool is_last, int alignment, float *extra_pixel)
{ {
/* available == 0 is unlimited */ /* available == 0 is unlimited */
if (available == 0) if (ELEM(0, available, all)) {
return item; return item;
}
if (all > available) { if (all > available) {
/* contents is bigger than available space */ /* contents is bigger than available space */
@@ -218,8 +219,9 @@ static int ui_item_fit(int item, int pos, int all, int available, bool is_last,
return (int)width; return (int)width;
} }
} }
else else {
return item; return item;
}
} }
} }
@@ -702,7 +704,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, const char *n
WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL); WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL);
} }
else if (flag & UI_ITEM_R_EVENT) { else if (flag & UI_ITEM_R_EVENT) {
uiDefButR_prop(block, UI_BTYPE_KEY_EVENT, 0, name, x, y, w, h, ptr, prop, index, 0, 0, -1, -1, NULL); but = uiDefButR_prop(block, UI_BTYPE_KEY_EVENT, 0, name, x, y, w, h, ptr, prop, index, 0, 0, -1, -1, NULL);
} }
else if (flag & UI_ITEM_R_FULL_EVENT) { else if (flag & UI_ITEM_R_FULL_EVENT) {
if (RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) { if (RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) {

View File

@@ -2912,6 +2912,24 @@ void init_userdef_do_versions(void)
} }
} }
if (!USER_VERSION_ATLEAST(278, 6)) {
/* Clear preference flags for re-use. */
U.flag &= ~(
(1 << 1) | (1 << 2) | (1 << 3) |
(1 << 6) | (1 << 7) |
(1 << 9) | (1 << 10));
U.uiflag &= ~(
(1 << 7));
U.transopts &= ~(
(1 << 2) | (1 << 3) | (1 << 4) |
(1 << 7));
U.gameflags &= ~(
(1 << 0) | (1 << 1) |
(1 << 3) | (1 << 4));
U.uiflag |= USER_LOCK_CURSOR_ADJUST;
}
/** /**
* Include next version bump. * Include next version bump.
* *

View File

@@ -4745,13 +4745,20 @@ void ED_view3d_cursor3d_update(bContext *C, const int mval[2])
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
float co_curr[2], co_prev[2]; if (U.uiflag & USER_LOCK_CURSOR_ADJUST) {
if ((ED_view3d_project_float_global(ar, fp_prev, co_prev, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) && float co_curr[2], co_prev[2];
(ED_view3d_project_float_global(ar, fp_curr, co_curr, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK))
{ if ((ED_view3d_project_float_global(ar, fp_prev, co_prev, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) &&
rv3d->ofs_lock[0] += (co_curr[0] - co_prev[0]) / (ar->winx * 0.5f); (ED_view3d_project_float_global(ar, fp_curr, co_curr, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK))
rv3d->ofs_lock[1] += (co_curr[1] - co_prev[1]) / (ar->winy * 0.5f); {
rv3d->ofs_lock[0] += (co_curr[0] - co_prev[0]) / (ar->winx * 0.5f);
rv3d->ofs_lock[1] += (co_curr[1] - co_prev[1]) / (ar->winy * 0.5f);
}
}
else {
/* Cursor may be outside of the view, prevent it getting 'lost', see: T40353 & T45301 */
zero_v2(rv3d->ofs_lock);
} }
} }

View File

@@ -48,7 +48,8 @@ struct ColorBand;
#define MAX_STYLE_NAME 64 #define MAX_STYLE_NAME 64
/* default uifont_id offered by Blender */ /* default offered by Blender.
* uiFont.uifont_id */
typedef enum eUIFont_ID { typedef enum eUIFont_ID {
UIFONT_DEFAULT = 0, UIFONT_DEFAULT = 0,
/* UIFONT_BITMAP = 1 */ /* UNUSED */ /* UIFONT_BITMAP = 1 */ /* UNUSED */
@@ -64,7 +65,7 @@ typedef struct uiFont {
struct uiFont *next, *prev; struct uiFont *next, *prev;
char filename[1024];/* 1024 = FILE_MAX */ char filename[1024];/* 1024 = FILE_MAX */
short blf_id; /* from blfont lib */ short blf_id; /* from blfont lib */
short uifont_id; /* own id */ short uifont_id; /* own id (eUIFont_ID) */
short r_to_l; /* fonts that read from left to right */ short r_to_l; /* fonts that read from left to right */
short hinting; short hinting;
} uiFont; } uiFont;
@@ -84,7 +85,7 @@ typedef struct uiFontStyle {
float shadowcolor; /* 1 value, typically white or black anyway */ float shadowcolor; /* 1 value, typically white or black anyway */
} uiFontStyle; } uiFontStyle;
/* uiFontStyle->align */ /* uiFontStyle.align */
typedef enum eFontStyle_Align { typedef enum eFontStyle_Align {
UI_STYLE_TEXT_LEFT = 0, UI_STYLE_TEXT_LEFT = 0,
UI_STYLE_TEXT_CENTER = 1, UI_STYLE_TEXT_CENTER = 1,
@@ -354,11 +355,11 @@ typedef struct ThemeWireColor {
char select[4]; char select[4];
char active[4]; char active[4];
short flag; short flag; /* eWireColor_Flags */
short pad; short pad;
} ThemeWireColor; } ThemeWireColor;
/* flags for ThemeWireColor */ /* ThemeWireColor.flag */
typedef enum eWireColor_Flags { typedef enum eWireColor_Flags {
TH_WIRECOLOR_CONSTCOLS = (1 << 0), TH_WIRECOLOR_CONSTCOLS = (1 << 0),
TH_WIRECOLOR_TEXTCOLS = (1 << 1), TH_WIRECOLOR_TEXTCOLS = (1 << 1),
@@ -434,7 +435,8 @@ typedef struct UserDef {
/* UserDef has separate do-version handling, and can be read from other files */ /* UserDef has separate do-version handling, and can be read from other files */
int versionfile, subversionfile; int versionfile, subversionfile;
int flag, dupflag; int flag; /* eUserPref_Flag */
int dupflag; /* eDupli_ID_Flags */
int savetime; int savetime;
char tempdir[768]; /* FILE_MAXDIR length */ char tempdir[768]; /* FILE_MAXDIR length */
char fontdir[768]; char fontdir[768];
@@ -450,14 +452,15 @@ typedef struct UserDef {
int anim_player_preset; int anim_player_preset;
short v2d_min_gridsize; /* minimum spacing between gridlines in View2D grids */ short v2d_min_gridsize; /* minimum spacing between gridlines in View2D grids */
short timecode_style; /* style of timecode display */ short timecode_style; /* eTimecodeStyles, style of timecode display */
short versions; short versions;
short dbl_click_time; short dbl_click_time;
short gameflags; short gameflags;
short wheellinescroll; short wheellinescroll;
int uiflag, uiflag2; int uiflag; /* eUserpref_UI_Flag */
int uiflag2; /* eUserpref_UI_Flag2 */
int language; int language;
short userpref, viewzoom; short userpref, viewzoom;
@@ -473,7 +476,7 @@ typedef struct UserDef {
int pad1; int pad1;
char node_margin; /* node insert offset (aka auto-offset) margin, but might be useful for later stuff as well */ char node_margin; /* node insert offset (aka auto-offset) margin, but might be useful for later stuff as well */
char pad2; char pad2;
short transopts; short transopts; /* eUserpref_Translation_Flags */
short menuthreshold1, menuthreshold2; short menuthreshold1, menuthreshold2;
/* startup template */ /* startup template */
@@ -491,13 +494,13 @@ typedef struct UserDef {
short undosteps; short undosteps;
short undomemory; short undomemory;
short gp_manhattendist, gp_euclideandist, gp_eraser; short gp_manhattendist, gp_euclideandist, gp_eraser;
short gp_settings; short gp_settings; /* eGP_UserdefSettings */
short tb_leftmouse, tb_rightmouse; short tb_leftmouse, tb_rightmouse;
struct SolidLight light[3]; struct SolidLight light[3];
short manipulator_flag, manipulator_size; short manipulator_flag, manipulator_size;
int pad3; int pad3;
short textimeout, texcollectrate; short textimeout, texcollectrate;
short wmdrawmethod; /* removed wmpad */ short wmdrawmethod; /* eWM_DrawMethod */
short dragthreshold; short dragthreshold;
int memcachelimit; int memcachelimit;
int prefetchframes; int prefetchframes;
@@ -510,13 +513,13 @@ typedef struct UserDef {
short smooth_viewtx; /* miliseconds to spend spinning the view */ short smooth_viewtx; /* miliseconds to spend spinning the view */
short glreslimit; short glreslimit;
short curssize; short curssize;
short color_picker_type; short color_picker_type; /* eColorPicker_Types */
char ipo_new; /* interpolation mode for newly added F-Curves */ char ipo_new; /* interpolation mode for newly added F-Curves */
char keyhandles_new; /* handle types for newly added keyframes */ char keyhandles_new; /* handle types for newly added keyframes */
char gpu_select_method; char gpu_select_method;
char gpu_select_pick_deph; char gpu_select_pick_deph;
char pad4; char pad4;
char view_frame_type; char view_frame_type; /* eZoomFrame_Mode */
int view_frame_keyframes; /* number of keyframes to zoom around current frame */ int view_frame_keyframes; /* number of keyframes to zoom around current frame */
float view_frame_seconds; /* seconds to zoom around current frame */ float view_frame_seconds; /* seconds to zoom around current frame */
@@ -531,15 +534,16 @@ typedef struct UserDef {
float ndof_sensitivity; /* overall sensitivity of 3D mouse */ float ndof_sensitivity; /* overall sensitivity of 3D mouse */
float ndof_orbit_sensitivity; float ndof_orbit_sensitivity;
float ndof_deadzone; /* deadzone of 3D mouse */ float ndof_deadzone; /* deadzone of 3D mouse */
int ndof_flag; /* flags for 3D mouse */ int ndof_flag; /* eNdof_Flag, flags for 3D mouse */
short ogl_multisamples; /* amount of samples for OpenGL FSA, if zero no FSA */ short ogl_multisamples; /* eMultiSample_Type, amount of samples for OpenGL FSA, if zero no FSA */
short image_draw_method; /* Method to be used to draw the images (AUTO, GLSL, Textures or DrawPixels) */ /* eImageDrawMethod, Method to be used to draw the images (AUTO, GLSL, Textures or DrawPixels) */
short image_draw_method;
float glalphaclip; float glalphaclip;
short autokey_mode; /* autokeying mode */ short autokey_mode; /* eAutokey_Mode, autokeying mode */
short autokey_flag; /* flags for autokeying */ short autokey_flag; /* flags for autokeying */
short text_render, pad9; /* options for text rendering */ short text_render, pad9; /* options for text rendering */
@@ -583,7 +587,7 @@ extern UserDef U; /* from blenkernel blender.c */
/* ***************** USERDEF ****************** */ /* ***************** USERDEF ****************** */
/* userpref/section */ /* UserDef.userpref (UI active_section) */
typedef enum eUserPref_Section { typedef enum eUserPref_Section {
USER_SECTION_INTERFACE = 0, USER_SECTION_INTERFACE = 0,
USER_SECTION_EDIT = 1, USER_SECTION_EDIT = 1,
@@ -594,19 +598,15 @@ typedef enum eUserPref_Section {
USER_SECTION_ADDONS = 6, USER_SECTION_ADDONS = 6,
} eUserPref_Section; } eUserPref_Section;
/* flag */ /* UserDef.flag */
typedef enum eUserPref_Flag { typedef enum eUserPref_Flag {
USER_AUTOSAVE = (1 << 0), USER_AUTOSAVE = (1 << 0),
/* USER_AUTOGRABGRID = (1 << 1), deprecated */ /* 1..3 */
/* USER_AUTOROTGRID = (1 << 2), deprecated */
/* USER_AUTOSIZEGRID = (1 << 3), deprecated */
/* USER_SCENEGLOBAL = (1 << 4), deprecated */ /* USER_SCENEGLOBAL = (1 << 4), deprecated */
USER_TRACKBALL = (1 << 5), USER_TRACKBALL = (1 << 5),
/* USER_DUPLILINK = (1 << 6), deprecated */ /* 6..7 */
/* USER_FSCOLLUM = (1 << 7), deprecated */
USER_MAT_ON_OB = (1 << 8), USER_MAT_ON_OB = (1 << 8),
/* USER_NO_CAPSLOCK = (1 << 9), */ /* not used anywhere */ /* 9..10 */
/* USER_VIEWMOVE = (1 << 10), */ /* not used anywhere */
USER_TOOLTIPS = (1 << 11), USER_TOOLTIPS = (1 << 11),
USER_TWOBUTTONMOUSE = (1 << 12), USER_TWOBUTTONMOUSE = (1 << 12),
USER_NONUMPAD = (1 << 13), USER_NONUMPAD = (1 << 13),
@@ -625,7 +625,7 @@ typedef enum eUserPref_Flag {
USER_TOOLTIPS_PYTHON = (1 << 26), USER_TOOLTIPS_PYTHON = (1 << 26),
} eUserPref_Flag; } eUserPref_Flag;
/* flag */ /* bPathCompare.flag */
typedef enum ePathCompare_Flag { typedef enum ePathCompare_Flag {
USER_PATHCMP_GLOB = (1 << 0), USER_PATHCMP_GLOB = (1 << 0),
} ePathCompare_Flag; } ePathCompare_Flag;
@@ -636,33 +636,34 @@ typedef enum ePathCompare_Flag {
cfra = 0; \ cfra = 0; \
} (void)0 } (void)0
/* viewzoom */ /* UserDef.viewzoom */
typedef enum eViewZoom_Style { typedef enum eViewZoom_Style {
USER_ZOOM_CONT = 0, USER_ZOOM_CONT = 0,
USER_ZOOM_SCALE = 1, USER_ZOOM_SCALE = 1,
USER_ZOOM_DOLLY = 2 USER_ZOOM_DOLLY = 2
} eViewZoom_Style; } eViewZoom_Style;
/* navigation_mode */ /* UserDef.navigation_mode */
typedef enum eViewNavigation_Method { typedef enum eViewNavigation_Method {
VIEW_NAVIGATION_WALK = 0, VIEW_NAVIGATION_WALK = 0,
VIEW_NAVIGATION_FLY = 1, VIEW_NAVIGATION_FLY = 1,
} eViewNavigation_Method; } eViewNavigation_Method;
/* flag */ /* UserDef.flag */
typedef enum eWalkNavigation_Flag { typedef enum eWalkNavigation_Flag {
USER_WALK_GRAVITY = (1 << 0), USER_WALK_GRAVITY = (1 << 0),
USER_WALK_MOUSE_REVERSE = (1 << 1), USER_WALK_MOUSE_REVERSE = (1 << 1),
} eWalkNavigation_Flag; } eWalkNavigation_Flag;
/* uiflag */ /* UserDef.uiflag */
typedef enum eUserpref_UI_Flag { typedef enum eUserpref_UI_Flag {
/* flags 0 and 1 were old flags (for autokeying) that aren't used anymore */ /* flags 0 and 1 were old flags (for autokeying) that aren't used anymore */
USER_WHEELZOOMDIR = (1 << 2), USER_WHEELZOOMDIR = (1 << 2),
USER_FILTERFILEEXTS = (1 << 3), USER_FILTERFILEEXTS = (1 << 3),
USER_DRAWVIEWINFO = (1 << 4), USER_DRAWVIEWINFO = (1 << 4),
USER_PLAINMENUS = (1 << 5), USER_PLAINMENUS = (1 << 5),
/* flags 6 and 7 were old flags that are no-longer used */ USER_LOCK_CURSOR_ADJUST = (1 << 6),
/* flag 7 is free */
USER_ALLWINCODECS = (1 << 8), USER_ALLWINCODECS = (1 << 8),
USER_MENUOPENAUTO = (1 << 9), USER_MENUOPENAUTO = (1 << 9),
USER_ZBUF_CURSOR = (1 << 10), USER_ZBUF_CURSOR = (1 << 10),
@@ -689,14 +690,15 @@ typedef enum eUserpref_UI_Flag {
USER_HIDE_SYSTEM_BOOKMARKS = (1 << 31) USER_HIDE_SYSTEM_BOOKMARKS = (1 << 31)
} eUserpref_UI_Flag; } eUserpref_UI_Flag;
/* uiflag2 */ /* UserDef.uiflag2 */
typedef enum eUserpref_UI_Flag2 { typedef enum eUserpref_UI_Flag2 {
USER_KEEP_SESSION = (1 << 0), USER_KEEP_SESSION = (1 << 0),
USER_REGION_OVERLAP = (1 << 1), USER_REGION_OVERLAP = (1 << 1),
USER_TRACKPAD_NATURAL = (1 << 2), USER_TRACKPAD_NATURAL = (1 << 2),
} eUserpref_UI_Flag2; } eUserpref_UI_Flag2;
/* Auto-Keying mode */ /* Auto-Keying mode.
* UserDef.autokey_mode */
typedef enum eAutokey_Mode { typedef enum eAutokey_Mode {
/* AUTOKEY_ON is a bitflag */ /* AUTOKEY_ON is a bitflag */
AUTOKEY_ON = 1, AUTOKEY_ON = 1,
@@ -706,7 +708,8 @@ typedef enum eAutokey_Mode {
AUTOKEY_MODE_EDITKEYS = 5 AUTOKEY_MODE_EDITKEYS = 5
} eAutokey_Mode; } eAutokey_Mode;
/* Zoom to frame mode */ /* Zoom to frame mode.
* UserDef.view_frame_type */
typedef enum eZoomFrame_Mode { typedef enum eZoomFrame_Mode {
ZOOM_FRAME_MODE_KEEP_RANGE = 0, ZOOM_FRAME_MODE_KEEP_RANGE = 0,
ZOOM_FRAME_MODE_SECONDS = 1, ZOOM_FRAME_MODE_SECONDS = 1,
@@ -729,20 +732,18 @@ typedef enum eAutokey_Flag {
ANIMRECORD_FLAG_WITHNLA = (1 << 10), ANIMRECORD_FLAG_WITHNLA = (1 << 10),
} eAutokey_Flag; } eAutokey_Flag;
/* transopts */ /* UserDef.transopts */
typedef enum eUserpref_Translation_Flags { typedef enum eUserpref_Translation_Flags {
USER_TR_TOOLTIPS = (1 << 0), USER_TR_TOOLTIPS = (1 << 0),
USER_TR_IFACE = (1 << 1), USER_TR_IFACE = (1 << 1),
/* USER_TR_MENUS = (1 << 2), deprecated */ /* 2..4 */
/* USER_TR_FILESELECT = (1 << 3), deprecated */
/* USER_TR_TEXTEDIT = (1 << 4), deprecated */
USER_DOTRANSLATE = (1 << 5), USER_DOTRANSLATE = (1 << 5),
USER_USETEXTUREFONT = (1 << 6), USER_USETEXTUREFONT = (1 << 6),
/* CONVERT_TO_UTF8 = (1 << 7), deprecated */ /* 7 */
USER_TR_NEWDATANAME = (1 << 8), USER_TR_NEWDATANAME = (1 << 8),
} eUserpref_Translation_Flags; } eUserpref_Translation_Flags;
/* dupflag */ /* UserDef.dupflag */
typedef enum eDupli_ID_Flags { typedef enum eDupli_ID_Flags {
USER_DUP_MESH = (1 << 0), USER_DUP_MESH = (1 << 0),
USER_DUP_CURVE = (1 << 1), USER_DUP_CURVE = (1 << 1),
@@ -758,14 +759,9 @@ typedef enum eDupli_ID_Flags {
USER_DUP_PSYS = (1 << 11) USER_DUP_PSYS = (1 << 11)
} eDupli_ID_Flags; } eDupli_ID_Flags;
/* gameflags */ /* UserDef.gameflags */
typedef enum eOpenGL_RenderingOptions { typedef enum eOpenGL_RenderingOptions {
/* USER_DEPRECATED_FLAG = (1 << 0), */
/* USER_DISABLE_SOUND = (1 << 1), */ /* deprecated, don't use without checking for */
/* backwards compatibilty in do_versions! */
USER_DISABLE_MIPMAP = (1 << 2), USER_DISABLE_MIPMAP = (1 << 2),
/* USER_DISABLE_VBO = (1 << 3), */ /* DEPRECATED we always use vertex buffers now */
/* USER_DISABLE_AA = (1 << 4), */ /* DEPRECATED */
} eOpenGL_RenderingOptions; } eOpenGL_RenderingOptions;
/* selection method for opengl gpu_select_method */ /* selection method for opengl gpu_select_method */
@@ -775,7 +771,8 @@ typedef enum eOpenGL_SelectOptions {
USER_SELECT_USE_SELECT_RENDERMODE = 2 USER_SELECT_USE_SELECT_RENDERMODE = 2
} eOpenGL_SelectOptions; } eOpenGL_SelectOptions;
/* wm draw method */ /* wm draw method.
* UserDef.wmdrawmethod */
typedef enum eWM_DrawMethod { typedef enum eWM_DrawMethod {
USER_DRAW_TRIPLE = 0, USER_DRAW_TRIPLE = 0,
USER_DRAW_OVERLAP = 1, USER_DRAW_OVERLAP = 1,
@@ -784,12 +781,16 @@ typedef enum eWM_DrawMethod {
USER_DRAW_OVERLAP_FLIP = 4, USER_DRAW_OVERLAP_FLIP = 4,
} eWM_DrawMethod; } eWM_DrawMethod;
/* text draw options */ /* text draw options
* UserDef.text_render */
typedef enum eText_Draw_Options { typedef enum eText_Draw_Options {
USER_TEXT_DISABLE_AA = (1 << 0), USER_TEXT_DISABLE_AA = (1 << 0),
} eText_Draw_Options; } eText_Draw_Options;
/* gp_settings (Grease Pencil Settings) */ /* tw_flag (transform widget) */
/* Grease Pencil Settings.
* UserDef.gp_settings */
typedef enum eGP_UserdefSettings { typedef enum eGP_UserdefSettings {
GP_PAINT_DOSMOOTH = (1 << 0), GP_PAINT_DOSMOOTH = (1 << 0),
GP_PAINT_DOSIMPLIFY = (1 << 1), GP_PAINT_DOSIMPLIFY = (1 << 1),
@@ -800,7 +801,8 @@ enum {
USER_MANIPULATOR_SHADED = (1 << 1), USER_MANIPULATOR_SHADED = (1 << 1),
}; };
/* color picker types */ /* Color Picker Types.
* UserDef.color_picker_type */
typedef enum eColorPicker_Types { typedef enum eColorPicker_Types {
USER_CP_CIRCLE_HSV = 0, USER_CP_CIRCLE_HSV = 0,
USER_CP_SQUARE_SV = 1, USER_CP_SQUARE_SV = 1,
@@ -809,7 +811,8 @@ typedef enum eColorPicker_Types {
USER_CP_CIRCLE_HSL = 4, USER_CP_CIRCLE_HSL = 4,
} eColorPicker_Types; } eColorPicker_Types;
/* timecode display styles */ /* timecode display styles
* UserDef.timecode_style */
typedef enum eTimecodeStyles { typedef enum eTimecodeStyles {
/* as little info as is necessary to show relevant info /* as little info as is necessary to show relevant info
* with '+' to denote the frames * with '+' to denote the frames
@@ -844,7 +847,7 @@ typedef enum eTheme_DrawTypes {
TH_SHADED = 4 TH_SHADED = 4
} eTheme_DrawTypes; } eTheme_DrawTypes;
/* ndof_flag (3D mouse options) */ /* UserDef.ndof_flag (3D mouse options) */
typedef enum eNdof_Flag { typedef enum eNdof_Flag {
NDOF_SHOW_GUIDE = (1 << 0), NDOF_SHOW_GUIDE = (1 << 0),
NDOF_FLY_HELICOPTER = (1 << 1), NDOF_FLY_HELICOPTER = (1 << 1),
@@ -877,6 +880,7 @@ typedef enum eNdof_Flag {
#define NDOF_PIXELS_PER_SECOND 600.0f #define NDOF_PIXELS_PER_SECOND 600.0f
/* UserDef.ogl_multisamples */
typedef enum eMultiSample_Type { typedef enum eMultiSample_Type {
USER_MULTISAMPLE_NONE = 0, USER_MULTISAMPLE_NONE = 0,
USER_MULTISAMPLE_2 = 2, USER_MULTISAMPLE_2 = 2,
@@ -884,7 +888,8 @@ typedef enum eMultiSample_Type {
USER_MULTISAMPLE_8 = 8, USER_MULTISAMPLE_8 = 8,
USER_MULTISAMPLE_16 = 16, USER_MULTISAMPLE_16 = 16,
} eMultiSample_Type; } eMultiSample_Type;
/* UserDef.image_draw_method */
typedef enum eImageDrawMethod { typedef enum eImageDrawMethod {
/* IMAGE_DRAW_METHOD_AUTO = 0, */ /* Currently unused */ /* IMAGE_DRAW_METHOD_AUTO = 0, */ /* Currently unused */
IMAGE_DRAW_METHOD_GLSL = 1, IMAGE_DRAW_METHOD_GLSL = 1,
@@ -892,6 +897,7 @@ typedef enum eImageDrawMethod {
IMAGE_DRAW_METHOD_DRAWPIXELS = 3, IMAGE_DRAW_METHOD_DRAWPIXELS = 3,
} eImageDrawMethod; } eImageDrawMethod;
/* UserDef.virtual_pixel */
typedef enum eUserpref_VirtualPixel { typedef enum eUserpref_VirtualPixel {
VIRTUAL_PIXEL_NATIVE = 0, VIRTUAL_PIXEL_NATIVE = 0,
VIRTUAL_PIXEL_DOUBLE = 1, VIRTUAL_PIXEL_DOUBLE = 1,

View File

@@ -3358,7 +3358,7 @@ static void def_frame(StructRNA *srna)
prop = RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE); prop = RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_struct_type(prop, "Text"); RNA_def_property_struct_type(prop, "Text");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_ui_text(prop, "Text", ""); RNA_def_property_ui_text(prop, "Text", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@@ -3628,7 +3628,7 @@ static void def_sh_lamp(StructRNA *srna)
prop = RNA_def_property(srna, "lamp_object", PROP_POINTER, PROP_NONE); prop = RNA_def_property(srna, "lamp_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_struct_type(prop, "Object"); RNA_def_property_struct_type(prop, "Object");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Lamp_object_poll"); RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Lamp_object_poll");
RNA_def_property_ui_text(prop, "Lamp Object", ""); RNA_def_property_ui_text(prop, "Lamp Object", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@@ -4002,7 +4002,7 @@ static void def_sh_tex_coord(StructRNA *srna)
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_struct_type(prop, "Object"); RNA_def_property_struct_type(prop, "Object");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_ui_text(prop, "Object", "Use coordinates from this object (for object texture coordinates output)"); RNA_def_property_ui_text(prop, "Object", "Use coordinates from this object (for object texture coordinates output)");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@@ -4118,7 +4118,7 @@ static void def_sh_tex_pointdensity(StructRNA *srna)
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_struct_type(prop, "Object"); RNA_def_property_struct_type(prop, "Object");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_ui_text(prop, "Object", "Object to take point data from"); RNA_def_property_ui_text(prop, "Object", "Object to take point data from");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@@ -4818,7 +4818,7 @@ static void def_cmp_render_layers(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL); RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL);
RNA_def_property_struct_type(prop, "Scene"); RNA_def_property_struct_type(prop, "Scene");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_ui_text(prop, "Scene", ""); RNA_def_property_ui_text(prop, "Scene", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_scene_layer_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_scene_layer_update");
@@ -5475,7 +5475,7 @@ static void def_cmp_defocus(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "id"); RNA_def_property_pointer_sdna(prop, NULL, "id");
RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL); RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL);
RNA_def_property_struct_type(prop, "Scene"); RNA_def_property_struct_type(prop, "Scene");
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
RNA_def_property_ui_text(prop, "Scene", "Scene from which to select the active camera (render scene if undefined)"); RNA_def_property_ui_text(prop, "Scene", "Scene from which to select the active camera (render scene if undefined)");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");

View File

@@ -3443,6 +3443,11 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Cursor Depth", RNA_def_property_ui_text(prop, "Cursor Depth",
"Use the depth under the mouse when placing the cursor"); "Use the depth under the mouse when placing the cursor");
prop = RNA_def_property(srna, "use_cursor_lock_adjust", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_LOCK_CURSOR_ADJUST);
RNA_def_property_ui_text(prop, "Cursor Lock Adjust",
"Place the cursor without 'jumping' to the new location (when lock-to-cursor is used)");
prop = RNA_def_property(srna, "use_camera_lock_parent", PROP_BOOLEAN, PROP_NONE); prop = RNA_def_property(srna, "use_camera_lock_parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "uiflag", USER_CAM_LOCK_NO_PARENT); RNA_def_property_boolean_negative_sdna(prop, NULL, "uiflag", USER_CAM_LOCK_NO_PARENT);
RNA_def_property_ui_text(prop, "Camera Parent Lock", RNA_def_property_ui_text(prop, "Camera Parent Lock",
@@ -3920,17 +3925,17 @@ static void rna_def_userdef_system(BlenderRNA *brna)
prop = RNA_def_property(srna, "dpi", PROP_INT, PROP_NONE); prop = RNA_def_property(srna, "dpi", PROP_INT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "DPI", RNA_def_property_ui_text(prop, "DPI",
"DPI for addons to use when drawing custom user interface elements. Controlled by " "DPI for add-ons to use when drawing custom user interface elements, controlled by "
"operating system settings and Blender UI scale, with a reference value of 72 DPI. " "operating system settings and Blender UI scale, with a reference value of 72 DPI "
"Note that since this value includes a user defined scale, it is not always the " "(note that since this value includes a user defined scale, it is not always the "
"actual monitor DPI"); "actual monitor DPI)");
prop = RNA_def_property(srna, "pixel_size", PROP_FLOAT, PROP_NONE); prop = RNA_def_property(srna, "pixel_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_float_sdna(prop, NULL, "pixelsize"); RNA_def_property_float_sdna(prop, NULL, "pixelsize");
RNA_def_property_ui_text(prop, "Pixel Size", RNA_def_property_ui_text(prop, "Pixel Size",
"Suggested line thickness and point size in pixels, for addons drawing custom user " "Suggested line thickness and point size in pixels, for add-ons drawing custom user "
"interface elements. Controlled by operating system settings and Blender UI scale"); "interface elements, controlled by operating system settings and Blender UI scale");
prop = RNA_def_property(srna, "font_path_ui", PROP_STRING, PROP_FILEPATH); prop = RNA_def_property(srna, "font_path_ui", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "font_path_ui"); RNA_def_property_string_sdna(prop, NULL, "font_path_ui");

View File

@@ -390,6 +390,9 @@ static void exporter_InitGeomArrays(ExportMeshData *export_data,
* the operand. Data for those layers will not be allocated or initialized. * the operand. Data for those layers will not be allocated or initialized.
*/ */
CustomData_merge(&dm_left->vertData, &dm->vertData, merge_mask, CD_DEFAULT, num_verts);
CustomData_merge(&dm_right->vertData, &dm->vertData, merge_mask, CD_DEFAULT, num_verts);
CustomData_merge(&dm_left->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops); CustomData_merge(&dm_left->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops);
CustomData_merge(&dm_right->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops); CustomData_merge(&dm_right->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops);