Why does Spline Mesh Component need an actor target?

Or rather, why can’t the playerController spawn AddSplineMesh Components? I was moving a lot of my trajectory, aiming logic from my player actor to the playerController and for the life of me could not figure out how to fix my broken Spline Mesh. Turns out giving it the playerActor as its owner solved it. Its confusing to me because it seems the Spline Mesh component as well as spawning other components works just fine in the playerController.

Hey sarchasm,

I don’t know why that would not work, could you maybe show a bit more of your setup in blueprint?

But to be honest I think this behavior should be inside the player pawn instead of the player controller, since your pawn should define what it can do. The player controller is nothing more than an actor telling which pawn player ‘x’ controls. This way a pawn can contain behavior disconnected from the controller. Take for example a CharacterPawn and a VehiclePawn. If the player jumps into the vehicle, the controller can just possess the VehiclePawn, without having all the code for how a VehiclePawn is behaving.

Ha, so this morning I went to remake what the issue was in blueprints to show you, since I had abandoned that attack and deleted all the logic. Turns out that when I went to remake it directly in the player controller that “Add Spline Mesh Component” it doesn’t show up in the Context Sensitive list. Pretty clear now that my problem lies in the fact that, since my player blueprint had so much of the logic I was trying to port of… I duplicated that blueprint, then reparented it to the player controller class, which is how I got the node without noticing the issue.

The real issue here I guess is the fact that Unreal didn’t give any warnings on the matter whatsoever, if you do add an Add Spline Mesh Component (by not using Context Sensitive) and leave the target for that node as “self” it just will not render, will not draw. If you do give it an actual instanced actor, it will work however.

And on the side note, thank you for the context around player controller. I hadn’t really been using the class for the life of my project and kind of misunderstood it obviously. Glad to hear though that the direction I went after this mess up was the right direction… my motivation at the time was that, since my player actor had very similar logic to an ability actor I wanted to posses I felt I could some how put all the logic in a higher level node and then use it for both… but in the end the ability actor logic was simpler anyways and its probably better that they’re different.

Got it all working perfectly last night! Thanks!