2.1.0

Engine support: 5.2 and 5.3


This update focuses on improving developer tools, improving workflow, losening restrictions around item hierarchy and example project updates.


Item actor

  • The hierarchy around A_ItemPhysicalRepresentation and BP_SM_ItemPhysical has been improved. The inventory component is now added in C++. This does mean BP_SM_ItemPhysical has 2 inventory components for this update. One is labelled deprecated, and you will have to start moving your component settings, such as the InventoryType, ContainerSettings and WidgetClass over to the new one. A button has been added to the actor which will copy over the settings from the deprecated component to the new one. These changes make the blueprint child much more optional and leaves only a few delegates you'll want to setup in any custom children.

  • Added StartInventoryOnBeginPlay variable as now the inventory component is started inside C++, this will let blueprint designers disable StartComponent on BeginPlay in case they want to customize when it's called.

  • RootItemID is now replicated.


Inventory component

  • Added a tag system to the inventory component, though these tags are always replicated and use the default replication system, they do not use the custom replication system the other tag systems use.

  • Added a quick loot widget, which lets you preview items inside of a component before looting it or opening it, then letting you select and loot specific items without picking up the item or opening it.

  • Improved how containers are replicated and reduced RPC calls.

  • ItemMoved delegate has been update to provide both the old and new item data


Tag system

  • A new tag value calculation class has been added (O_TagValueCalculation). These classes can be passed into SetTagValue for both items and containers and it'll allow you to have one place to adjust any values based on some relationship a tag might have with another tag. For example, a durability tag might need to be clamped to a max durability tag. Instead of pre-clamping SetTagValue parameter everywhere inside your code, you now have one spot to perform these adjustments. An example can be found in the example project inside Blueprints -> TagCalculations -> TVC_DurabilityCalculation


Preview system

  • Relative location and rotation for the camera has been reworked slightly to resolve some issues. The spring arm location is now applied to the scene capture component instead of the spring arm.

  • Saving an icon during runtime seems to no longer be supported in 5.2 by Epic, the button is now automatically removed while in-game. You can still save an icon inside the ItemEditor tool.


Editor tools

  • General UI language has been updated and will continue being updated to feel more like it comes straight out of the box as a Unreal Engine tool, instead of looking like a custom tool with my own personal UI language.

  • Inspect debug widget has received a major revamp, is now more clear, less clutter, and less buggy.

  • You can now pan the preview actor around by using the right mouse button.

  • Item Widget preview has been updated to let you select a tile widget to use as a background and added controls to help with sizing the widget to accurate numbers instead of the scale slider.

  • The item editor's resizing for the filters and toolbox has been reworked to clear up a collision issue that was happening with sliders.

  • You can now shift + right click on a asset icon inside the asset library to open the items actor blueprint (If available).


Equipment System

  • Tags can be added and removed when driver starts, ends or on specific montage notifies. The example project uses this on the gun to enable/disable firing at specific points.


Bug fixes

  • InventoryHelper would not scale correctly when the editor scaling was not set to 1

  • MoveItem could cause crashes in some scenarios where multiple clients were interacting with the same component.

  • CheckAllRotations was missing UFUNCTION specifier

  • Sorting items in a list container was not behaving correctly.

  • Items belonging to a vendor could be dropped without performing any transaction.

  • TagValueUpdated interface call was not working correctly.

  • Moving an item into an infinite container could break if the container had to expand to accommodate the item.

  • GetAllContainersAssociatedWithItem could break if an item contained another item that had a container.