[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42667] trunk/blender/source/blender: de-duplicate parent loop checking function
Campbell Barton
ideasman42 at gmail.com
Fri Dec 16 11:39:45 CET 2011
Revision: 42667
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42667
Author: campbellbarton
Date: 2011-12-16 10:39:43 +0000 (Fri, 16 Dec 2011)
Log Message:
-----------
de-duplicate parent loop checking function
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_object.h
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/editors/object/object_relations.c
trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h 2011-12-16 10:30:53 UTC (rev 42666)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h 2011-12-16 10:39:43 UTC (rev 42667)
@@ -120,6 +120,8 @@
const short flag,
void (*func_cb)(const float[3], void *), void *user_data);
+int BKE_object_parent_loop_check(const struct Object *parent, const struct Object *ob);
+
void solve_tracking (struct Object *ob, float targetmat[][4]);
int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3]);
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2011-12-16 10:30:53 UTC (rev 42666)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2011-12-16 10:39:43 UTC (rev 42667)
@@ -2473,6 +2473,14 @@
copy_m4_m4(ob->imat, obtfm->imat);
}
+int BKE_object_parent_loop_check(const Object *par, const Object *ob)
+{
+ /* test if 'ob' is a parent somewhere in par's parents */
+ if(par == NULL) return 0;
+ if(ob == par) return 1;
+ return BKE_object_parent_loop_check(par->parent, ob);
+}
+
/* proxy rule: lib_object->proxy_from == the one we borrow from, only set temporal and cleared here */
/* local_object->proxy == pointer to library object, saved in files and read */
Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c 2011-12-16 10:30:53 UTC (rev 42666)
+++ trunk/blender/source/blender/editors/object/object_relations.c 2011-12-16 10:39:43 UTC (rev 42667)
@@ -512,19 +512,9 @@
{0, NULL, 0, NULL, NULL}
};
-static int test_parent_loop(Object *par, Object *ob)
-{
- /* test if 'ob' is a parent somewhere in par's parents */
-
- if(par == NULL) return 0;
- if(ob == par) return 1;
-
- return test_parent_loop(par->parent, ob);
-}
-
void ED_object_parent(Object *ob, Object *par, int type, const char *substr)
{
- if(!par || test_parent_loop(par, ob)) {
+ if (!par || BKE_object_parent_loop_check(par, ob)) {
ob->parent= NULL;
ob->partype= PAROBJECT;
ob->parsubstr[0]= 0;
@@ -593,7 +583,7 @@
if(ob!=par) {
- if( test_parent_loop(par, ob) ) {
+ if (BKE_object_parent_loop_check(par, ob)) {
BKE_report(op->reports, RPT_ERROR, "Loop in parents");
}
else {
@@ -766,7 +756,7 @@
/* context iterator */
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if (ob != par) {
- if (test_parent_loop(par, ob)) {
+ if (BKE_object_parent_loop_check(par, ob)) {
BKE_report(op->reports, RPT_ERROR, "Loop in parents");
}
else {
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c 2011-12-16 10:30:53 UTC (rev 42666)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c 2011-12-16 10:39:43 UTC (rev 42667)
@@ -59,6 +59,7 @@
#include "BKE_mesh.h"
#include "BKE_screen.h"
#include "BKE_deform.h"
+#include "BKE_object.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -1105,14 +1106,6 @@
}
}
-/* test if 'ob' is a parent somewhere in par's parents */
-static int test_parent_loop(Object *par, Object *ob)
-{
- if(par == NULL) return 0;
- if(ob == par) return 1;
- return test_parent_loop(par->parent, ob);
-}
-
static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event)
{
Main *bmain= CTX_data_main(C);
@@ -1144,7 +1137,7 @@
/* note; this case also used for parbone */
case B_OBJECTPANELPARENT:
if(ob) {
- if(ob->id.lib || test_parent_loop(ob->parent, ob) )
+ if (ob->id.lib || BKE_object_parent_loop_check(ob->parent, ob))
ob->parent= NULL;
else {
DAG_scene_sort(bmain, scene);
More information about the Bf-blender-cvs
mailing list