
NotifyRemove()
**************


FUNKTION
========

   void NotifyRemove(object ob);


ARGUMENTE
=========

   ob
        Das Objekt, das aus dem Behaelter entfernt wurde.


BESCHREIBUNG
============

   Diese Funktion wird im Behaelter aufgerufen, wenn ein Objekt im
   besagten Behaelter zerstoert wird.


RUeCKGABEWERT
=============

   keiner


BEMERKUNGEN
===========

   Wird nicht gerufen, wenn ein Spielerobjekt zerstoert wird.


SIEHE AUCH
==========

   NotifyLeave(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
   NotifyMove(), PreventMove(),
   BecomesNetDead()

Last modified: 04.08.2007, Zesstra
