[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28979] branches/render25/source: Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/ blender -r28971:28978
Brecht Van Lommel
brecht at blender.org
Tue May 25 15:50:36 CEST 2010
Revision: 28979
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28979
Author: blendix
Date: 2010-05-25 15:50:36 +0200 (Tue, 25 May 2010)
Log Message:
-----------
Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r28971:28978
Modified Paths:
--------------
branches/render25/source/blender/blenkernel/intern/cloth.c
branches/render25/source/blender/blenkernel/intern/implicit.c
branches/render25/source/blender/blenloader/intern/readfile.c
branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp
branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp
branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h
branches/render25/source/gameengine/Ketsji/KX_Scene.cpp
Modified: branches/render25/source/blender/blenkernel/intern/cloth.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-25 13:50:36 UTC (rev 28979)
@@ -27,18 +27,16 @@
#include "MEM_guardedalloc.h"
-#include "BKE_cloth.h"
+#include "BLI_ghash.h"
#include "BKE_cdderivedmesh.h"
+#include "BKE_cloth.h"
#include "BKE_effect.h"
#include "BKE_global.h"
#include "BKE_modifier.h"
+#include "BKE_pointcache.h"
#include "BKE_utildefines.h"
-#include "BKE_pointcache.h"
-
-#include "BLI_ghash.h"
-
#ifdef _WIN32
void tstart ( void )
{}
Modified: branches/render25/source/blender/blenkernel/intern/implicit.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/implicit.c 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenkernel/intern/implicit.c 2010-05-25 13:50:36 UTC (rev 28979)
@@ -39,7 +39,6 @@
#include "BLI_threads.h"
-//#define CLOTH_GOAL_ORIGINAL
#define CLOTH_OPENMP_LIMIT 25
#ifdef _WIN32
@@ -2140,7 +2139,7 @@
// update verts to current positions
for(i = 0; i < numverts; i++)
- {
+ {
VECCOPY(verts[i].txold, verts[i].tx);
VECCOPY(verts[i].tx, id->Xnew[i]);
@@ -2175,7 +2174,7 @@
// X = Xnew;
cp_lfvector(id->X, id->Xnew, numverts);
-
+
// if there were collisions, advance the velocity from v_n+1/2 to v_n+1
// also used now for filtering goal and rigid body damping changes now
Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenloader/intern/readfile.c 2010-05-25 13:50:36 UTC (rev 28979)
@@ -10969,8 +10969,10 @@
}
}
+
/* put 2.50 compatibility code here until next subversion bump */
{
+ Object *ob;
bScreen *sc;
for (sc= main->screen.first; sc; sc= sc->id.next) {
@@ -10992,6 +10994,38 @@
}
do_version_mdef_250(fd, lib, main);
+
+ /* parent type to modifier */
+ for(ob = main->object.first; ob; ob = ob->id.next) {
+ if(ob->parent) {
+ Object *parent= newlibadr(fd, lib, ob->parent);
+ if(parent->type==OB_ARMATURE && ob->partype==PARSKEL) {
+ ArmatureModifierData *amd;
+
+ amd = (ArmatureModifierData*) modifier_new(eModifierType_Armature);
+ amd->object = ob->parent;
+ BLI_addtail((ListBase*)&ob->modifiers, amd);
+ amd->deformflag= ((bArmature *)(parent->data))->deformflag;
+ ob->partype = PAROBJECT;
+ }
+ else if(parent->type==OB_LATTICE && ob->partype==PARSKEL) {
+ LatticeModifierData *lmd;
+
+ lmd = (LatticeModifierData*) modifier_new(eModifierType_Lattice);
+ lmd->object = ob->parent;
+ BLI_addtail((ListBase*)&ob->modifiers, lmd);
+ ob->partype = PAROBJECT;
+ }
+ else if(parent->type==OB_CURVE && ob->partype==PARCURVE) {
+ CurveModifierData *cmd;
+
+ cmd = (CurveModifierData*) modifier_new(eModifierType_Curve);
+ cmd->object = ob->parent;
+ BLI_addtail((ListBase*)&ob->modifiers, cmd);
+ ob->partype = PAROBJECT;
+ }
+ }
+ }
}
if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 10))
Modified: branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp 2010-05-25 13:50:36 UTC (rev 28979)
@@ -1729,7 +1729,7 @@
// only support relative shape key
bool bHasShapeKey = mesh->key != NULL && mesh->key->type==KEY_RELATIVE;
bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
- bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
+ bool bHasArmature = (BL_ModifierDeformer::HasArmatureDeformer(ob) && ob->parent && ob->parent->type == OB_ARMATURE && bHasDvert);
bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob);
bool bHasSoftBody = (!ob->parent && (ob->gameflag & OB_SOFT_BODY));
@@ -2357,8 +2357,8 @@
if (me->dvert){
BL_DeformableGameObject *obj = (BL_DeformableGameObject*)converter->FindGameObject(blenderobj);
-
- if (obj && blenderobj->parent && blenderobj->parent->type==OB_ARMATURE && blenderobj->partype==PARSKEL){
+
+ if (obj && BL_ModifierDeformer::HasArmatureDeformer(blenderobj) && blenderobj->parent && blenderobj->parent->type==OB_ARMATURE){
KX_GameObject *par = converter->FindGameObject(blenderobj->parent);
if (par && obj->GetDeformer())
((BL_SkinDeformer*)obj->GetDeformer())->SetArmature((BL_ArmatureObject*) par);
Modified: branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp
===================================================================
--- branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp 2010-05-25 13:50:36 UTC (rev 28979)
@@ -114,11 +114,27 @@
continue;
if (!(md->mode & eModifierMode_Realtime))
continue;
+ /* armature modifier are handled by SkinDeformer, not ModifierDeformer */
+ if (md->type == eModifierType_Armature )
+ continue;
return true;
}
return false;
}
+bool BL_ModifierDeformer::HasArmatureDeformer(Object *ob)
+{
+ if (!ob->modifiers.first)
+ return false;
+
+ ModifierData* md;
+ for (md = (ModifierData*)ob->modifiers.first; md; md = (ModifierData*)md->next) {
+ if (md->type == eModifierType_Armature )
+ return true;
+ }
+ return false;
+}
+
bool BL_ModifierDeformer::Update(void)
{
bool bShapeUpdate = BL_ShapeDeformer::Update();
Modified: branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h
===================================================================
--- branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h 2010-05-25 13:50:36 UTC (rev 28979)
@@ -45,6 +45,7 @@
{
public:
static bool HasCompatibleDeformer(Object *ob);
+ static bool HasArmatureDeformer(Object *ob);
BL_ModifierDeformer(BL_DeformableGameObject *gameobj,
Modified: branches/render25/source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
--- branches/render25/source/gameengine/Ketsji/KX_Scene.cpp 2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Ketsji/KX_Scene.cpp 2010-05-25 13:50:36 UTC (rev 28979)
@@ -1067,12 +1067,12 @@
bool bHasShapeKey = blendmesh->key != NULL && blendmesh->key->type==KEY_RELATIVE;
bool bHasDvert = blendmesh->dvert != NULL;
bool bHasArmature =
+ BL_ModifierDeformer::HasArmatureDeformer(blendobj) &&
parentobj && // current parent is armature
parentobj->GetGameObjectType() == SCA_IObject::OBJ_ARMATURE &&
oldblendobj && // needed for mesh deform
blendobj->parent && // original object had armature (not sure this test is needed)
- blendobj->parent->type == OB_ARMATURE &&
- blendobj->partype==PARSKEL &&
+ blendobj->parent->type == OB_ARMATURE &&
blendmesh->dvert!=NULL; // mesh has vertex group
bool bHasSoftBody = (!parentobj && (blendobj->gameflag & OB_SOFT_BODY));
More information about the Bf-blender-cvs
mailing list