[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22290] trunk/blender/source: gameObject - > blenderObject mapping was being created but wasnt needed.

Campbell Barton ideasman42 at gmail.com
Fri Aug 7 05:51:32 CEST 2009


Revision: 22290
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22290
Author:   campbellbarton
Date:     2009-08-07 05:51:28 +0200 (Fri, 07 Aug 2009)

Log Message:
-----------
gameObject -> blenderObject mapping was being created but wasnt needed.
Added utility func tag_main for (un)tagging every ID in a Main database with LIB_DOIT.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_library.h
    trunk/blender/source/blender/blenkernel/intern/library.c
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
    trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp

Modified: trunk/blender/source/blender/blenkernel/BKE_library.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_library.h	2009-08-07 03:06:32 UTC (rev 22289)
+++ trunk/blender/source/blender/blenkernel/BKE_library.h	2009-08-07 03:51:28 UTC (rev 22290)
@@ -55,6 +55,7 @@
 void free_libblock(struct ListBase *lb, void *idv);
 void free_libblock_us(struct ListBase *lb, void *idv);
 void free_main(struct Main *mainvar);
+void tag_main(struct Main *mainvar, int tag);
 
 void splitIDname(char *name, char *left, int *nr);
 void rename_id(struct ID *id, char *name);

Modified: trunk/blender/source/blender/blenkernel/intern/library.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/library.c	2009-08-07 03:06:32 UTC (rev 22289)
+++ trunk/blender/source/blender/blenkernel/intern/library.c	2009-08-07 03:51:28 UTC (rev 22290)
@@ -1020,7 +1020,21 @@
 	}
 }
 
