VRKit
0. FVRKitInteractionInputProcessor
- VRKit \ Private \ Framework \ VRKitInteractionInputProcessor.h
继承 IInputProcessor //Slate 输入处理程序的接口
bool FVRKitInteractionInputProcessor::HandleKeyDownEvent( FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent )
- 响应输入 与 世界交互
成员变量: class UVRKitWorldInteraction* WorldInteraction;
1. UVRKitWorldInteraction
- VRKit\public\VRKitWorldInteraction.h
bool UVRKitWorldInteraction::InputKey(FKey Key, EInputEvent Event)
2. UVRKitInteractor
- VRKit\Source\VRKit\public\VRKitInteractor.h
(1)
bool UVRKitInteractor::HandleInputKey(const FKey Key, const EInputEvent Event)
- 成员变量:TMap<FKey, FVRKitActionKeyInput> KeyToActionMap;
根据输入键的名字,映射 出 FVRKitActionKeyInput(行为类型; 行为状态)
UVRKitInteractionManager
VRKit\public\VRKitInteractionManager.h
void MapHMDKeyAction() //键的名称 与 行为类型绑定
在 这个类 的 Init(); 中掉用,而Init() 又是被 VRKit模块加载的时候被调用。
{ 成员变量 : class UVRKitInteractor* LeftHandInteractor;
class UVRKitInteractor* RightHandInteractor;
}
(2)
- UVRKitWorldInteraction 中的 委托 OnPreviewInputAction
VRKit\Private\VRInteraction\VRUI\VRKitUISystem.cpp 界面的调用函数OnPreviewInputAction( )挂在 上述委托上。
(3)SetupComponent
创建组件、Mesh 、材质 调用 UVRKitInteractionManager下面的CreateMotionControllerMesh() 函数。
3. UVRKitInteractionManager
VRKit\public\VRKitInteractionManager.h
(1)
下列函数被 CreateMotionControllerMesh() 函数调用,同时这个函数也作为外部的接口使用。
//获取 用户手柄的数字 静态 网格体
UStaticMesh * UVRKitInteractionManager::GetMotionControllerMesh()
{
// 根据设备类型,返回对应设备的 StaticMesh
UVRKitAssetContainer AssetContainer; //数据 资源接口 类
if (GetDeviceType() == VRKitDevice::OculusDeviceType)
return AssetContainer->OculusControllerMesh;
}
(2)设置控制器类型
设置控制器类型:手柄、VRHand、球形。且此函数体内 有一 广播 将类型信息广播出去。
void UVRKitInteractionManager::SetInteractionType(EInteractionType type)
4. UVRKitAssetContainer
VRKit\public\VRKitAssetContainer.h
数据资源VRKitData 蓝图可编辑
- 声音
- 材质
- 网格
5.
咋Q·