[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54405] trunk/blender/source/blender/ blenkernel: rigidbody: Relink constraints when duplicating objects
Sergej Reich
sergej.reich at googlemail.com
Sat Feb 9 11:04:25 CET 2013
Revision: 54405
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54405
Author: sergof
Date: 2013-02-09 10:04:25 +0000 (Sat, 09 Feb 2013)
Log Message:
-----------
rigidbody: Relink constraints when duplicating objects
This will preserve constraint <-> rigid body realationships so
constraint setups aren't broken after duplication.
Based on a patch by Brandon Hechinger (jaggz), thanks.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_rigidbody.h
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/blenkernel/intern/rigidbody.c
Modified: trunk/blender/source/blender/blenkernel/BKE_rigidbody.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_rigidbody.h 2013-02-09 10:04:23 UTC (rev 54404)
+++ trunk/blender/source/blender/blenkernel/BKE_rigidbody.h 2013-02-09 10:04:25 UTC (rev 54405)
@@ -52,6 +52,7 @@
struct RigidBodyOb *BKE_rigidbody_copy_object(struct Object *ob);
struct RigidBodyCon *BKE_rigidbody_copy_constraint(struct Object *ob);
+void BKE_rigidbody_relink_constraint(struct RigidBodyCon *rbc);
/* -------------- */
/* Setup */
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2013-02-09 10:04:23 UTC (rev 54404)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2013-02-09 10:04:25 UTC (rev 54405)
@@ -3185,6 +3185,9 @@
if (ob->adt)
BKE_relink_animdata(ob->adt);
+
+ if (ob->rigidbody_constraint)
+ BKE_rigidbody_relink_constraint(ob->rigidbody_constraint);
ID_NEW(ob->parent);
Modified: trunk/blender/source/blender/blenkernel/intern/rigidbody.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/rigidbody.c 2013-02-09 10:04:23 UTC (rev 54404)
+++ trunk/blender/source/blender/blenkernel/intern/rigidbody.c 2013-02-09 10:04:25 UTC (rev 54405)
@@ -203,8 +203,6 @@
/* just duplicate the whole struct first (to catch all the settings) */
rbcN = MEM_dupallocN(ob->rigidbody_constraint);
- // RB_TODO be more clever about copying constrained objects
-
/* tag object as needing to be verified */
rbcN->flag |= RBC_FLAG_NEEDS_VALIDATE;
@@ -216,6 +214,13 @@
return rbcN;
}
+/* preserve relationships between constraints and rigid bodies after duplication */
+void BKE_rigidbody_relink_constraint(RigidBodyCon *rbc)
+{
+ ID_NEW(rbc->ob1);
+ ID_NEW(rbc->ob2);
+}
+
/* ************************************** */
/* Setup Utilities - Validate Sim Instances */
@@ -1291,6 +1296,7 @@
void BKE_rigidbody_free_constraint(Object *ob) {}
struct RigidBodyOb *BKE_rigidbody_copy_object(Object *ob) { return NULL; }
struct RigidBodyCon *BKE_rigidbody_copy_constraint(Object *ob) { return NULL; }
+void BKE_rigidbody_relink_constraint(RigidBodyCon *rbc) {}
void BKE_rigidbody_validate_sim_shape(Object *ob, short rebuild) {}
void BKE_rigidbody_validate_sim_object(RigidBodyWorld *rbw, Object *ob, short rebuild) {}
void BKE_rigidbody_validate_sim_constraint(RigidBodyWorld *rbw, Object *ob, short rebuild) {}
More information about the Bf-blender-cvs
mailing list