#pragma once class ModifiableAttributeInstance; class BaseAttributeMap { protected: //unordered_map attributesByObject; #ifdef __ORBIS__ unordered_map > attributesById; #else unordered_map attributesById; #endif public : virtual ~BaseAttributeMap(); virtual AttributeInstance *getInstance(Attribute *attribute); virtual AttributeInstance *getInstance(eATTRIBUTE_ID name); virtual AttributeInstance *registerAttribute(Attribute *attribute) = 0; virtual void getAttributes(vector& atts); virtual void onAttributeModified(ModifiableAttributeInstance *attributeInstance); // 4J: Changed these into specialised functions for adding/removing the modifiers of an item (it's cleaner) virtual void removeItemModifiers(shared_ptr item); virtual void addItemModifiers(shared_ptr item); };