I'm not sure if it needed to be done but this is how I ended up doing it in the UMAPropertyHandler:
// Use this for initialization
void Start()
{
SceneManager.sceneLoaded += SceneLoaded;
ClientAPI.WorldManager.ObjectRemoved += WorldManager_ObjectRemoved;
}
private void WorldManager_ObjectRemoved(object sender, AtavismObjectNode objNode)
{
if (objNode.Oid == GetComponent().Oid)
{
Debug.Log("****************************************************atavismNode needs to be removed for: " + GetComponent().GetComponent().name);
GetComponent().RemoveObjectPropertyChangeHandler("beltDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("capeDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("chestDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("feetDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("handDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("headDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("legDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("shoulderDisplayID", EquipmentChangeHandler);
GetComponent().RemoveObjectPropertyChangeHandler("umaData", UmaDataHandler);
}
}