Use the new tree-based registration system in the mover.

This commit is contained in:
King_DuckZ 2014-07-10 20:00:54 +02:00
parent 61f0c28983
commit 9c660caec6
7 changed files with 45 additions and 16 deletions

View file

@ -30,4 +30,13 @@ namespace cloonel {
UpdateSingle(currPlaceable);
}
}
///--------------------------------------------------------------------------
///--------------------------------------------------------------------------
Mover::PlaceableTicketType Mover::RegisterPlaceable (Placeable* parPlaceable, PlaceableTicketType parTicket) {
assert(parPlaceable);
const auto currTicket = m_placeables.Add(parPlaceable, parTicket);
parPlaceable->OnRegister(*this, currTicket);
return currTicket;
}
} //namespace cloonel

View file

@ -30,11 +30,15 @@ namespace cloonel {
public:
typedef ObserversManager<Placeable*>::TicketType PlaceableTicketType;
enum {
NullTicket = ObserversManager<Placeable*>::Ticket_Null
};
Mover ( void ) = default;
virtual ~Mover ( void ) noexcept = default;
virtual void Update ( float parDelta );
PlaceableTicketType RegisterPlaceable ( Placeable* parPlaceable ) { return m_placeables.Add(parPlaceable); }
PlaceableTicketType RegisterPlaceable ( Placeable* parPlaceable, PlaceableTicketType parParent=ObserversManager<Placeable*>::Ticket_Null );
void UnregisterPlaceable ( PlaceableTicketType parID ) noexcept { m_placeables.Remove(parID); }
protected: