What you’re asking is a bit outside my are of expertise, as I’ve only worked with splines enough to get the result I wanted, but I’ll do my best to help. I’ve experimented a bit and made something that works close what I believe you intend with your trenches.
First I’ve created a child of Grid_Actor called GA_Trench which contains a spline representing the trench (and a static mesh just to show the end of the spline for demo purposes). Here are the components of the actor:
Then at the end of the movement of Unit_Parent I check if the tile the unit ended on contains a trench (I do this in a very simple way. Replace with whatever method you prefer). If it does I set the Unit Path Spline to the spline of the trench actor and restart movement. I do a few tricks here to make sure everything behaves correctly.
At the end of movement (the execution pins that exit this screenshot connect to what was previously corrected to the Decide Action After Move custom event):
A small change to the start of movement in Unit_Parent, right after where Unit Path Spline is normally set to the spline found in BP_GridManager. This enables the first point of the spline to be the current location of the unit instead of the center of the tile it occupies:
Another small change to make sure the location of the unit is not automatically set to the center of its current tile when movement ends:
There is a lot of room for improvement, but I think this should be enough to get you started. For moving around tree meshes within a tile you could possibly do something similar, with splines in the tiles coming from all possible entrance points, custom placed to avoid the trees. In this case you would have to detect that you enter a tile midway through movement, switch to the other spline and then switch back. I imagine there are ways you could also modify the path spline before movement starts by checking along the spline and see if it overlaps any actors, at which point you add additional spline points avoiding these obstacles, but here I cannot give you more than guesses on how to go forward. You could also keep the path spline as it is and have a collision sphere surrounding the unit. If the collision sphere collides with a tree you would offset the location of the unit a certain distance from the spline to the left or right vector of the spline at the spline distance the unit currently occupies (built into the Accelerate and Move Pawn Along Spline function). This might be the easiest, actually. I’ll leave you to experiment, but if you become stuck I can give this another go.