During a refactoring pass we decided to move some of our game functionality into a separate C++ module.
Unfortunately a lot of our blueprints depend on the classes and structs we were moving.
Basically we moved the inventory system out of the main game module “Tower” and into a new “TowerInventory” module.
Now the editor crashes when we open any of those blueprints or start playing the game.
We tried using ActiveStructRedirects and ActiveClassRedirects to point the blueprints to the new locations of the structs and classes we moved, but the editor is still crashing and we’re still getting errors like these:
[2015.09.10-02.49.23:705][589]LogClass:Warning: Property ItemHandle of AppearanceItem_C has a struct type mismatch (tag TowerItemHandle != prop FallbackStruct) in package: ../../../../../Unreal/Projects/Tower/Content/UI/Appearance/AppearanceItem.uasset. If that struct got renamed, add an entry to ActiveStructRedirects.
[2015.09.10-06.00.37:893][489]LogBlueprint:Error: [compiler InventorySlotUI] Error The property associated with Occupied could not be found
[2015.09.10-06.00.37:893][489]LogBlueprint:Error: [compiler InventorySlotUI] Error The property associated with Quantity could not be found
[2015.09.10-06.00.37:894][489]LogBlueprint:Error: [compiler InventorySlotUI] Error The property associated with Item Class could not be found
Our redirects look like this:
+ActiveClassRedirects=(OldClassName="TowerItem", NewClassName="/Script/TowerInventory.TowerItem")
+ActiveClassRedirects=(OldClassName="TowerItemEquippable", NewClassName="/Script/TowerInventory.TowerItemEquippable")
+ActiveClassRedirects=(OldClassName="Store", NewClassName="/Script/TowerInventory.Store")
+ActiveClassRedirects=(OldClassName="InventorySlot", NewClassName="/Script/TowerInventory.InventorySlot")
+ActiveClassRedirects=(OldClassName="InventoryContainer", NewClassName="/Script/TowerInventory.InventoryContainer")
+ActiveClassRedirects=(OldClassName="Inventory", NewClassName="/Script/TowerInventory.Inventory")
+ActiveStructRedirects=(OldStructName="TowerItemHandle", NewStructName="/Script/TowerInventory.TowerItemHandle")
+ActiveStructRedirects=(OldStructName="TowerItemPersistantState", NewStructName="/Script/TowerInventory.TowerItemPersistantState")
+ActiveStructRedirects=(OldStructName="InventoryItemInfo", NewStructName="/Script/TowerInventory.InventoryItemInfo")
+ActiveStructRedirects=(OldStructName="InventoryItemVariableSpecifiers", NewStructName="/Script/TowerInventory.InventoryItemVariableSpecifiers")
What is the proper way to point blueprints to code that has moved, or do we need to recreate our blueprints?