# 2.8.1

Engine support: 5.4

The "Need for Speed" edition

This is one of the biggest updates since 2.0 and was on the border of becoming version 3.0. This update changes a good chunk of behaviour under the hood and brings lots of optimizations. IFP is already extremely fast and is probably the fastest and most feature-rich inventory system on the marketplace, but that doesn't mean there isn't room for improvements.

Highlights:

  • Added ItemStructObject's, which are a brand new way of handling gameplay logic for items. This is one of the biggest and most exciting features added to IFP since release.
  • Improved editor workflow.
  • Several performance improvements.
  • Updated documentation.

# Items

  • Added ItemStructObject's, which are a brand new way of handling gameplay logic for items. Documentation has been added
  • You can now drag the item data asset into the viewport to place the item actor. This is also possible by clicking and dragging the asset icon in the ItemEditor tool.
  • The VerifyData button has been removed. The logic has been moved into the IsDataValid function, which is ran whenever an asset is saved.
  • Added buttons for opening the item actor and item struct object.
  • Item assets thumbnails in the content browser and drop down windows now use their inventory image or the developer image as the thumbnail image.
  • Added ItemType tag to items to simplify the item type logic for items.
  • Shape is now baked into the data asset, greatly improving the performance of several functions that relied on the items shape.
  • GetItemDescription will now replace any text that includes "< Tag value name >" with the value of that tag value. For example; "Current Durability: <IFP.Items.Stat.Durability>" will be changed to Current Durability: 20" if the tag value was 20. The apple, helmet and gun items uses this for an example. You can also style your floats with the new Rich Text Wrapper parameter. (Read code comment for more info)
  • Items can now have sockets, just like a static mesh or a skeletal mesh. This is achieved through the socket manager object on the item asset and can be edited through the ItemEditor toolbox.

# Inventory

  • When replicating containers to clients, server now clears the tile map when sending the RPC and has clients regenerate it when it reaches them, resulting in an average 20% smaller RPC sizes.
  • A new ID_Map system has been added. This allows the system to find ANY container or item in constant time, meaning it takes the same amount of time to find a container or item in index 0 as it takes to find a container or item at index 1000. This also means that GetItemByUniqueID has been reworked and is virtually free and this has had a tremendous performance improvement for projects with hundreds of containers or items in one inventory component.
  • A new IndexCoordinates system has been added, allowing the system to instantly convert a tile into an index. This wasn't expensive, but the system used this convertion so much, the small cost started to pile up.
  • GetFirstAvailableTile is no longer blueprint overridable.
  • The inventory component now has a custom icon.
  • Added GetItemCount function.
  • Added GetItemsByType function.
  • Added GetItemsParentContainer function.
  • Added a DoNotBind parameter to CreateAttachmentWidgetForItem so it's easier for people to do custom bindings.

# Interfaces

  • The I_WidgetUpdates interface has been renamed to I_ExternalObjects. The `ExternalWidgets system has also been reworked to not be limited to just widgets.
  • Many of the functions inside of I_WidgetUpdates have been reworked to expose more parameters and have better categories.

# Tools

  • The ItemEditor tool has had a layout make-over.
  • The ItemInspector tool has been disabled for runtime. Should only be used in the ItemEditor from now on.

# Preview Actor

  • The collider actor has been removed. This actor was a overkill solution to a rare bug. This has also improved the garbage collector performance.
  • Added a new option to skip the cloning process. If enabled, it'll just attach itself to the owner. This has almost doubled its performance.
  • All actors spawned by the preview actor now get labeled as one with the new I_Inventory -> SetIsPreviewActor function. You can then use the I_Inventory -> IsPreviewActor to find out if that actor instance is a part of the preview actor system or not.
  • Preview actor now supports leader poses. Documentation has been updated.

# Documentation

  • DA_CoreItem has been updated.
  • A new Optimizations page has been added.

# Bugs

  • Default items declared in the item data asset containers would fail to spawn.
  • Item struct in item data asset containers would say "No Item Available"
  • Widget factories were using the wrong blueprint type.
  • Crash if invalid data was passed into GetItemsTagValues
  • Generated item icons would go into the wrong folder.
  • Clicking on a specific spot on non-custom shaped items did not treat that spot as the anchor point.

# 2.8.1

  • Disabled struct object creation on preview actor instances.

Bug fixes:

  • Clients item data would not include the item struct object in some scenarios.
  • Moving an item via double click could cause item duplication.
  • Dropped items would not have their containers setup correctly, which would also cause those containers to get lost when picking up a dropped item.
  • The stack variables inside the data asset would get hidden if max stack was set to 1.

# Color Sheet:

functions - variable - category - class