BOOL CharacterManager::DelCharacter( ObjID_t ObjID ) { __ENTER_FUNCTION Obj_Character* pCharacter = (Obj_Character*)(GetScene()->GetObjManager()->GetObj(ObjID)) ; Assert( pCharacter ) ; UINT index = (UINT)(pCharacter->GetCharacterID()) ; Assert( index<m_Count ) ; Assert( m_Count > 0 ) ; Assert( m_pObjIDs[index]==ObjID ) ; m_pObjIDs[index] = m_pObjIDs[m_Count-1] ; pCharacter->SetCharacterID( INVALID_ID ) ; Obj_Character* pNewCharacter = (Obj_Character*)(GetScene()->GetObjManager()->GetObj(m_pObjIDs[index])) ; Assert( pNewCharacter ) ; pNewCharacter->SetCharacterID( index ) ; m_Count -- ; Assert( m_Count>=0 ) ; return TRUE ; __LEAVE_FUNCTION return FALSE ; }