Essential Workflow
This system was designed in a manner such that the Character would be responsible for Updating itself and fetching the data regarding an items specific needs. The items would carry this data and manage things associated with the item, such as montages, firing mechanics, item based timed events, and informing the character when it was time to update the animation system based on time sensitive events. I did this to make it simpler to remove the (Bonus) Features which some people inevitably were not going to want. There is no doubt a better way to handle a lot of the things I did. However, my goal was flexibility and ease of use for those using it, I could not assume specific goals, therefore I had to make it flexibile in situations where it normally wouldn't have been required.
A High-Level Overview: - Play Animation - Attach Item to Bone/Socket on Character - Update Held Object State on Character (This informs the Character to update the animation system) - Character fetches ItemCharData data asset from Item via Blueprint Interface and updates animation
These Functions war what are responsible for updating the Animation System, they will handle a few things that are essential for it to function. The some of the existing code below was re-utilized to accommodate the refactored code regarding items, which handle their own logic. Some of this may be refactored in a later update.

Each Child Blueprint of the Corresponding Character Class (CMC/Mover) will have a Gameplay Tag Associated with it for Identifying them. We need to identify the Character because each Character can have their own Data Asset (PDA_ItemCharData) which stores: - Their Item Montages (Equip, Holster, Shoot, Reload, etc). - Their Linked Anim Layer (Storing The Logic for Layering Poses) - Their AnimSet (This stores PDA_LinkedAnimSet, which is required for Layering)

AnimSet (PDA_LinkedAnimSet) stores the following: - Layered Poses - Aim Offset Pitch Poses (Yaw "Left/Right" is handled universally currently) - Overlay Layering Settings (This dictates how the Poses are Layered over the Locomotion) - Secondary Layering Settings (This allows the Flashlight and Pistol to be held in separate hands at the same time while still being layered in a similar manner, preventing dedicated animation sets from being required)

The items need to implement my Interface Event BPI_Items which needs to return a PDA_ItemCharData Asset, which stores all the information required.

The items need to return a PDA_ItemCharData Data Asset to the character storing the items data previously described. This is so I can support flexibility regarding Linked Anim Layers, which will allow people to repurpose them without needing to duplicate them. The only time you may want to do so would be if you want to extend or alter the logic slightly regarding how that type of object or a similar type of object is handled.

The GetItemID, is how I will identify the objects in a coming update. I will be phasing out Macro Usage in this system where possible, I have overused them a great deal in this project.

The other Blueprint interface functions are not used outside of the Item Handling System. I may possibly separate them in the future so that they don't have to be included in workflows where the Item Handling System is not being used.
Last updated