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;
根據(jù)輸入鍵的名字,映射 出 FVRKitActionKeyInput(行為類型夺鲜; 行為狀態(tài))
UVRKitInteractionManager
VRKit\public\VRKitInteractionManager.h
void MapHMDKeyAction() //鍵的名稱 與 行為類型綁定
在 這個類 的 Init(); 中掉用何暮,而Init() 又是被 VRKit模塊加載的時候被調(diào)用绅喉。
{ 成員變量 : class UVRKitInteractor* LeftHandInteractor;
class UVRKitInteractor* RightHandInteractor;
}
(2)
- UVRKitWorldInteraction 中的 委托 OnPreviewInputAction
VRKit\Private\VRInteraction\VRUI\VRKitUISystem.cpp 界面的調(diào)用函數(shù)OnPreviewInputAction( )掛在 上述委托上。
(3)SetupComponent
創(chuàng)建組件誉裆、Mesh 、材質(zhì) 調(diào)用 UVRKitInteractionManager下面的CreateMotionControllerMesh() 函數(shù)。
3. UVRKitInteractionManager
VRKit\public\VRKitInteractionManager.h
(1)
下列函數(shù)被 CreateMotionControllerMesh() 函數(shù)調(diào)用龙助,同時這個函數(shù)也作為外部的接口使用。
//獲取 用戶手柄的數(shù)字 靜態(tài) 網(wǎng)格體
UStaticMesh * UVRKitInteractionManager::GetMotionControllerMesh()
{
// 根據(jù)設備類型蛛芥,返回對應設備的 StaticMesh
UVRKitAssetContainer AssetContainer; //數(shù)據(jù) 資源接口 類
if (GetDeviceType() == VRKitDevice::OculusDeviceType)
return AssetContainer->OculusControllerMesh;
}
(2)設置控制器類型
設置控制器類型:手柄提鸟、VRHand、球形仅淑。且此函數(shù)體內(nèi) 有一 廣播 將類型信息廣播出去称勋。
void UVRKitInteractionManager::SetInteractionType(EInteractionType type)
4. UVRKitAssetContainer
VRKit\public\VRKitAssetContainer.h
數(shù)據(jù)資源VRKitData 藍圖可編輯
- 聲音
- 材質(zhì)
- 網(wǎng)格
5.
咋Q·