Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 13, 2010, 10:39:54 PM (14 years ago)
Author:
dafrick
Message:

Resolved bug, that caused orxonox to crash whenever a level with pickups was loaded twice in one session.
Also some more debug/info output, commenting and cleanup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/modules/pickup/PickupManager.cc

    r6711 r6725  
    5151    DeclareToluaInterface(Pickup);
    5252   
    53     ManageScopedSingleton(PickupManager, ScopeID::Root, false);
     53    ManageScopedSingleton(PickupManager, ScopeID::Graphics, false);
    5454   
    5555    /*static*/ const std::string PickupManager::guiName_s = "PickupInventory";
     
    6464       
    6565        this->defaultRepresentation_ = new PickupRepresentation();
     66       
     67        COUT(3) << "PickupManager created." << std::endl;
    6668    }
    6769   
     
    7577        if(this->defaultRepresentation_ != NULL)
    7678            this->defaultRepresentation_->destroy();
     79       
     80        this->representations_.clear();
     81       
     82        COUT(3) << "PickupManager destroyed." << std::endl;
    7783    }
    7884   
     
    8995    */
    9096    bool PickupManager::registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
    91     {
    92         if(this->representations_.find(identifier) != this->representations_.end()) //!< If the Pickupable already has a RepresentationRegistered.
     97    {       
     98        if(identifier == NULL || representation == NULL || this->representations_.find(identifier) != this->representations_.end()) //!< If the Pickupable already has a Representation registered.
    9399            return false;
    94100       
     
    96102       
    97103        COUT(4) << "PickupRepresentation " << representation << " registered with the PickupManager." << std::endl;
     104        return true;
     105    }
     106   
     107    /**
     108    @brief
     109        Unegisters a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents.
     110    @param identifier
     111        The PickupIdentifier identifying the Pickupable.
     112    @param representation
     113        A pointer to the PickupRepresentation.
     114    @return
     115        Returns true if successful and false if not.
     116    */
     117    bool PickupManager::unregisterRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
     118    {       
     119        if(identifier == NULL || representation == NULL)
     120            return false;
     121       
     122        std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare>::iterator it = this->representations_.find(identifier);
     123        if(it == this->representations_.end()) //!< If the Pickupable is not registered in the first place.
     124            return false;
     125       
     126        this->representations_.erase(it);
     127       
     128        COUT(4) << "PickupRepresentation " << representation << " unregistered with the PickupManager." << std::endl;
    98129        return true;
    99130    }
Note: See TracChangeset for help on using the changeset viewer.