Just downloaded the project and had a quick look at it - Pretty good! Everything seems to work and is functional enough, but Ive got some notes and a couple questions that I hope you wont mind Please excuse my manner of speech, I dont want to come off as too critical, just some friendly comments from one VR developer to another. Plus ive only had about 20 minutes to look at it, so im probably not understanding a few things.
The hands are really big! I know the default hands in the VR template are also oversized, but these seem even bigger. Not a game-breaker, but changing this could be tricky…
You have hand models in all of your pickups with animations set to blueprint but no animation blueprint set. Are you using these hand models just for reference or are you doing something like hiding the player’s own hands and making these hands visible to get the grip locations etc correct? In gameplay it seemed that the player’s hands were used, but the grip pose didnt line up with the grip of the gun so I dont know. If theyre not used, I would recommend removing them because extra components in actors can increase their load on cpu.
Your BP_VR_Pawn actor has a LOT of variables in it and a lot of them are only set once and then forgotten about. Instead of having the player carry around all this data all the time, it’d be better to store it in the gamemode or player controller and have those values set when the player pawn is spawned. For your boolean values that the player does need to carry around, Id recommend putting them in a struct so that the pawn has 1 struct of booleans instead of 30+ individual booleans. As an example, ‘OCHand Loc’ is set once in the setup function and then not touched again (as far as i can see). You could just use a value in the node, but if its a piece of data you really want to keep as a variable, youd be better of capturing a reference to the player controller at begin play and then just call on it for these variables if and when you need them.
Speaking of BP_VR_Pawn, theres a huge amount of functionality coming off Event Tick. I can see its all regulated by boolean checks, but its spaghetti and difficult to read. Despite the checks, the VR_Pawn is ticking as fast as it can, making these checks every single frame. The ‘Snap Rotation’ snippet for example, could be placed at the input event for the joystick instead of having the game check a boolean on every frame. Similarly with the ‘Movement’ snippet - there’s all these boolean checks being made every frame, CanMove?, IsFalling?, CapsuleHit?, Seated? etc. These checks could be made on a button push instead of being checked for at every tick. For an axis, you could use a boolean check to see if the value is 0 (as in no tilt on the joystick) and if its not 0, make the checks and move/rotate the player.
Maybe Im off base with some of that, just some thoughts I had looking at it.
Apologies for long post, great work so far, it runs well and is very functional