Merge branch 'master' into blender2.8
This commit is contained in:
@@ -579,13 +579,16 @@ static void MergeVertsFast(int piTriList_in_and_out[], STmpVert pTmpVert[], cons
|
||||
{
|
||||
// make bbox
|
||||
int c=0, l=0, channel=0;
|
||||
float fvMin[3] = {INFINITY, INFINITY, INFINITY};
|
||||
float fvMax[3] = {-INFINITY, -INFINITY, -INFINITY};
|
||||
float fvMin[3], fvMax[3];
|
||||
float dx=0, dy=0, dz=0, fSep=0;
|
||||
for (l=iL_in; l<=iR_in; l++)
|
||||
for (c=0; c<3; c++)
|
||||
{ fvMin[c]=pTmpVert[iL_in].vert[c]; fvMax[c]=fvMin[c]; }
|
||||
for (l=(iL_in+1); l<=iR_in; l++) {
|
||||
for (c=0; c<3; c++) {
|
||||
if (fvMin[c]>pTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c];
|
||||
else if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c];
|
||||
if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c];
|
||||
}
|
||||
}
|
||||
|
||||
dx = fvMax[0]-fvMin[0];
|
||||
dy = fvMax[1]-fvMin[1];
|
||||
|
||||
18
make.bat
18
make.bat
@@ -126,24 +126,12 @@ set BUILD_DIR=%BUILD_DIR%_%TARGET%_%BUILD_ARCH%_vc%BUILD_VS_VER%_%BUILD_TYPE%
|
||||
|
||||
if "%target%"=="Release" (
|
||||
rem for vc12 check for both cuda 7.5 and 8
|
||||
if "%BUILD_VS_VER%"=="12" (
|
||||
if "%CUDA_PATH_V7_5%"=="" (
|
||||
echo Cuda 7.5 Not found, aborting!
|
||||
if "%CUDA_PATH%"=="" (
|
||||
echo Cuda Not found, aborting!
|
||||
goto EOF
|
||||
)
|
||||
)
|
||||
if "%CUDA_PATH_V8_0%"=="" (
|
||||
echo Cuda 8.0 Not found, aborting!
|
||||
goto EOF
|
||||
)
|
||||
if "%BUILD_VS_VER%"=="12" (
|
||||
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
|
||||
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake" -DCUDA_NVCC_EXECUTABLE:FILEPATH=%CUDA_PATH_V7_5%/bin/nvcc.exe -DCUDA_NVCC8_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe
|
||||
)
|
||||
if "%BUILD_VS_VER%"=="14" (
|
||||
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
|
||||
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake" -DCUDA_NVCC_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe -DCUDA_NVCC8_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe
|
||||
)
|
||||
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake"
|
||||
)
|
||||
|
||||
:DetectMSVC
|
||||
|
||||
@@ -1006,10 +1006,10 @@ class WM_OT_doc_view(Operator):
|
||||
|
||||
doc_id = doc_id
|
||||
if bpy.app.version_cycle == "release":
|
||||
_prefix = ("http://www.blender.org/documentation/blender_python_api_%s%s_release" %
|
||||
_prefix = ("https://www.blender.org/api/blender_python_api_%s%s_release" %
|
||||
("_".join(str(v) for v in bpy.app.version[:2]), bpy.app.version_char))
|
||||
else:
|
||||
_prefix = ("http://www.blender.org/documentation/blender_python_api_%s" %
|
||||
_prefix = ("https://www.blender.org/api/blender_python_api_%s" %
|
||||
"_".join(str(v) for v in bpy.app.version))
|
||||
|
||||
def execute(self, context):
|
||||
@@ -1023,79 +1023,6 @@ class WM_OT_doc_view(Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
'''
|
||||
class WM_OT_doc_edit(Operator):
|
||||
"""Edit online reference docs"""
|
||||
bl_idname = "wm.doc_edit"
|
||||
bl_label = "Edit Documentation"
|
||||
|
||||
doc_id = doc_id
|
||||
doc_new = doc_new
|
||||
|
||||
_url = "http://www.mindrones.com/blender/svn/xmlrpc.php"
|
||||
|
||||
def _send_xmlrpc(self, data_dict):
|
||||
print("sending data:", data_dict)
|
||||
|
||||
import xmlrpc.client
|
||||
user = "blenderuser"
|
||||
pwd = "blender>user"
|
||||
|
||||
docblog = xmlrpc.client.ServerProxy(self._url)
|
||||
docblog.metaWeblog.newPost(1, user, pwd, data_dict, 1)
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
doc_id = self.doc_id
|
||||
doc_new = self.doc_new
|
||||
|
||||
class_name, class_prop = doc_id.split('.')
|
||||
|
||||
if not doc_new:
|
||||
self.report({'ERROR'}, "No input given for '%s'" % doc_id)
|
||||
return {'CANCELLED'}
|
||||
|
||||
# check if this is an operator
|
||||
op_name = class_name.upper() + '_OT_' + class_prop
|
||||
op_class = getattr(bpy.types, op_name, None)
|
||||
|
||||
# Upload this to the web server
|
||||
upload = {}
|
||||
|
||||
if op_class:
|
||||
rna = op_class.bl_rna
|
||||
doc_orig = rna.description
|
||||
if doc_orig == doc_new:
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
print("op - old:'%s' -> new:'%s'" % (doc_orig, doc_new))
|
||||
upload["title"] = 'OPERATOR %s:%s' % (doc_id, doc_orig)
|
||||
else:
|
||||
rna = getattr(bpy.types, class_name).bl_rna
|
||||
doc_orig = rna.properties[class_prop].description
|
||||
if doc_orig == doc_new:
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
print("rna - old:'%s' -> new:'%s'" % (doc_orig, doc_new))
|
||||
upload["title"] = 'RNA %s:%s' % (doc_id, doc_orig)
|
||||
|
||||
upload["description"] = doc_new
|
||||
|
||||
self._send_xmlrpc(upload)
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.label(text="Descriptor ID: '%s'" % self.doc_id)
|
||||
layout.prop(self, "doc_new", text="")
|
||||
|
||||
def invoke(self, context, event):
|
||||
wm = context.window_manager
|
||||
return wm.invoke_props_dialog(self, width=600)
|
||||
'''
|
||||
|
||||
|
||||
rna_path = StringProperty(
|
||||
name="Property Edit",
|
||||
description="Property data_path edit",
|
||||
|
||||
@@ -254,6 +254,21 @@ static void library_foreach_paint(LibraryForeachIDData *data, Paint *paint)
|
||||
FOREACH_FINALIZE_VOID;
|
||||
}
|
||||
|
||||
static void library_foreach_ID_as_subdata_link(
|
||||
ID *id, LibraryIDLinkCallback callback, void *user_data, int flag, LibraryForeachIDData *data)
|
||||
{
|
||||
if (flag & IDWALK_RECURSE) {
|
||||
/* Defer handling into main loop, recursively calling BKE_library_foreach_ID_link in IDWALK_RECURSE case is
|
||||
* troublesome, see T49553. */
|
||||
if (!BLI_gset_haskey(data->ids_handled, id)) {
|
||||
BLI_gset_add(data->ids_handled, id);
|
||||
BLI_LINKSTACK_PUSH(data->ids_todo, id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
BKE_library_foreach_ID_link(id, callback, user_data, flag);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loop over all of the ID's this datablock links to.
|
||||
@@ -271,6 +286,8 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
|
||||
data.ids_handled = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
|
||||
BLI_LINKSTACK_INIT(data.ids_todo);
|
||||
|
||||
BLI_gset_add(data.ids_handled, id);
|
||||
}
|
||||
else {
|
||||
data.ids_handled = NULL;
|
||||
@@ -315,7 +332,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
CALLBACK_INVOKE(scene->clip, IDWALK_USER);
|
||||
if (scene->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)scene->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)scene->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
/* DO NOT handle scene->basact here, it's doubling with the loop over whole scene->base later,
|
||||
* since basact is just a pointer to one of those items. */
|
||||
@@ -570,7 +587,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
}
|
||||
if (material->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)material->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)material->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
CALLBACK_INVOKE(material->group, IDWALK_USER);
|
||||
break;
|
||||
@@ -581,7 +598,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
Tex *texture = (Tex *) id;
|
||||
if (texture->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)texture->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)texture->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
CALLBACK_INVOKE(texture->ima, IDWALK_USER);
|
||||
if (texture->env) {
|
||||
@@ -614,7 +631,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
}
|
||||
if (lamp->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)lamp->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)lamp->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -654,7 +671,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
}
|
||||
if (world->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)world->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)world->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -751,7 +768,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
||||
}
|
||||
if (linestyle->nodetree) {
|
||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||
BKE_library_foreach_ID_link((ID *)linestyle->nodetree, callback, user_data, flag);
|
||||
library_foreach_ID_as_subdata_link((ID *)linestyle->nodetree, callback, user_data, flag, &data);
|
||||
}
|
||||
|
||||
for (lsm = linestyle->color_modifiers.first; lsm; lsm = lsm->next) {
|
||||
|
||||
@@ -3049,6 +3049,14 @@ static bool constructive_modifier_is_deform_modified(ModifierData *md)
|
||||
ScrewModifierData *smd = (ScrewModifierData *)md;
|
||||
return smd->ob_axis != NULL && object_moves_in_time(smd->ob_axis);
|
||||
}
|
||||
else if (md->type == eModifierType_MeshSequenceCache) {
|
||||
/* NOTE: Not ideal because it's unknown whether topology changes or not.
|
||||
* This will be detected later, so by assuming it's only deformation
|
||||
* going on here we allow to bake deform-only mesh to Alembic and have
|
||||
* proper motion blur after that.
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf)
|
||||
RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius");
|
||||
|
||||
/* Interpolation */
|
||||
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL, 0);
|
||||
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL | KM_ALT, 0);
|
||||
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0);
|
||||
|
||||
/* Sculpting ------------------------------------- */
|
||||
|
||||
@@ -2639,6 +2639,7 @@ static void ui_draw_separator(const rcti *rect, uiWidgetColors *wcol)
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glColor4ubv(col);
|
||||
glLineWidth(1.0f);
|
||||
sdrawline(rect->xmin, y, rect->xmax, y);
|
||||
glDisable(GL_BLEND);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user