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:
-rw-r--r--source/blender/blenkernel/intern/rigidbody.c5
-rw-r--r--source/blender/blenloader/intern/versioning_280.c52
-rw-r--r--source/blender/makesdna/DNA_rigidbody_types.h22
3 files changed, 55 insertions, 24 deletions
diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index f08de835a9d..4d37c2ea931 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -1027,6 +1027,11 @@ static void rigidbody_validate_sim_constraint(RigidBodyWorld *rbw, Object *ob, b
return;
}
+ /* When 'rbc->type' is unknown. */
+ if (rbc->physics_constraint == NULL) {
+ return;
+ }
+
RB_constraint_set_enabled(rbc->physics_constraint, rbc->flag & RBC_FLAG_ENABLED);
if (rbc->flag & RBC_FLAG_USE_BREAKING) {
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index b90413aa5ca..329767ef202 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -4998,19 +4998,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
- /**
- * Versioning code until next subversion bump goes here.
- *
- * \note Be sure to check when bumping the version:
- * - #do_versions_after_linking_280 in this file.
- * - "versioning_userdef.c", #BLO_version_defaults_userpref_blend
- * - "versioning_userdef.c", #do_versions_theme
- *
- * \note Keep this message at the bottom of the function.
- */
- {
- /* Keep this block, even when empty. */
-
+ if (!MAIN_VERSION_ATLEAST(bmain, 283, 14)) {
/* Solidify modifier merge tolerance. */
if (!DNA_struct_elem_find(fd->filesdna, "SolidifyModifierData", "float", "merge_tolerance")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
@@ -5023,5 +5011,43 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
}
+
+ /* Enumerator was incorrect for a time in 2.83 development.
+ * Note that this only corrects values known to be invalid. */
+ for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
+ RigidBodyCon *rbc = ob->rigidbody_constraint;
+ if (rbc != NULL) {
+ enum {
+ INVALID_RBC_TYPE_SLIDER = 2,
+ INVALID_RBC_TYPE_6DOF_SPRING = 4,
+ INVALID_RBC_TYPE_MOTOR = 7,
+ };
+ switch (rbc->type) {
+ case INVALID_RBC_TYPE_SLIDER:
+ rbc->type = RBC_TYPE_SLIDER;
+ break;
+ case INVALID_RBC_TYPE_6DOF_SPRING:
+ rbc->type = RBC_TYPE_6DOF_SPRING;
+ break;
+ case INVALID_RBC_TYPE_MOTOR:
+ rbc->type = RBC_TYPE_MOTOR;
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Versioning code until next subversion bump goes here.
+ *
+ * \note Be sure to check when bumping the version:
+ * - #do_versions_after_linking_280 in this file.
+ * - "versioning_userdef.c", #BLO_version_defaults_userpref_blend
+ * - "versioning_userdef.c", #do_versions_theme
+ *
+ * \note Keep this message at the bottom of the function.
+ */
+ {
+ /* Keep this block, even when empty. */
}
}
diff --git a/source/blender/makesdna/DNA_rigidbody_types.h b/source/blender/makesdna/DNA_rigidbody_types.h
index 5c514ef04e1..7ae97187c25 100644
--- a/source/blender/makesdna/DNA_rigidbody_types.h
+++ b/source/blender/makesdna/DNA_rigidbody_types.h
@@ -306,28 +306,28 @@ typedef enum eRigidBodyCon_Type {
/** lets bodies rotate around a specified point */
RBC_TYPE_POINT = 0,
/** lets bodies rotate around a specified axis */
- RBC_TYPE_HINGE,
+ RBC_TYPE_HINGE = 1,
/** simulates wheel suspension */
- /* RBC_TYPE_HINGE2, */ /* UNUSED */
+ /* RBC_TYPE_HINGE2 = 2, */ /* UNUSED */
/** restricts movent to a specified axis */
- RBC_TYPE_SLIDER,
+ RBC_TYPE_SLIDER = 3,
/** lets object rotate within a specified cone */
- /* RBC_TYPE_CONE_TWIST, */ /* UNUSED */
+ /* RBC_TYPE_CONE_TWIST = 4, */ /* UNUSED */
/** allows user to specify constraint axes */
- RBC_TYPE_6DOF,
+ RBC_TYPE_6DOF = 5,
/** like 6DOF but has springs */
- RBC_TYPE_6DOF_SPRING,
+ RBC_TYPE_6DOF_SPRING = 6,
/** simulates a universal joint */
- /* RBC_TYPE_UNIVERSAL, */ /* UNUSED */
+ /* RBC_TYPE_UNIVERSAL = 7, */ /* UNUSED */
/** glues two bodies together */
- RBC_TYPE_FIXED,
+ RBC_TYPE_FIXED = 8,
/** similar to slider but also allows rotation around slider axis */
- RBC_TYPE_PISTON,
+ RBC_TYPE_PISTON = 9,
/** Simplified spring constraint with only once axis that's
* automatically placed between the connected bodies */
- /* RBC_TYPE_SPRING, */ /* UNUSED */
+ /* RBC_TYPE_SPRING = 10, */ /* UNUSED */
/** dirves bodies by applying linear and angular forces */
- RBC_TYPE_MOTOR,
+ RBC_TYPE_MOTOR = 11,
} eRigidBodyCon_Type;
/* Spring implementation type for RigidBodyOb */