@@ -450,9 +450,9 @@ static KX_BlenderMaterial *ConvertMaterial(
450450static RAS_MaterialBucket *material_from_mesh (
451451 Material *ma, MFace *mface, MTFace *tface, const RAS_MeshObject::LayerList& layers, int lightlayer,
452452 unsigned int rgb[4 ][RAS_ITexVert::MAX_UNIT], MT_Vector2 uvs[4 ][RAS_ITexVert::MAX_UNIT],
453- KX_Scene* scene, KX_BlenderSceneConverter * converter)
453+ KX_Scene* scene, KX_BlenderSceneConverter& converter)
454454{
455- RAS_IPolyMaterial* polymat = converter-> FindCachedPolyMaterial (scene, ma);
455+ RAS_IPolyMaterial* polymat = converter. FindPolyMaterial ( ma);
456456
457457 if (mface) {
458458 GetRGB (mface, layers, rgb);
@@ -462,31 +462,27 @@ static RAS_MaterialBucket *material_from_mesh(
462462
463463 if (!polymat) {
464464 polymat = ConvertMaterial (ma, tface, lightlayer, scene);
465- converter->CachePolyMaterial (scene, ma, polymat);
465+ // this is needed to free up memory afterwards.
466+ converter.RegisterPolyMaterial (polymat, ma);
466467 }
467-
468+
468469 // see if a bucket was reused or a new one was created
469470 // this way only one KX_BlenderMaterial object has to exist per bucket
470471 bool bucketCreated;
471472 RAS_MaterialBucket* bucket = scene->FindBucket (polymat, bucketCreated);
472473
473- // this is needed to free up memory afterwards.
474- // the converter will also prevent duplicates from being registered,
475- // so just register everything.
476- converter->RegisterPolyMaterial (scene, polymat);
477-
478474 return bucket;
479475}
480476
481477/* blenderobj can be nullptr, make sure its checked for */
482- RAS_MeshObject* BL_ConvertMesh (Mesh* mesh, Object* blenderobj, KX_Scene* scene, KX_BlenderSceneConverter * converter, bool libloading)
478+ RAS_MeshObject* BL_ConvertMesh (Mesh* mesh, Object* blenderobj, KX_Scene* scene, KX_BlenderSceneConverter& converter, bool libloading)
483479{
484480 RAS_MeshObject *meshobj;
485481 int lightlayer = blenderobj ? blenderobj->lay :(1 <<20 )-1 ; // all layers if no object.
486482
487483 // Without checking names, we get some reuse we don't want that can cause
488484 // problems with material LoDs.
489- if (blenderobj && ((meshobj = converter-> FindGameMesh (mesh/* , ob->lay*/ )) != nullptr )) {
485+ if (blenderobj && ((meshobj = converter. FindGameMesh (mesh/* , ob->lay*/ )) != nullptr )) {
490486 const std::string bge_name = meshobj->GetName ();
491487 const std::string blender_name = ((ID *)blenderobj->data )->name + 2 ;
492488 if (bge_name == blender_name) {
@@ -744,7 +740,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene,
744740
745741 dm->release (dm);
746742
747- converter-> RegisterGameMesh (scene, meshobj, mesh);
743+ converter. RegisterGameMesh (meshobj, mesh);
748744 return meshobj;
749745}
750746
@@ -839,7 +835,7 @@ static void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
839835 RAS_MeshObject* meshobj,
840836 KX_Scene* kxscene,
841837 int activeLayerBitInfo,
842- KX_BlenderSceneConverter * converter,
838+ KX_BlenderSceneConverter& converter,
843839 bool processCompoundChildren
844840 )
845841
@@ -889,7 +885,7 @@ static void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
889885
890886 class PHY_IMotionState * motionstate = new KX_MotionState (gameobj->GetSGNode ());
891887
892- kxscene->GetPhysicsEnvironment ()->ConvertObject (gameobj, meshobj, dm, kxscene, shapeprops, motionstate, activeLayerBitInfo, isCompoundChild, hasCompoundChildren);
888+ kxscene->GetPhysicsEnvironment ()->ConvertObject (converter, gameobj, meshobj, dm, kxscene, shapeprops, motionstate, activeLayerBitInfo, isCompoundChild, hasCompoundChildren);
893889
894890 bool isActor = (blenderobject->gameflag & OB_ACTOR)!=0 ;
895891 bool isSensor = (blenderobject->gameflag & OB_SENSOR) != 0 ;
@@ -904,7 +900,7 @@ static void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
904900 }
905901}
906902
907- static KX_LodManager *lodmanager_from_blenderobject (Object *ob, KX_Scene *scene, KX_BlenderSceneConverter * converter, bool libloading)
903+ static KX_LodManager *lodmanager_from_blenderobject (Object *ob, KX_Scene *scene, KX_BlenderSceneConverter& converter, bool libloading)
908904{
909905 if (BLI_listbase_count_ex (&ob->lodlevels , 2 ) <= 1 ) {
910906 return nullptr ;
@@ -920,7 +916,7 @@ static KX_LodManager *lodmanager_from_blenderobject(Object *ob, KX_Scene *scene,
920916 return lodManager;
921917}
922918
923- static KX_LightObject *gamelight_from_blamp (Object *ob, Lamp *la, unsigned int layerflag, KX_Scene *kxscene, RAS_Rasterizer *rasterizer, KX_BlenderSceneConverter * converter)
919+ static KX_LightObject *gamelight_from_blamp (Object *ob, Lamp *la, unsigned int layerflag, KX_Scene *kxscene, RAS_Rasterizer *rasterizer, KX_BlenderSceneConverter& converter)
924920{
925921 RAS_ILightObject *lightobj = rasterizer->CreateLight ();
926922 KX_LightObject *gamelight;
@@ -974,7 +970,7 @@ static KX_LightObject *gamelight_from_blamp(Object *ob, Lamp *la, unsigned int l
974970 return gamelight;
975971}
976972
977- static KX_Camera *gamecamera_from_bcamera (Object *ob, KX_Scene *kxscene, KX_BlenderSceneConverter * converter)
973+ static KX_Camera *gamecamera_from_bcamera (Object *ob, KX_Scene *kxscene, KX_BlenderSceneConverter& converter)
978974{
979975 Camera* ca = static_cast <Camera*>(ob->data );
980976 RAS_CameraData camdata (ca->lens , ca->ortho_scale , ca->sensor_x , ca->sensor_y , ca->sensor_fit , ca->shiftx , ca->shifty , ca->clipsta , ca->clipend , ca->type == CAM_PERSP, ca->YF_dofdist );
@@ -993,7 +989,7 @@ static KX_GameObject *gameobject_from_blenderobject(
993989 Object *ob,
994990 KX_Scene *kxscene,
995991 RAS_Rasterizer *rendertools,
996- KX_BlenderSceneConverter * converter,
992+ KX_BlenderSceneConverter& converter,
997993 bool libloading)
998994{
999995 KX_GameObject *gameobj = nullptr ;
@@ -1307,7 +1303,7 @@ static void BL_ConvertComponentsObject(KX_GameObject *gameobj, Object *blenderob
13071303/* helper for BL_ConvertBlenderObjects, avoids code duplication
13081304 * note: all var names match args are passed from the caller */
13091305static void bl_ConvertBlenderObject_Single (
1310- KX_BlenderSceneConverter * converter,
1306+ KX_BlenderSceneConverter& converter,
13111307 Object *blenderobject,
13121308 std::vector<parentChildLink> &vec_parent_child,
13131309 CListValue* logicbrick_conversionlist,
@@ -1395,7 +1391,7 @@ static void bl_ConvertBlenderObject_Single(
13951391 for (int i = 0 ; i < gameobj->GetMeshCount (); i++)
13961392 logicmgr->RegisterGameMeshName (gameobj->GetMesh (i)->GetName (), blenderobject);
13971393
1398- converter-> RegisterGameObject (gameobj, blenderobject);
1394+ converter. RegisterGameObject (gameobj, blenderobject);
13991395 // this was put in rapidly, needs to be looked at more closely
14001396 // only draw/use objects in active 'blender' layers
14011397
@@ -1425,7 +1421,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
14251421 e_PhysicsEngine physics_engine,
14261422 RAS_Rasterizer* rendertools,
14271423 RAS_ICanvas* canvas,
1428- KX_BlenderSceneConverter* converter,
1424+ KX_BlenderSceneConverter& converter,
14291425 bool alwaysUseExpandFraming,
14301426 bool libloading
14311427 )
@@ -1597,7 +1593,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
15971593 for (go=(GroupObject*)group->gobject .first ; go; go=(GroupObject*)go->next )
15981594 {
15991595 Object* blenderobject = go->ob ;
1600- if (converter-> FindGameObject (blenderobject) == nullptr )
1596+ if (converter. FindGameObject (blenderobject) == nullptr )
16011597 {
16021598 allblobj.insert (blenderobject);
16031599 groupobj.insert (blenderobject);
@@ -1637,7 +1633,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
16371633
16381634 // non-camera objects not supported as camera currently
16391635 if (blenderscene->camera && blenderscene->camera ->type == OB_CAMERA) {
1640- KX_Camera *gamecamera= (KX_Camera*) converter-> FindGameObject (blenderscene->camera );
1636+ KX_Camera *gamecamera= (KX_Camera*) converter. FindGameObject (blenderscene->camera );
16411637
16421638 if (gamecamera)
16431639 kxscene->SetActiveCamera (gamecamera);
@@ -1652,10 +1648,10 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
16521648 Mesh *me = (Mesh*)blenderobj->data ;
16531649
16541650 if (me->dvert ) {
1655- BL_DeformableGameObject *obj = (BL_DeformableGameObject*)converter-> FindGameObject (blenderobj);
1651+ BL_DeformableGameObject *obj = (BL_DeformableGameObject*)converter. FindGameObject (blenderobj);
16561652
16571653 if (obj && BL_ModifierDeformer::HasArmatureDeformer (blenderobj) && blenderobj->parent && blenderobj->parent ->type ==OB_ARMATURE) {
1658- KX_GameObject *par = converter-> FindGameObject (blenderobj->parent );
1654+ KX_GameObject *par = converter. FindGameObject (blenderobj->parent );
16591655 if (par && obj->GetDeformer ())
16601656 ((BL_SkinDeformer*)obj->GetDeformer ())->SetArmature ((BL_ArmatureObject*) par);
16611657 }
@@ -1671,8 +1667,8 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
16711667
16721668 struct Object * blenderchild = pcit->m_blenderchild ;
16731669 struct Object * blenderparent = blenderchild->parent ;
1674- KX_GameObject* parentobj = converter-> FindGameObject (blenderparent);
1675- KX_GameObject* childobj = converter-> FindGameObject (blenderchild);
1670+ KX_GameObject* parentobj = converter. FindGameObject (blenderparent);
1671+ KX_GameObject* childobj = converter. FindGameObject (blenderchild);
16761672
16771673 BLI_assert (childobj);
16781674
@@ -1703,7 +1699,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
17031699 childrenlist->Release ();
17041700
17051701 // now destroy recursively
1706- converter-> UnregisterGameObject (childobj); // removing objects during conversion make sure this runs too
1702+ converter. UnregisterGameObject (childobj); // removing objects during conversion make sure this runs too
17071703 kxscene->RemoveObject (childobj);
17081704
17091705 continue ;
@@ -1862,7 +1858,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
18621858
18631859 KX_GameObject *viewpoint = gameobj;
18641860 if (env->object ) {
1865- KX_GameObject *obj = converter-> FindGameObject (env->object );
1861+ KX_GameObject *obj = converter. FindGameObject (env->object );
18661862 if (obj) {
18671863 viewpoint = obj;
18681864 }
@@ -1882,7 +1878,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
18821878 Mesh *predifinedBoundMesh = blenderobject->gamePredefinedBound ;
18831879
18841880 if (predifinedBoundMesh) {
1885- RAS_MeshObject *meshobj = converter-> FindGameMesh (predifinedBoundMesh);
1881+ RAS_MeshObject *meshobj = converter. FindGameMesh (predifinedBoundMesh);
18861882 // In case of mesh taken in a other scene.
18871883 if (!meshobj) {
18881884 continue ;
0 commit comments