[Bf-blender-cvs] [ed4075c] master: Fix T41259: Objects parented to non-armature objects cannot play shape actions in the BGE

Mitchell Stokes noreply at git.blender.org
Tue Sep 23 16:55:42 CEST 2014


Commit: ed4075cb3410f7e51ea766ab771eee690e3da71c
Author: Mitchell Stokes
Date:   Tue Sep 23 07:52:34 2014 -0700
Branches: master
https://developer.blender.org/rBed4075cb3410f7e51ea766ab771eee690e3da71c

Fix T41259: Objects parented to non-armature objects cannot play shape actions in the BGE

===================================================================

M	source/gameengine/Ketsji/KX_Scene.cpp

===================================================================

diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index 625bbee..d0eab9d 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -1577,7 +1577,7 @@ void KX_Scene::AddAnimatedObject(CValue* gameobj)
 
 static void update_anim_thread_func(TaskPool *pool, void *taskdata, int UNUSED(threadid))
 {
-	KX_GameObject *gameobj, *child;
+	KX_GameObject *gameobj, *child, *parent;
 	CListValue *children;
 	bool needs_update;
 	double curtime = *(double*)BLI_task_pool_userdata(pool);
@@ -1621,8 +1621,11 @@ static void update_anim_thread_func(TaskPool *pool, void *taskdata, int UNUSED(t
 	if (needs_update) {
 		gameobj->UpdateActionManager(curtime);
 		children = gameobj->GetChildren();
+		parent = gameobj->GetParent();
 
-		if (!gameobj->GetParent() && gameobj->GetDeformer())
+		// Only do deformers here if they are not parented to an armature, otherwise the armature will
+		// handle updating its children
+		if (gameobj->GetDeformer() && (!parent || (parent && parent->GetGameObjectType() != SCA_IObject::OBJ_ARMATURE)))
 			gameobj->GetDeformer()->Update();
 
 		for (int j=0; j<children->GetCount(); ++j) {




More information about the Bf-blender-cvs mailing list