Merge branch 'master' into blender2.8
Conflicts: intern/cycles/blender/addon/properties.py
This commit is contained in:
@@ -1781,6 +1781,7 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
|
||||
BLI_duplicatelist(&pose->agroups, &frompose->agroups);
|
||||
pose->active_group = frompose->active_group;
|
||||
|
||||
BKE_pose_channels_hash_make(frompose);
|
||||
for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
|
||||
pchanp = BKE_pose_channel_find_name(frompose, pchan->name);
|
||||
|
||||
@@ -1916,7 +1917,7 @@ void BKE_pose_clear_pointers(bPose *pose)
|
||||
|
||||
/* only after leave editmode, duplicating, validating older files, library syncing */
|
||||
/* NOTE: pose->flag is set for it */
|
||||
void BKE_pose_rebuild(Object *ob, bArmature *arm)
|
||||
void BKE_pose_rebuild_ex(Object *ob, bArmature *arm, const bool sort_bones)
|
||||
{
|
||||
Bone *bone;
|
||||
bPose *pose;
|
||||
@@ -1963,8 +1964,9 @@ void BKE_pose_rebuild(Object *ob, bArmature *arm)
|
||||
#ifdef WITH_LEGACY_DEPSGRAPH
|
||||
/* the sorting */
|
||||
/* Sorting for new dependnecy graph is done on the scene graph level. */
|
||||
if (counter > 1)
|
||||
if (counter > 1 && sort_bones) {
|
||||
DAG_pose_sort(ob);
|
||||
}
|
||||
#endif
|
||||
|
||||
ob->pose->flag &= ~POSE_RECALC;
|
||||
@@ -1973,6 +1975,11 @@ void BKE_pose_rebuild(Object *ob, bArmature *arm)
|
||||
BKE_pose_channels_hash_make(ob->pose);
|
||||
}
|
||||
|
||||
void BKE_pose_rebuild(Object *ob, bArmature *arm)
|
||||
{
|
||||
BKE_pose_rebuild_ex(ob, arm, true);
|
||||
}
|
||||
|
||||
/* ********************** THE POSE SOLVER ******************* */
|
||||
|
||||
/* loc/rot/size to given mat4 */
|
||||
|
||||
@@ -93,7 +93,9 @@ void BKE_cachefile_free(CacheFile *cache_file)
|
||||
ABC_free_handle(cache_file->handle);
|
||||
#endif
|
||||
|
||||
BLI_mutex_free(cache_file->handle_mutex);
|
||||
if (cache_file->handle_mutex) {
|
||||
BLI_mutex_free(cache_file->handle_mutex);
|
||||
}
|
||||
BLI_freelistN(&cache_file->object_paths);
|
||||
}
|
||||
|
||||
|
||||
@@ -1761,7 +1761,8 @@ void BKE_library_make_local(
|
||||
it->link = NULL;
|
||||
do_loop = true;
|
||||
}
|
||||
else { /* Only used by linked data, potential candidate to ugly lib-only dependency cycles... */
|
||||
/* Only used by linked data, potential candidate to ugly lib-only dependency cycles... */
|
||||
else if ((id->tag & LIB_TAG_DOIT) == 0) { /* Check TAG_DOIT to avoid adding same ID several times... */
|
||||
/* Note that we store the node, not directly ID pointer, that way if it->link is set to NULL
|
||||
* later we can skip it in lib-dependency cycles search later. */
|
||||
BLI_linklist_prepend_arena(&linked_loop_candidates, it, linklist_mem);
|
||||
@@ -1804,6 +1805,7 @@ void BKE_library_make_local(
|
||||
BKE_libblock_unlink(bmain, id, false, false);
|
||||
BKE_libblock_free(bmain, id);
|
||||
#endif
|
||||
((LinkNode *)it->link)->link = NULL; /* Not strictly necessary, but safer (see T49903)... */
|
||||
it->link = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
|
||||
#include "BLI_strict_flags.h"
|
||||
|
||||
#include "atomic_ops.h"
|
||||
#include "mikktspace.h"
|
||||
|
||||
// #define DEBUG_TIME
|
||||
@@ -236,7 +237,9 @@ static void mesh_calc_normals_poly_accum_task_cb(void *userdata, const int pidx)
|
||||
const float fac = saacos(-dot_v3v3(cur_edge, prev_edge));
|
||||
|
||||
/* accumulate */
|
||||
madd_v3_v3fl(vnors[ml[i].v], pnor, fac);
|
||||
for (int k = 3; k--; ) {
|
||||
atomic_add_fl(&vnors[ml[i].v][k], pnor[k] * fac);
|
||||
}
|
||||
prev_edge = cur_edge;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -799,6 +799,18 @@ static void rigidbody_validate_sim_constraint(RigidBodyWorld *rbw, Object *ob, b
|
||||
RB_constraint_set_stiffness_6dof_spring(rbc->physics_constraint, RB_LIMIT_LIN_Z, rbc->spring_stiffness_z);
|
||||
RB_constraint_set_damping_6dof_spring(rbc->physics_constraint, RB_LIMIT_LIN_Z, rbc->spring_damping_z);
|
||||
|
||||
RB_constraint_set_spring_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_X, rbc->flag & RBC_FLAG_USE_SPRING_ANG_X);
|
||||
RB_constraint_set_stiffness_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_X, rbc->spring_stiffness_ang_x);
|
||||
RB_constraint_set_damping_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_X, rbc->spring_damping_ang_x);
|
||||
|
||||
RB_constraint_set_spring_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Y, rbc->flag & RBC_FLAG_USE_SPRING_ANG_Y);
|
||||
RB_constraint_set_stiffness_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Y, rbc->spring_stiffness_ang_y);
|
||||
RB_constraint_set_damping_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Y, rbc->spring_damping_ang_y);
|
||||
|
||||
RB_constraint_set_spring_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Z, rbc->flag & RBC_FLAG_USE_SPRING_ANG_Z);
|
||||
RB_constraint_set_stiffness_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Z, rbc->spring_stiffness_ang_z);
|
||||
RB_constraint_set_damping_6dof_spring(rbc->physics_constraint, RB_LIMIT_ANG_Z, rbc->spring_damping_ang_z);
|
||||
|
||||
RB_constraint_set_equilibrium_6dof_spring(rbc->physics_constraint);
|
||||
/* fall-through */
|
||||
case RBC_TYPE_6DOF:
|
||||
@@ -1057,9 +1069,15 @@ RigidBodyCon *BKE_rigidbody_create_constraint(Scene *UNUSED(scene), Object *ob,
|
||||
rbc->spring_damping_x = 0.5f;
|
||||
rbc->spring_damping_y = 0.5f;
|
||||
rbc->spring_damping_z = 0.5f;
|
||||
rbc->spring_damping_ang_x = 0.5f;
|
||||
rbc->spring_damping_ang_y = 0.5f;
|
||||
rbc->spring_damping_ang_z = 0.5f;
|
||||
rbc->spring_stiffness_x = 10.0f;
|
||||
rbc->spring_stiffness_y = 10.0f;
|
||||
rbc->spring_stiffness_z = 10.0f;
|
||||
rbc->spring_stiffness_ang_x = 10.0f;
|
||||
rbc->spring_stiffness_ang_y = 10.0f;
|
||||
rbc->spring_stiffness_ang_z = 10.0f;
|
||||
|
||||
rbc->motor_lin_max_impulse = 1.0f;
|
||||
rbc->motor_lin_target_velocity = 1.0f;
|
||||
|
||||
Reference in New Issue
Block a user