Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Ketsji/KX_Scene.cpp
| Show First 20 Lines • Show All 1,071 Lines • ▼ Show 20 Lines | int KX_Scene::NewRemoveObject(class CValue* gameobj) | ||||
| } | } | ||||
| // if this object was part of a group, make sure to remove it from that group's instance list | // if this object was part of a group, make sure to remove it from that group's instance list | ||||
| KX_GameObject* group = newobj->GetDupliGroupObject(); | KX_GameObject* group = newobj->GetDupliGroupObject(); | ||||
| if (group) | if (group) | ||||
| group->RemoveInstanceObject(newobj); | group->RemoveInstanceObject(newobj); | ||||
| newobj->RemoveMeshes(); | newobj->RemoveMeshes(); | ||||
| switch (newobj->GetGameObjectType()) { | |||||
| case SCA_IObject::OBJ_CAMERA: | |||||
| m_cameras.remove((KX_Camera *)newobj); | |||||
| break; | |||||
| case SCA_IObject::OBJ_TEXT: | |||||
| m_fonts.remove((KX_FontObject *)newobj); | |||||
| break; | |||||
| } | |||||
| ret = 1; | ret = 1; | ||||
| if (newobj->GetGameObjectType()==SCA_IObject::OBJ_LIGHT && m_lightlist->RemoveValue(newobj)) | if (newobj->GetGameObjectType()==SCA_IObject::OBJ_LIGHT && m_lightlist->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_objectlist->RemoveValue(newobj)) | if (m_objectlist->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_tempObjectList->RemoveValue(newobj)) | if (m_tempObjectList->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_parentlist->RemoveValue(newobj)) | if (m_parentlist->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_inactivelist->RemoveValue(newobj)) | if (m_inactivelist->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_euthanasyobjects->RemoveValue(newobj)) | if (m_euthanasyobjects->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| if (m_animatedlist->RemoveValue(newobj)) | if (m_animatedlist->RemoveValue(newobj)) | ||||
| ret = newobj->Release(); | ret = newobj->Release(); | ||||
| /* Warning 'newobj' maye be freed now, only compare, don't access */ | |||||
| if (newobj == m_active_camera) | if (newobj == m_active_camera) | ||||
| { | { | ||||
| //no AddRef done on m_active_camera so no Release | //no AddRef done on m_active_camera so no Release | ||||
| //m_active_camera->Release(); | //m_active_camera->Release(); | ||||
| m_active_camera = NULL; | m_active_camera = NULL; | ||||
| } | } | ||||
| // in case this is a camera | |||||
| m_cameras.remove((KX_Camera*)newobj); | |||||
| // in case this is a font | |||||
| m_fonts.remove((KX_FontObject*)newobj); | |||||
| /* currently does nothing, keep in case we need to Unregister something */ | /* currently does nothing, keep in case we need to Unregister something */ | ||||
| #if 0 | #if 0 | ||||
| if (m_sceneConverter) | if (m_sceneConverter) | ||||
| m_sceneConverter->UnregisterGameObject(newobj); | m_sceneConverter->UnregisterGameObject(newobj); | ||||
| #endif | #endif | ||||
| // return value will be 0 if the object is actually deleted (all reference gone) | // return value will be 0 if the object is actually deleted (all reference gone) | ||||
| ▲ Show 20 Lines • Show All 1,465 Lines • Show Last 20 Lines | |||||