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:
authorKen Hughes <khughes@pacific.edu>2007-10-15 00:58:57 +0400
committerKen Hughes <khughes@pacific.edu>2007-10-15 00:58:57 +0400
commitff5fd2eb38871c23d4bcdc0ea6c646101b89546d (patch)
treea302944d717dc4a0515387669c12daa04230d640 /source/blender
parent34200718db9f46ea127c14f29580df60ff95b987 (diff)
Tools
----- Bugfix #7493: boolean difference operator was being applied in the wrong order (difference modifier worked correctly).
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/modifier.c2
-rw-r--r--source/blender/src/booleanops.c16
2 files changed, 9 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index bb5d4039336..98ba46d49d5 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -4907,7 +4907,7 @@ static DerivedMesh *booleanModifier_applyModifier(
/* we do a quick sanity check */
if(((Mesh *)ob->data)->totface > 3
&& bmd->object && ((Mesh *)bmd->object->data)->totface > 3) {
- DerivedMesh *result = NewBooleanDerivedMesh(ob, bmd->object,
+ DerivedMesh *result = NewBooleanDerivedMesh(bmd->object, ob,
1 + bmd->operation);
/* if new mesh returned, return it; otherwise there was
diff --git a/source/blender/src/booleanops.c b/source/blender/src/booleanops.c
index 2640a19ebf1..04214beeb90 100644
--- a/source/blender/src/booleanops.c
+++ b/source/blender/src/booleanops.c
@@ -449,8 +449,8 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
float map_mat[4][4];
DerivedMesh *dm = NULL;
- Mesh *me1 = get_mesh(ob);
- Mesh *me2 = get_mesh(ob_select);
+ Mesh *me1 = get_mesh(ob_select);
+ Mesh *me2 = get_mesh(ob);
if (me1 == NULL || me2 == NULL) return 0;
if (!me1->totface || !me2->totface) return 0;
@@ -458,9 +458,9 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
// we map the final object back into ob's local coordinate space. For this
// we need to compute the inverse transform from global to ob (inv_mat),
// and the transform from ob to ob_select for use in interpolation (map_mat)
- Mat4Invert(inv_mat, ob_select->obmat);
- Mat4MulMat4(map_mat, ob->obmat, inv_mat);
Mat4Invert(inv_mat, ob->obmat);
+ Mat4MulMat4(map_mat, ob_select->obmat, inv_mat);
+ Mat4Invert(inv_mat, ob_select->obmat);
{
// interface with the boolean module:
@@ -484,8 +484,8 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
default : op_type = e_csg_intersection;
}
- BuildMeshDescriptors(ob, 0, &fd_1, &vd_1);
- BuildMeshDescriptors(ob_select, me1->totface, &fd_2, &vd_2);
+ BuildMeshDescriptors(ob_select, 0, &fd_1, &vd_1);
+ BuildMeshDescriptors(ob, me1->totface, &fd_2, &vd_2);
bool_op = CSG_NewBooleanFunction();
@@ -500,7 +500,7 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
// iterate through results of operation and insert
// into new object
dm = ConvertCSGDescriptorsToDerivedMesh(
- &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, ob, ob_select);
+ &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, ob_select, ob);
// free up the memory
CSG_FreeVertexDescriptor(&vd_o);
@@ -540,7 +540,7 @@ int NewBooleanMesh(Base *base, Base *base_select, int int_op_type)
}
/* create a new blender mesh object - using 'base' as a template */
- ob_new= AddNewBlenderMesh(base);
+ ob_new= AddNewBlenderMesh(base_select);
me_new= ob_new->data;
DM_to_mesh(dm, me_new);