VR Expansion Plugin

I’m taking one of the items off of my “Revisit this” list this holiday weekend and remaking the VRCharacter (or at least an alternative one). The current one is based around the VRRootComponent which I made specifically to slot into standard pawns. Since the VRCharacter isn’t a standard pawn then it is faaaaar more complicated than it needs to be for its functions, I intend to make a simple version that if stable enough will fully replace it. Due to how VRRootComponent works I had to re-write most of the character movement component to support it, the new version would take a mostly stock character movement component instead.

We’ll see how it pans out, but early testing feels pretty good, and if it works as I intend then upgrading the plugin to keep up with new engine versions would be 100x easier.

You either need to loop it on tick, or use an input event that is called every frame it is active. It sounds like you are firing it once.

Okay, I hooked it up to the tick and it works now, don’t know why I didn’t try that earlier.

I would suggest doing it like a normal character and using an input event instead so it can be rebound.

When you work on multiplayer stuff, are you going to work on basic necessities like proximity voice, and a server browser?

Server browser yes, proximity voice on the other hand not only isn’t a necessity but I have been asked about before for my networking plugin and I haven’t actually found a way for it to work through a plugin. The audio components for players are not publicly accessible and I haven’t been able to match them up to specific owners either as the identifiers are also not publicly available, I DO know how I would do it with an engine build however.

I may take another look at it again just in case.

Cool. I assume the server browser will include the ability to host games with certain parameters (like amount of players, mainly)?

and that’s a bummer with the proximity voice. I’m sure there’s a way around it?

Also, if I were to start working with your template/plugins, how easy is it to update/add new plugins? Relatively speaking of course. Is it as easy as plug and play?

Mordentral, thanks a ton for building this. It’s a great set of tools for getting started with VR. There is one little issue I am running into that others may have too:

If I make a blueprint that references a class from VR-Expansion-Plugin and then save the project, the next time I open the project and try to open that blueprint, the editor crashes.

This happened because I have a vr character that has a child actor blueprint for the hand. Here’s a related problem on answers, but I’m not sure if they are using your plugin. But I’m getting the same type of error:

Turning the plugin off lets me open the blueprints without crash…but obviously that’s not a good solution :slight_smile:

Looks like it has already been fixed and is slated for 4.14.1?

First off, thanks mordentral for making this plugin!

I have a bit of a problem though and I am hoping someone can help me out.

I am trying to make a multiplayer game and testing with two players. The player can possess a new spawned character and I am calling “Set Tracking Origin” and “Reset Orientation and Position” so that the VR camera is in the correct spot when possessed.

It works great for the Server player, but when I try to do it on the client it is the Server character that gets affected by those origin and orientation functions and not the client.

I have tried running the functions through a “Is locally controlled” branch but it still doesn’t work.

Any ideas? Really pulling my hair out on this one…


On possessed is only called on the server, you need to send an RPC to the client on possession and have them do it.

Thank you so much!! I tried everything but Run on Owning Client lol…

Works great! Thanks again for the help and all your work on the plugin!!

I have one other quick question if you have time…

Have you ever had the client headset have glitched shadows in just one eye? The right eye view of the client HMD has shadows that are all glitched out…any ideas of what might be causing that?


Capsule shadows

Compiled and tried the latest 4.14.1, and no luck :(. Strange…

I think the minimal steps to reproduce it is to create a blueprint with a variable holding a VR_Character. That seems to mess up when saving, reloading the editor, and opening that BP.

Why are you trying to make a VRCharacter a child actor? Child actors are still pretty buggy and characters are fairly complex.

I’m not making it a child actor. I have a blueprint that represents a hand, and that hand holds a reference to its owner (the character).

I can’t get this to build on 3.14 for the life of me. I keep getting these errors:

Severity	Code	Description	Project	File	Line	Suppression State
Error	C2039	'setRigidDynamicFlag': is not a member of 'physx::PxRigidDynamic'	MyProject	C:\Users\sealfoss\Documents\Unreal Projects\MyProject\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\GripMotionControllerComponent.cpp	1311	


Severity	Code	Description	Project	File	Line	Suppression State
Error	C2039	'__this': is not a member of 'physx::PxRigidDynamic'	MyProject	C:\Users\sealfoss\Documents\Unreal Projects\MyProject\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\GripMotionControllerComponent.cpp	1311

Yeah I changed the code for 4.14, you either need to upgrade to a newer copy or look on the repository under that function, I set it to use a different method that isn’t depreciated in 4.14.

In other news, I am going to start in on the multiplayer stuff tomorrow.

I hashed out a working alternative “simple” character now that doesn’t do all of the hackish things that my default one does. It doesn’t work as fluidity as the default one and doesn’t support multiplayer quite yet but its functional (need to copy paste some replication code from my default and multiplayer would work with it). Not entirely sure that the simple char will ever support the capsule offset due to how such things work but maybe some day i’ll find a viable method for that.

I see the simple character being an emergency backup for if the default has issues ever, since I’ve touched 90% of the movement code and broken some engine standards with the default character I’ve had it on the back of my mind for awhile that I need a viable alternative just in case.

I’ll… try :slight_smile:

I’m struggling as it is w/ the cpp API.

This plugin is great! I’m integrating it into my project right now, and I’m finding that when I parent the Vive_PawnCharacter to an object, the Vive_PawnCharacter ignores the rotation of that object, so I slide around and always face the same direction.

Is there a way to avoid this and make the Vive_PawnCharacter stay completely parented to an object to move/rotate it around?