+void tag_main(struct Main *mainvar, int tag)
+{
+	ListBase *lbarray[MAX_LIBARRAY];
+	ID *id;
+	int a;
 
+	a= set_listbasepointers(mainvar, lbarray);
+	while(a--) {
+		for(id= lbarray[a]->first; id; id= id->next) {
+			if(tag)	id->flag |= LIB_DOIT;
+			else	id->flag &= ~LIB_DOIT;
+		}
+	}
+}
+
 /* if lib!=NULL, only all from lib local */
 void all_local(Library *lib, int untagged_only)
 {

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2009-08-07 03:06:32 UTC (rev 22289)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2009-08-07 03:51:28 UTC (rev 22290)
@@ -2520,7 +2520,7 @@
 	for (i=0;i<sumolist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
-		struct Object* blenderobject = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobject = gameobj->GetBlenderObject();
 		int nummeshes = gameobj->GetMeshCount();
 		RAS_MeshObject* meshobj = 0;
 		if (nummeshes > 0)
@@ -2536,7 +2536,7 @@
 	for (i=0;i<sumolist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
-		struct Object* blenderobject = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobject = gameobj->GetBlenderObject();
 		int nummeshes = gameobj->GetMeshCount();
 		RAS_MeshObject* meshobj = 0;
 		if (nummeshes > 0)
@@ -2564,7 +2564,7 @@
 	for (i=0;i<sumolist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
-		struct Object* blenderobject = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobject = gameobj->GetBlenderObject();
 		ListBase *conlist;
 		bConstraint *curcon;
 		conlist = get_active_constraints2(blenderobject);
@@ -2661,7 +2661,7 @@
 	for (i=0;i<logicbrick_conversionlist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = static_cast<KX_GameObject*>(logicbrick_conversionlist->GetValue(i));
-		struct Object* blenderobj = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobj = gameobj->GetBlenderObject();
 		int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
 		bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
 		BL_ConvertActuators(maggie->name, blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,layerMask,isInActiveLayer,rendertools,converter);
@@ -2669,7 +2669,7 @@
 	for ( i=0;i<logicbrick_conversionlist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = static_cast<KX_GameObject*>(logicbrick_conversionlist->GetValue(i));
-		struct Object* blenderobj = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobj = gameobj->GetBlenderObject();
 		int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
 		bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
 		BL_ConvertControllers(blenderobj,gameobj,logicmgr,pythondictionary,layerMask,isInActiveLayer,converter);
@@ -2677,7 +2677,7 @@
 	for ( i=0;i<logicbrick_conversionlist->GetCount();i++)
 	{
 		KX_GameObject* gameobj = static_cast<KX_GameObject*>(logicbrick_conversionlist->GetValue(i));
-		struct Object* blenderobj = converter->FindBlenderObject(gameobj);
+		struct Object* blenderobj = gameobj->GetBlenderObject();
 		int layerMask = (groupobj.find(blenderobj) == groupobj.end()) ? activeLayerBitInfo : 0;
 		bool isInActiveLayer = (blenderobj->lay & layerMask)!=0;
 		BL_ConvertSensors(blenderobj,gameobj,logicmgr,kxscene,ketsjiEngine,layerMask,isInActiveLayer,canvas,converter);

Modified: trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp	2009-08-07 03:06:32 UTC (rev 22289)
+++ trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp	2009-08-07 03:51:28 UTC (rev 22290)
@@ -375,10 +375,6 @@
 	//This cache mecanism is buggy so I leave it disable and the memory leak
 	//that would result from this is fixed in RemoveScene()
 	m_map_mesh_to_gamemesh.clear();
-	//Don't clear this lookup, it is needed for the baking physics into ipo animation
-	//To avoid it's infinite grows, object will be unregister when they are deleted 
-	//see KX_Scene::NewRemoveObject
-	//m_map_gameobject_to_blender.clear();
 }
 
 // This function removes all entities stored in the converter for that scene
@@ -492,27 +488,28 @@
 									KX_GameObject *gameobject, 
 									struct Object *for_blenderobject) 
 {
-	m_map_gameobject_to_blender.insert(CHashedPtr(gameobject),for_blenderobject);
+	/* only maintained while converting, freed during game runtime */
 	m_map_blender_to_gameobject.insert(CHashedPtr(for_blenderobject),gameobject);
 }
 
 void KX_BlenderSceneConverter::UnregisterGameObject(
 									KX_GameObject *gameobject) 
 {
-	CHashedPtr gptr(gameobject);
-	struct Object **bobp= m_map_gameobject_to_blender[gptr];
+#if 0
+	struct Object *bobp= gameobject->GetBlenderObject();
 	if (bobp) {
-		CHashedPtr bptr(*bobp);
+		CHashedPtr bptr(bobp);
 		KX_GameObject **gobp= m_map_blender_to_gameobject[bptr];
 		if (gobp && *gobp == gameobject)
+		{
 			// also maintain m_map_blender_to_gameobject if the gameobject
 			// being removed is matching the blender object
 			m_map_blender_to_gameobject.remove(bptr);
-		m_map_gameobject_to_blender.remove(gptr);
+		}
 	}
+#endif
 }
 
-
 KX_GameObject *KX_BlenderSceneConverter::FindGameObject(
 									struct Object *for_blenderobject) 
 {
@@ -521,18 +518,6 @@
 	return obp?*obp:NULL;
 }
 
-
-
-struct Object *KX_BlenderSceneConverter::FindBlenderObject(
-									KX_GameObject *for_gameobject) 
-{
-	struct Object **obp= m_map_gameobject_to_blender[CHashedPtr(for_gameobject)];
-	
-	return obp?*obp:NULL;
-}
-
-	
-
 void KX_BlenderSceneConverter::RegisterGameMesh(
 									RAS_MeshObject *gamemesh,
 									struct Mesh *for_blendermesh)
@@ -717,7 +702,7 @@
 			{
 				//KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController();
 				
-				Object* blenderObject = FindBlenderObject(gameObj);
+				Object* blenderObject = gameObj->GetBlenderObject();
 				if (blenderObject)
 				{
 					//erase existing ipo's
@@ -781,7 +766,7 @@
 			for (int ix=0;ix<parentList->GetCount();ix++){
 				KX_GameObject* gameobj = (KX_GameObject*)parentList->GetValue(ix);
 				if (!gameobj->IsDynamic()){
-					Object* blenderobject = FindBlenderObject(gameobj);
+					Object* blenderobject = gameobj->GetBlenderObject();
 					if (!blenderobject)
 						continue;
 					if (blenderobject->type==OB_ARMATURE)
@@ -835,7 +820,7 @@
 			{
 				//KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController();
 				
-				Object* blenderObject = FindBlenderObject(gameObj);
+				Object* blenderObject = gameObj->GetBlenderObject();
 				if (blenderObject && blenderObject->ipo)
 				{
 					const MT_Point3& position = gameObj->NodeGetWorldPosition();
@@ -933,7 +918,7 @@
 			{
 				//KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController();
 				
-				Object* blenderObject = FindBlenderObject(gameObj);
+				Object* blenderObject = gameObj->GetBlenderObject();
 				if (blenderObject && blenderObject->ipo)
 				{
 					Ipo* ipo = blenderObject->ipo;

Modified: trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h	2009-08-07 03:06:32 UTC (rev 22289)
+++ trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.h	2009-08-07 03:51:28 UTC (rev 22290)
@@ -56,17 +56,13 @@
 	// Should also have a list of collision shapes. 
 	// For the time being this is held in KX_Scene::m_shapes
 
-	GEN_Map<CHashedPtr,struct Object*> m_map_gameobject_to_blender;
-	GEN_Map<CHashedPtr,KX_GameObject*> m_map_blender_to_gameobject;
-
-	GEN_Map<CHashedPtr,RAS_MeshObject*> m_map_mesh_to_gamemesh;
-//	GEN_Map<CHashedPtr,DT_ShapeHandle> m_map_gamemesh_to_sumoshape;
+	GEN_Map<CHashedPtr,KX_GameObject*>	m_map_blender_to_gameobject;		/* cleared after conversion */
+	GEN_Map<CHashedPtr,RAS_MeshObject*>	m_map_mesh_to_gamemesh;				/* cleared after conversion */
+	GEN_Map<CHashedPtr,SCA_IActuator*>	m_map_blender_to_gameactuator;		/* cleared after conversion */
+	GEN_Map<CHashedPtr,SCA_IController*>m_map_blender_to_gamecontroller;	/* cleared after conversion */
 	
-	GEN_Map<CHashedPtr,SCA_IActuator*> m_map_blender_to_gameactuator;
-	GEN_Map<CHashedPtr,SCA_IController*> m_map_blender_to_gamecontroller;
+	GEN_Map<CHashedPtr,BL_InterpolatorList*> m_map_blender_to_gameipolist;	/* kept, should be freed, TODO */
 	
-	GEN_Map<CHashedPtr,BL_InterpolatorList*> m_map_blender_to_gameipolist;
-	
 	Main*					m_maggie;
 
 	STR_String				m_newfilename;
@@ -107,14 +103,10 @@
 	void RegisterGameObject(KX_GameObject *gameobject, struct Object *for_blenderobject);
 	void UnregisterGameObject(KX_GameObject *gameobject);
 	KX_GameObject *FindGameObject(struct Object *for_blenderobject);
-	struct Object *FindBlenderObject(KX_GameObject *for_gameobject);
 
 	void RegisterGameMesh(RAS_MeshObject *gamemesh, struct Mesh *for_blendermesh);
 	RAS_MeshObject *FindGameMesh(struct Mesh *for_blendermesh/*, unsigned int onlayer*/);
 
-//	void RegisterSumoShape(DT_ShapeHandle shape, RAS_MeshObject *for_gamemesh);
-//	DT_ShapeHandle FindSumoShape(RAS_MeshObject *for_gamemesh);
-

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list