VR Expansion Plugin

I actually got it re-worked for async as well (not ideally since I am still supporting 4.12 in it). I will merge the 4.13 branch into main today.

08/19/2016- Made compatible with 4.13 preview 2 - (still backwards compatible with 4.12.5)

  • When compiling for 4.13 the GetModelAndTexture node now uses the OpenVR Async functions, due to you will have to delay
    and call the node again if it returns AsyncLoading instead of Failure or Success as it is still loading the model,
    the node does not delay itself as I am still supporting 4.12.

  • Added some definitions so that the plugin is cross compatible with 4.13, 4.12.5, 4.11.4, eventually I might not be able to
    support all versions and I will have to drop earlier releases (movement component specifically may cause ).

  • Added a note to documentation that at some point the GetHMDType() node will be removed as Epic has now added
    their own version of it.

I would still not suggest using 4.13, there are severe performance issues with it currently with VR.

4.13 Preview 2 is now fully supported by the plugin after these last changes. It had a crash when joining as a client due a change they made in character movement components.

I intend to get double handed gripping working next, I have been mulling over how best to network them so that it uses the least resources and is the most flexible for the user.


**08/20/2016**- Made some changes for 4.13 and direct Source linking

Fixing missing headers in VRCharacter that was keeping source only builds from directly linking to it.
Note that it is not recommended by Epic to directly link to source from Plugins, however there is no reason for me to not fix something that was preventing it.

Also changed how VRMovementComponent calls a Console Variable so that it is compatible with both 4.12 and 4.13.
Epic changed how a console var was implemented in 4.13 and it was causing crashes in multiplayer. Made it 4.12 and 4.13 compatible now.

Just uploaded a demo build (will have some bugs, it isn’t intended to be stable as it is my test enviroment) for people to get a feel for the plugin if they want to try it without having to implement parts of it themselves.

I intend to release a demo project eventually but it would take a lot of de-coupling of some of my unrelated plugins and things from it first otherwise it wouldn’t be usable.

Demo Introduction Video

awesome plugin ,thank you, and curious how you make the arm animation, could you share the project not only the demo to us?

I mentioned it in the video and in the OP but I have to remove a bunch of things from the demo before others could use it (unreleased plugins, random tests of ideas, ect). I will have an example project eventually but it isn’t my highest priority at the moment.

I am trying to package an empty 4.12.5 project with the plugin but I’m receiving these errors:

\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\ReplicatedVRCameraComponent.cpp(33): error C2275: ‘UReplicatedVRCameraComponent’: illegal use of type as an expression
\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\ReplicatedVRCameraComponent.cpp(33): error C3861: ‘DOREPLIFETIME_CONDITION’: identifier not found
\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\ReplicatedVRCameraComponent.cpp(34): error C2275: ‘UReplicatedVRCameraComponent’: illegal use of type as an expression
\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\ReplicatedVRCameraComponent.cpp(34): error C3861: ‘DOREPLIFETIME’: identifier not found

Commenting the two lines out creates a successful build but Camera replication is no longer working.

Any ideas?

Yeah sorry, that is my bad. I forgot to add an include in that header. If you are calling the components from code instead of blueprint it is probably not finding a path to the structs.

Add at the top of ReplicatedVRCameraComponent.cpp

I’ll update the plugin to include that change as well. I haven’t tested the plugin fully in direct source access as most of the work is in exposing parts to blueprint.

is really awesome! However, I looked through the project and I didn’t find a license anywhere. It seems like plugin is intended to be open source, but currently nobody can legally use plugin in their own project unless you specify a more permissive license (for example, the MIT license). Anyway, looks great, keep it up!

Yeah you are right, I really hate the “Copywrit by default” system and always forget to license things I do (they start as personal projects).

I like MIT far more than BSD so i’ll add a LICENSE.txt to the base directly with the next commit.

Come to think of it I have another plugin that I need to do that to as well.

Hello. I can’t get to load on 4.13 Preview 3. I get a “Missing or incompatible modules in VRExpansionPlugin plugin - would you like to disable it? You will no longer be able to open any assets created using it.”

Are you sure you have it in the correct folder layout? I upgraded all of my test projects to 4.13 p3 already.

I downloaded the wrong file earlier - the repository from the Downloads tab. I tried the Navigation 4.13 from the Branches tab and it works now.

My apologies, I’m not a developer, so I’m a bit slow on the uptake over here.

No you got the correct file, it just needed recompiled for 4.13 as that branch is 4.12.5 currently. The navigation 4.13 branch is a work in progress and might not be totally stable (although the feature it adds is pretty neat).

Thank you. I have no idea how to recompile the plugin, so I guess it’s the bleeding edge for me with the naviation 4.13 branch. Alternatively, if you could guide me here, I’d be very grateful. I tried Googling without much success.

The 4.13 branch is stable enough you can use it as long as you don’t use the new features (which I haven’t posted details about yet so it should be fine).

Also somehow your last post spammed 30+ messages to my inbox…

Thanks, that’s great (about the branch being stable). Not so great about the spam. No idea why that happened. Hopefully post doesn’t also do it.

Hey great plugin. I was quickly able to get a multiplayer VR game setup pretty quickly. But I must admit I’m struggling getting the Grip Actor function to “work” on clients.

> Has Grip functions that are also replicated (call them on the server) but are an optional feature

When my client calls “grip actor” it doesn’t attach. I moved it behind “switch has authority” and still no go. Does it matter if the actor itself is replicated or not? Is there anything else I am missing besides making sure the function is called server side? Thanks

EDIT:

Whoops, I forgot that the controller pressed events were client side. Once I added a RPC to fire the grip actor function everything worked as it should!

Yeah I actually have it print to the log saying “Call on the server” when you call it from the client as well.

Keep in mind that I have the grip movement all client side currently, I had server side grips during collision originally but it got really aggravating as a client trying to move things due to latency issues. I have a Trello card to expose server side grip movement as an option in the future again but will leave client side as the default.

When i get time to go back and finish the hybrid grip type I think that server side would work better, that grip should be the end all be all when it is working perfectly (it still passes through some weird meshes at odd angles sometimes…).