Hey Alexis!
As always amazing documentation!
You are inspiring me to do something similar too :0
About the animation and state machines, I would suggest blending into the fire animations the same way you did with the directional movement using PaperZD.
The outputs of the PaperZD directional node can be cached or linked.(You may even use a seperate Animation blueprint and then import-Link the pose into the "master" animation blueprint).
You can then create an Enum: States { Walking, Shooting}. And then depending on the state (which is already being handled by the PaperZD Directional selection of animation) you can blend using Blend by Enum(States).
Here I am using a Enum:WeaponState with {OneHanded, TwoHanded}.
We can "Link Pose" OR "Get Cached Pose" the outputs of the PaperZD directional node and replace the Animations in the screenshot with the PaperZD directional output)
Then choose to show walking or shooting depending on an Enum:CharacterState { Walking, Shooting}.
*Take my advice with limited liability, I have null knowledge in PaperZD and I'm still a noob in game-dev.
Also, Something small I heard about the C++ part, EpicGames decided that there will be a new syntax(and better optimiztion) for pointers.
It will be used more and more as the engine updates:
Normal C++: ClassName* MyPtr;
Unreal future proof: TObjectPtr<ClassName> MyPtr;
Viewing post in Unreal Port P2: Keep it moving! comments
Thanks!
You totally should document your work; I've found it really helpful for retaining information.
Unfortunately, PaperZD does not support blend spaces as far as I can see =(. I do think that coding it using enums would make it much more readable though. Right now, I'm just using LastMovementDirection to choose which animation to play on the override:
Using Enums would make it much more readable, and I could probably even use a switch statement then too.
I also heard about the Ptr change. I have to get into the habit of using TObjectPtr<ClassName> MyPtr; but ClassName* is soooo much faster to type!