From 1e4071a44b09c837ef3f7682679d0df806398bda Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Wed, 3 May 2023 17:02:54 +0200 Subject: [PATCH] integrate the touch component and colliders and rename the grab ones --- .../Components/SGVirtualHandComponent.cpp | 16 +- .../SenseGlove/GameFramework/SGPawn.cpp | 408 +++++++++++++----- .../GameFramework/SGVirtualHandActor.cpp | 203 ++++++--- .../Components/SGVirtualHandComponent.h | 117 ++++- .../Public/SenseGlove/GameFramework/SGPawn.h | 116 ++++- .../GameFramework/SGVirtualHandActor.h | 58 ++- .../Private/SGKismet/SGPawnKismetLibrary.cpp | 74 +++- .../SGVirtualHandActorKismetLibrary.cpp | 41 +- .../SGVirtualHandComponentKismetLibrary.cpp | 101 ++++- .../Public/SGKismet/SGPawnKismetLibrary.h | 42 +- .../SGVirtualHandActorKismetLibrary.h | 21 +- .../SGVirtualHandComponentKismetLibrary.h | 58 ++- 12 files changed, 985 insertions(+), 270 deletions(-) diff --git a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp index 59604a37..9d48ce21 100644 --- a/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp @@ -210,11 +210,19 @@ USGVirtualHandComponent::USGVirtualHandComponent(const FObjectInitializer& Objec bRight = true; - DefaultFingertipsColliderSize = FVector{0.04f, 0.04f, 0.04f}; + DefaultFingertipsGrabColliderSize = FVector{0.04f, 0.04f, 0.04f}; - ThumbFingertipSocketName = FName(TEXT("ThumbFingertip")); - IndexFingertipSocketName = FName(TEXT("ThumbFingertip")); - MiddleFingertipSocketName = FName(TEXT("MiddleFingertip")); + ThumbFingertipGrabSocketName = FName(TEXT("ThumbFingertip")); + IndexFingertipGrabSocketName = FName(TEXT("IndexFingertip")); + MiddleFingertipGrabSocketName = FName(TEXT("MiddleFingertip")); + + DefaultFingertipsTouchColliderSize = FVector{0.04f, 0.04f, 0.04f}; + + ThumbFingertipTouchSocketName = FName(TEXT("ThumbFingertip")); + IndexFingertipTouchSocketName = FName(TEXT("IndexFingertip")); + MiddleFingertipTouchSocketName = FName(TEXT("MiddleFingertip")); + RingFingertipTouchSocketName = FName(TEXT("RingFingertip")); + PinkyFingertipTouchSocketName = FName(TEXT("PinkyFingertip")); bHiddenInGameIfNoGloveDetected = false; diff --git a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp index ce626b74..55cff267 100644 --- a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp +++ b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp @@ -100,62 +100,157 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) false, nullptr, ETeleportType::None); HandLeft->SetWristTracker(WristTrackerLeft); - LeftThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("LeftThumbFingertipCollider")); - LeftThumbFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - LeftThumbFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetThumbFingertipSocketName()); - LeftThumbFingertipCollider->SetCastShadow(false); - LeftThumbFingertipCollider->bCastDynamicShadow = false; - LeftThumbFingertipCollider->SetReceivesDecals(true); - LeftThumbFingertipCollider->SetCanEverAffectNavigation(false); - LeftThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - LeftThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - LeftThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + LeftThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftThumbFingertipGrabCollider")); + LeftThumbFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + LeftThumbFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetThumbFingertipGrabSocketName()); + LeftThumbFingertipGrabCollider->SetCastShadow(false); + LeftThumbFingertipGrabCollider->bCastDynamicShadow = false; + LeftThumbFingertipGrabCollider->SetReceivesDecals(true); + LeftThumbFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - LeftIndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("LeftIndexFingertipCollider")); - LeftIndexFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - LeftIndexFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetIndexFingertipSocketName()); - LeftIndexFingertipCollider->SetCastShadow(false); - LeftIndexFingertipCollider->bCastDynamicShadow = false; - LeftIndexFingertipCollider->SetReceivesDecals(true); - LeftIndexFingertipCollider->SetCanEverAffectNavigation(false); - LeftIndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - LeftIndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - LeftIndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + LeftIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftIndexFingertipGrabCollider")); + LeftIndexFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + LeftIndexFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetIndexFingertipGrabSocketName()); + LeftIndexFingertipGrabCollider->SetCastShadow(false); + LeftIndexFingertipGrabCollider->bCastDynamicShadow = false; + LeftIndexFingertipGrabCollider->SetReceivesDecals(true); + LeftIndexFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftIndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftIndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftIndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - LeftMiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("LeftMiddleFingertipCollider")); - LeftMiddleFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - LeftMiddleFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetMiddleFingertipSocketName()); - LeftMiddleFingertipCollider->SetCastShadow(false); - LeftMiddleFingertipCollider->bCastDynamicShadow = false; - LeftMiddleFingertipCollider->SetReceivesDecals(true); - LeftMiddleFingertipCollider->SetCanEverAffectNavigation(false); - LeftMiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - LeftMiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - LeftMiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + LeftMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftMiddleFingertipGrabCollider")); + LeftMiddleFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + LeftMiddleFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetMiddleFingertipGrabSocketName()); + LeftMiddleFingertipGrabCollider->SetCastShadow(false); + LeftMiddleFingertipGrabCollider->bCastDynamicShadow = false; + LeftMiddleFingertipGrabCollider->SetReceivesDecals(true); + LeftMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftMiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + LeftThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftThumbFingertipTouchCollider")); + LeftThumbFingertipTouchCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsTouchColliderSize()); + LeftThumbFingertipTouchCollider->SetupAttachment(HandLeft, HandLeft->GetThumbFingertipTouchSocketName()); + LeftThumbFingertipTouchCollider->SetCastShadow(false); + LeftThumbFingertipTouchCollider->bCastDynamicShadow = false; + LeftThumbFingertipTouchCollider->SetReceivesDecals(true); + LeftThumbFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftThumbFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftThumbFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftThumbFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + LeftIndexFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftIndexFingertipTouchCollider")); + LeftIndexFingertipTouchCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsTouchColliderSize()); + LeftIndexFingertipTouchCollider->SetupAttachment(HandLeft, HandLeft->GetIndexFingertipTouchSocketName()); + LeftIndexFingertipTouchCollider->SetCastShadow(false); + LeftIndexFingertipTouchCollider->bCastDynamicShadow = false; + LeftIndexFingertipTouchCollider->SetReceivesDecals(true); + LeftIndexFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftIndexFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftIndexFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftIndexFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + LeftMiddleFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftMiddleFingertipTouchCollider")); + LeftMiddleFingertipTouchCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsTouchColliderSize()); + LeftMiddleFingertipTouchCollider->SetupAttachment(HandLeft, HandLeft->GetMiddleFingertipTouchSocketName()); + LeftMiddleFingertipTouchCollider->SetCastShadow(false); + LeftMiddleFingertipTouchCollider->bCastDynamicShadow = false; + LeftMiddleFingertipTouchCollider->SetReceivesDecals(true); + LeftMiddleFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftMiddleFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftMiddleFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + LeftRingFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftRingFingertipTouchCollider")); + LeftRingFingertipTouchCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsTouchColliderSize()); + LeftRingFingertipTouchCollider->SetupAttachment(HandLeft, HandLeft->GetRingFingertipTouchSocketName()); + LeftRingFingertipTouchCollider->SetCastShadow(false); + LeftRingFingertipTouchCollider->bCastDynamicShadow = false; + LeftRingFingertipTouchCollider->SetReceivesDecals(true); + LeftRingFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftRingFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftRingFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftRingFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + LeftPinkyFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftPinkyFingertipTouchCollider")); + LeftPinkyFingertipTouchCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsTouchColliderSize()); + LeftPinkyFingertipTouchCollider->SetupAttachment(HandLeft, HandLeft->GetPinkyFingertipTouchSocketName()); + LeftPinkyFingertipTouchCollider->SetCastShadow(false); + LeftPinkyFingertipTouchCollider->bCastDynamicShadow = false; + LeftPinkyFingertipTouchCollider->SetReceivesDecals(true); + LeftPinkyFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftPinkyFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + LeftPinkyFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + LeftPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); WristTrackerRight = ObjectInitializer.CreateDefaultSubobject( this, TEXT("WristTrackerRight")); @@ -167,67 +262,162 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) HandRight->SetRight(true); HandRight->SetHiddenIfNoGloveDetected(true); HandRight->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f}, - false, nullptr, ETeleportType::None); + false, nullptr, ETeleportType::None); HandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f}, false, nullptr, ETeleportType::None); HandRight->SetWristTracker(WristTrackerRight); - RightThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("RightThumbFingertipCollider")); - RightThumbFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - RightThumbFingertipCollider->SetupAttachment(HandRight, HandRight->GetThumbFingertipSocketName()); - RightThumbFingertipCollider->SetCastShadow(false); - RightThumbFingertipCollider->bCastDynamicShadow = false; - RightThumbFingertipCollider->SetReceivesDecals(true); - RightThumbFingertipCollider->SetCanEverAffectNavigation(false); - RightThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - RightThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - RightThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + RightThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightThumbFingertipGrabCollider")); + RightThumbFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + RightThumbFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetThumbFingertipGrabSocketName()); + RightThumbFingertipGrabCollider->SetCastShadow(false); + RightThumbFingertipGrabCollider->bCastDynamicShadow = false; + RightThumbFingertipGrabCollider->SetReceivesDecals(true); + RightThumbFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - RightIndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("RightIndexFingertipCollider")); - RightIndexFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - RightIndexFingertipCollider->SetupAttachment(HandRight, HandRight->GetIndexFingertipSocketName()); - RightIndexFingertipCollider->SetCastShadow(false); - RightIndexFingertipCollider->bCastDynamicShadow = false; - RightIndexFingertipCollider->SetReceivesDecals(true); - RightIndexFingertipCollider->SetCanEverAffectNavigation(false); - RightIndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - RightIndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - RightIndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + RightIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightIndexFingertipGrabCollider")); + RightIndexFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + RightIndexFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetIndexFingertipGrabSocketName()); + RightIndexFingertipGrabCollider->SetCastShadow(false); + RightIndexFingertipGrabCollider->bCastDynamicShadow = false; + RightIndexFingertipGrabCollider->SetReceivesDecals(true); + RightIndexFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightIndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightIndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightIndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - RightMiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("RightMiddleFingertipCollider")); - RightMiddleFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); - RightMiddleFingertipCollider->SetupAttachment(HandRight, HandRight->GetMiddleFingertipSocketName()); - RightMiddleFingertipCollider->SetCastShadow(false); - RightMiddleFingertipCollider->bCastDynamicShadow = false; - RightMiddleFingertipCollider->SetReceivesDecals(true); - RightMiddleFingertipCollider->SetCanEverAffectNavigation(false); - RightMiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - RightMiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - RightMiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + RightMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightMiddleFingertipGrabCollider")); + RightMiddleFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize()); + RightMiddleFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetMiddleFingertipGrabSocketName()); + RightMiddleFingertipGrabCollider->SetCastShadow(false); + RightMiddleFingertipGrabCollider->bCastDynamicShadow = false; + RightMiddleFingertipGrabCollider->SetReceivesDecals(true); + RightMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightMiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightMiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RightThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightThumbFingertipTouchCollider")); + RightThumbFingertipTouchCollider->SetRelativeScale3D(HandRight->GetDefaultFingertipsTouchColliderSize()); + RightThumbFingertipTouchCollider->SetupAttachment(HandRight, HandRight->GetThumbFingertipTouchSocketName()); + RightThumbFingertipTouchCollider->SetCastShadow(false); + RightThumbFingertipTouchCollider->bCastDynamicShadow = false; + RightThumbFingertipTouchCollider->SetReceivesDecals(true); + RightThumbFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightThumbFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightThumbFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightThumbFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RightIndexFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightIndexFingertipTouchCollider")); + RightIndexFingertipTouchCollider->SetRelativeScale3D(HandRight->GetDefaultFingertipsTouchColliderSize()); + RightIndexFingertipTouchCollider->SetupAttachment(HandRight, HandRight->GetIndexFingertipTouchSocketName()); + RightIndexFingertipTouchCollider->SetCastShadow(false); + RightIndexFingertipTouchCollider->bCastDynamicShadow = false; + RightIndexFingertipTouchCollider->SetReceivesDecals(true); + RightIndexFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightIndexFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightIndexFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightIndexFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightIndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RightMiddleFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightMiddleFingertipTouchCollider")); + RightMiddleFingertipTouchCollider->SetRelativeScale3D(HandRight->GetDefaultFingertipsTouchColliderSize()); + RightMiddleFingertipTouchCollider->SetupAttachment(HandRight, HandRight->GetMiddleFingertipTouchSocketName()); + RightMiddleFingertipTouchCollider->SetCastShadow(false); + RightMiddleFingertipTouchCollider->bCastDynamicShadow = false; + RightMiddleFingertipTouchCollider->SetReceivesDecals(true); + RightMiddleFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightMiddleFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightMiddleFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightMiddleFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightMiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RightRingFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightRingFingertipTouchCollider")); + RightRingFingertipTouchCollider->SetRelativeScale3D(HandRight->GetDefaultFingertipsTouchColliderSize()); + RightRingFingertipTouchCollider->SetupAttachment(HandRight, HandRight->GetRingFingertipTouchSocketName()); + RightRingFingertipTouchCollider->SetCastShadow(false); + RightRingFingertipTouchCollider->bCastDynamicShadow = false; + RightRingFingertipTouchCollider->SetReceivesDecals(true); + RightRingFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightRingFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightRingFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightRingFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightRingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RightPinkyFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightPinkyFingertipTouchCollider")); + RightPinkyFingertipTouchCollider->SetRelativeScale3D(HandRight->GetDefaultFingertipsTouchColliderSize()); + RightPinkyFingertipTouchCollider->SetupAttachment(HandRight, HandRight->GetPinkyFingertipTouchSocketName()); + RightPinkyFingertipTouchCollider->SetCastShadow(false); + RightPinkyFingertipTouchCollider->bCastDynamicShadow = false; + RightPinkyFingertipTouchCollider->SetReceivesDecals(true); + RightPinkyFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightPinkyFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RightPinkyFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RightPinkyFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RightPinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); } void ASGPawn::BeginPlay() diff --git a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGVirtualHandActor.cpp b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGVirtualHandActor.cpp index 3a97e026..ec4c4608 100644 --- a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGVirtualHandActor.cpp +++ b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGVirtualHandActor.cpp @@ -81,62 +81,157 @@ ASGVirtualHandActor::ASGVirtualHandActor(const FObjectInitializer& ObjectInitial VirtualHand->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f}, false, nullptr, ETeleportType::None); - ThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("ThumbFingertipCollider")); - ThumbFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetThumbFingertipSocketName()); - ThumbFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); - ThumbFingertipCollider->SetCastShadow(false); - ThumbFingertipCollider->bCastDynamicShadow = false; - ThumbFingertipCollider->SetReceivesDecals(true); - ThumbFingertipCollider->SetCanEverAffectNavigation(false); - ThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - ThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - ThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + ThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("ThumbFingertipGrabCollider")); + ThumbFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetThumbFingertipGrabSocketName()); + ThumbFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize()); + ThumbFingertipGrabCollider->SetCastShadow(false); + ThumbFingertipGrabCollider->bCastDynamicShadow = false; + ThumbFingertipGrabCollider->SetReceivesDecals(true); + ThumbFingertipGrabCollider->SetCanEverAffectNavigation(false); + ThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + ThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + ThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - IndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("IndexFingertipCollider")); - IndexFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); - IndexFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetIndexFingertipSocketName()); - IndexFingertipCollider->SetCastShadow(false); - IndexFingertipCollider->bCastDynamicShadow = false; - IndexFingertipCollider->SetReceivesDecals(true); - IndexFingertipCollider->SetCanEverAffectNavigation(false); - IndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - IndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - IndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + IndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("IndexFingertipGrabCollider")); + IndexFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize()); + IndexFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetIndexFingertipGrabSocketName()); + IndexFingertipGrabCollider->SetCastShadow(false); + IndexFingertipGrabCollider->bCastDynamicShadow = false; + IndexFingertipGrabCollider->SetReceivesDecals(true); + IndexFingertipGrabCollider->SetCanEverAffectNavigation(false); + IndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + IndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + IndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); - MiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject( - this, TEXT("MiddleFingertipCollider")); - MiddleFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); - MiddleFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetMiddleFingertipSocketName()); - MiddleFingertipCollider->SetCastShadow(false); - MiddleFingertipCollider->bCastDynamicShadow = false; - MiddleFingertipCollider->SetReceivesDecals(true); - MiddleFingertipCollider->SetCanEverAffectNavigation(false); - MiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); - MiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); - MiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); - MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + MiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("MiddleFingertipGrabCollider")); + MiddleFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize()); + MiddleFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetMiddleFingertipGrabSocketName()); + MiddleFingertipGrabCollider->SetCastShadow(false); + MiddleFingertipGrabCollider->bCastDynamicShadow = false; + MiddleFingertipGrabCollider->SetReceivesDecals(true); + MiddleFingertipGrabCollider->SetCanEverAffectNavigation(false); + MiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic); + MiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + MiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + ThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("ThumbFingertipTouchCollider")); + ThumbFingertipTouchCollider->SetupAttachment(VirtualHand, VirtualHand->GetThumbFingertipTouchSocketName()); + ThumbFingertipTouchCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsTouchColliderSize()); + ThumbFingertipTouchCollider->SetCastShadow(false); + ThumbFingertipTouchCollider->bCastDynamicShadow = false; + ThumbFingertipTouchCollider->SetReceivesDecals(true); + ThumbFingertipTouchCollider->SetCanEverAffectNavigation(false); + ThumbFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + ThumbFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + ThumbFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + ThumbFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + IndexFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("IndexFingertipTouchCollider")); + IndexFingertipTouchCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsTouchColliderSize()); + IndexFingertipTouchCollider->SetupAttachment(VirtualHand, VirtualHand->GetIndexFingertipTouchSocketName()); + IndexFingertipTouchCollider->SetCastShadow(false); + IndexFingertipTouchCollider->bCastDynamicShadow = false; + IndexFingertipTouchCollider->SetReceivesDecals(true); + IndexFingertipTouchCollider->SetCanEverAffectNavigation(false); + IndexFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + IndexFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + IndexFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + IndexFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + MiddleFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("MiddleFingertipTouchCollider")); + MiddleFingertipTouchCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsTouchColliderSize()); + MiddleFingertipTouchCollider->SetupAttachment(VirtualHand, VirtualHand->GetMiddleFingertipTouchSocketName()); + MiddleFingertipTouchCollider->SetCastShadow(false); + MiddleFingertipTouchCollider->bCastDynamicShadow = false; + MiddleFingertipTouchCollider->SetReceivesDecals(true); + MiddleFingertipTouchCollider->SetCanEverAffectNavigation(false); + MiddleFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + MiddleFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + MiddleFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + MiddleFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + RingFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RingFingertipTouchCollider")); + RingFingertipTouchCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsTouchColliderSize()); + RingFingertipTouchCollider->SetupAttachment(VirtualHand, VirtualHand->GetRingFingertipTouchSocketName()); + RingFingertipTouchCollider->SetCastShadow(false); + RingFingertipTouchCollider->bCastDynamicShadow = false; + RingFingertipTouchCollider->SetReceivesDecals(true); + RingFingertipTouchCollider->SetCanEverAffectNavigation(false); + RingFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + RingFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RingFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RingFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + + PinkyFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("PinkyFingertipTouchCollider")); + PinkyFingertipTouchCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsTouchColliderSize()); + PinkyFingertipTouchCollider->SetupAttachment(VirtualHand, VirtualHand->GetPinkyFingertipTouchSocketName()); + PinkyFingertipTouchCollider->SetCastShadow(false); + PinkyFingertipTouchCollider->bCastDynamicShadow = false; + PinkyFingertipTouchCollider->SetReceivesDecals(true); + PinkyFingertipTouchCollider->SetCanEverAffectNavigation(false); + PinkyFingertipTouchCollider->SetCollisionObjectType(ECC_WorldDynamic); + PinkyFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + PinkyFingertipTouchCollider->SetCollisionResponseToAllChannels(ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + PinkyFingertipTouchCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); WristTracker = CreateDefaultSubobject(TEXT("WristTracker")); WristTracker->SetupAttachment(RootComponent); diff --git a/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h b/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h index 57863d8a..40ffb1ec 100644 --- a/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h +++ b/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h @@ -84,17 +84,35 @@ private: UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) uint8 bRight : 1; - UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - FVector DefaultFingertipsColliderSize; + UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false")) + FVector DefaultFingertipsGrabColliderSize; - UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - FName ThumbFingertipSocketName; + UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false")) + FName ThumbFingertipGrabSocketName; - UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - FName IndexFingertipSocketName; + UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false")) + FName IndexFingertipGrabSocketName; - UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - FName MiddleFingertipSocketName; + UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false")) + FName MiddleFingertipGrabSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FVector DefaultFingertipsTouchColliderSize; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FName ThumbFingertipTouchSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FName IndexFingertipTouchSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FName MiddleFingertipTouchSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FName RingFingertipTouchSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove | Touch", meta=(AllowPrivateAccess="false")) + FName PinkyFingertipTouchSocketName; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) uint8 bHiddenInGameIfNoGloveDetected : 1; @@ -126,39 +144,94 @@ public: void SetRight(const bool bInRight); - FORCEINLINE const FVector& GetDefaultFingertipsColliderSize() const + FORCEINLINE const FVector& GetDefaultFingertipsGrabColliderSize() const { - return DefaultFingertipsColliderSize; + return DefaultFingertipsGrabColliderSize; } - FORCEINLINE const FName& GetThumbFingertipSocketName() const + FORCEINLINE const FName& GetThumbFingertipGrabSocketName() const { - return ThumbFingertipSocketName; + return ThumbFingertipGrabSocketName; } - FORCEINLINE void SetThumbFingertipSocketName(const FName& SocketName) + FORCEINLINE void SetThumbFingertipGrabSocketName(const FName& GrabSocketName) { - ThumbFingertipSocketName = SocketName; + ThumbFingertipGrabSocketName = GrabSocketName; } - FORCEINLINE const FName& GetIndexFingertipSocketName() const + FORCEINLINE const FName& GetIndexFingertipGrabSocketName() const { - return IndexFingertipSocketName; + return IndexFingertipGrabSocketName; } - FORCEINLINE void SetIndexFingertipSocketName(const FName& SocketName) + FORCEINLINE void SetIndexFingertipGrabSocketName(const FName& GrabSocketName) { - IndexFingertipSocketName = SocketName; + IndexFingertipGrabSocketName = GrabSocketName; } - FORCEINLINE const FName& GetMiddleFingertipSocketName() const + FORCEINLINE const FName& GetMiddleFingertipGrabSocketName() const { - return MiddleFingertipSocketName; + return MiddleFingertipGrabSocketName; } - FORCEINLINE void SetMiddleFingertipSocketName(const FName& SocketName) + FORCEINLINE void SetMiddleFingertipGrabSocketName(const FName& GrabSocketName) { - MiddleFingertipSocketName = SocketName; + MiddleFingertipGrabSocketName = GrabSocketName; + } + + FORCEINLINE const FVector& GetDefaultFingertipsTouchColliderSize() const + { + return DefaultFingertipsTouchColliderSize; + } + + FORCEINLINE const FName& GetThumbFingertipTouchSocketName() const + { + return ThumbFingertipTouchSocketName; + } + + FORCEINLINE void SetThumbFingertipTouchSocketName(const FName& TouchSocketName) + { + ThumbFingertipTouchSocketName = TouchSocketName; + } + + FORCEINLINE const FName& GetIndexFingertipTouchSocketName() const + { + return IndexFingertipTouchSocketName; + } + + FORCEINLINE void SetIndexFingertipTouchSocketName(const FName& TouchSocketName) + { + IndexFingertipTouchSocketName = TouchSocketName; + } + + FORCEINLINE const FName& GetMiddleFingertipTouchSocketName() const + { + return MiddleFingertipTouchSocketName; + } + + FORCEINLINE void SetMiddleFingertipTouchSocketName(const FName& TouchSocketName) + { + MiddleFingertipTouchSocketName = TouchSocketName; + } + + FORCEINLINE const FName& GetRingFingertipTouchSocketName() const + { + return RingFingertipTouchSocketName; + } + + FORCEINLINE void SetRingFingertipTouchSocketName(const FName& TouchSocketName) + { + RingFingertipTouchSocketName = TouchSocketName; + } + + FORCEINLINE const FName& GetPinkyFingertipTouchSocketName() const + { + return PinkyFingertipTouchSocketName; + } + + FORCEINLINE void SetPinkyFingertipTouchSocketName(const FName& TouchSocketName) + { + PinkyFingertipTouchSocketName = TouchSocketName; } FORCEINLINE bool IsHiddenInGameIfNoGloveDetected() const diff --git a/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h b/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h index bcbe4798..b6d7a1c9 100644 --- a/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h +++ b/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h @@ -76,13 +76,28 @@ private: USGVirtualHandComponent* HandLeft; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* LeftThumbFingertipCollider; + USphereComponent* LeftThumbFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* LeftIndexFingertipCollider; + USphereComponent* LeftIndexFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* LeftMiddleFingertipCollider; + USphereComponent* LeftMiddleFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftThumbFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftIndexFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftMiddleFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftRingFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftPinkyFingertipTouchCollider; UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) USGWristTrackerComponent* WristTrackerRight; @@ -91,13 +106,28 @@ private: USGVirtualHandComponent* HandRight; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* RightThumbFingertipCollider; + USphereComponent* RightThumbFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* RightIndexFingertipCollider; + USphereComponent* RightIndexFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* RightMiddleFingertipCollider; + USphereComponent* RightMiddleFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightThumbFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightIndexFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightMiddleFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightRingFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightPinkyFingertipTouchCollider; public: FORCEINLINE UCameraComponent* GetCamera() const @@ -115,19 +145,44 @@ public: return HandLeft; } - FORCEINLINE USphereComponent* GetLeftThumbFingertipCollider() const + FORCEINLINE USphereComponent* GetLeftThumbFingertipGrabCollider() const { - return LeftThumbFingertipCollider; + return LeftThumbFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetLeftIndexFingertipCollider() const + FORCEINLINE USphereComponent* GetLeftIndexFingertipGrabCollider() const { - return LeftIndexFingertipCollider; + return LeftIndexFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetLeftMiddleFingertipCollider() const + FORCEINLINE USphereComponent* GetLeftMiddleFingertipGrabCollider() const { - return LeftMiddleFingertipCollider; + return LeftMiddleFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetLeftThumbFingertipTouchCollider() const + { + return LeftThumbFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftIndexFingertipTouchCollider() const + { + return LeftIndexFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftMiddleFingertipTouchCollider() const + { + return LeftMiddleFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftRingFingertipTouchCollider() const + { + return LeftRingFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftPinkyFingertipTouchCollider() const + { + return LeftPinkyFingertipTouchCollider; } FORCEINLINE USGWristTrackerComponent* GetWristTrackerRight() const @@ -140,19 +195,44 @@ public: return HandRight; } - FORCEINLINE USphereComponent* GetRightThumbFingertipCollider() const + FORCEINLINE USphereComponent* GetRightThumbFingertipGrabCollider() const { - return RightThumbFingertipCollider; + return RightThumbFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetRightIndexFingertipCollider() const + FORCEINLINE USphereComponent* GetRightIndexFingertipGrabCollider() const { - return RightIndexFingertipCollider; + return RightIndexFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetRightMiddleFingertipCollider() const + FORCEINLINE USphereComponent* GetRightMiddleFingertipGrabCollider() const { - return RightMiddleFingertipCollider; + return RightMiddleFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetRightThumbFingertipTouchCollider() const + { + return RightThumbFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightIndexFingertipTouchCollider() const + { + return RightIndexFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightMiddleFingertipTouchCollider() const + { + return RightMiddleFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightRingFingertipTouchCollider() const + { + return RightRingFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightPinkyFingertipTouchCollider() const + { + return RightPinkyFingertipTouchCollider; } public: diff --git a/Source/SenseGlove/Public/SenseGlove/GameFramework/SGVirtualHandActor.h b/Source/SenseGlove/Public/SenseGlove/GameFramework/SGVirtualHandActor.h index 67152530..1932a501 100644 --- a/Source/SenseGlove/Public/SenseGlove/GameFramework/SGVirtualHandActor.h +++ b/Source/SenseGlove/Public/SenseGlove/GameFramework/SGVirtualHandActor.h @@ -79,13 +79,28 @@ private: USGVirtualHandComponent* VirtualHand; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* ThumbFingertipCollider; + USphereComponent* ThumbFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* IndexFingertipCollider; + USphereComponent* IndexFingertipGrabCollider; UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) - USphereComponent* MiddleFingertipCollider; + USphereComponent* MiddleFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* ThumbFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* IndexFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* MiddleFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RingFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* PinkyFingertipTouchCollider; public: FORCEINLINE USGWristTrackerComponent* GetWristTracker() const @@ -98,19 +113,44 @@ public: return VirtualHand; } - FORCEINLINE USphereComponent* GetThumbFingertipCollider() const + FORCEINLINE USphereComponent* GetThumbFingertipGrabCollider() const { - return ThumbFingertipCollider; + return ThumbFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetIndexFingertipCollider() const + FORCEINLINE USphereComponent* GetIndexFingertipGrabCollider() const { - return IndexFingertipCollider; + return IndexFingertipGrabCollider; } - FORCEINLINE USphereComponent* GetMiddleFingertipCollider() const + FORCEINLINE USphereComponent* GetMiddleFingertipGrabCollider() const { - return MiddleFingertipCollider; + return MiddleFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetThumbFingertipTouchCollider() const + { + return ThumbFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetIndexFingertipTouchCollider() const + { + return IndexFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetMiddleFingertipTouchCollider() const + { + return MiddleFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRingFingertipTouchCollider() const + { + return RingFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetPinkyFingertipTouchCollider() const + { + return PinkyFingertipTouchCollider; } protected: diff --git a/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp b/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp index d924a896..41e26f64 100644 --- a/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp +++ b/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp @@ -57,19 +57,44 @@ USGVirtualHandComponent* UPawnKismetLibrary::GetHandLeft(const ASGPawn* Pawn) return Pawn->GetHandLeft(); } -USphereComponent* UPawnKismetLibrary::GetLeftThumbFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetLeftThumbFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetLeftThumbFingertipCollider(); + return Pawn->GetLeftThumbFingertipGrabCollider(); } -USphereComponent* UPawnKismetLibrary::GetLeftIndexFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetLeftIndexFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetLeftIndexFingertipCollider(); + return Pawn->GetLeftIndexFingertipGrabCollider(); } -USphereComponent* UPawnKismetLibrary::GetLeftMiddleFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetLeftMiddleFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetLeftMiddleFingertipCollider(); + return Pawn->GetLeftMiddleFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftThumbFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftThumbFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftIndexFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftIndexFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftMiddleFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftMiddleFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftRingFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftRingFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftPinkyFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftPinkyFingertipTouchCollider(); } USGWristTrackerComponent* UPawnKismetLibrary::GetWristTrackerRight(const ASGPawn* Pawn) @@ -82,17 +107,42 @@ USGVirtualHandComponent* UPawnKismetLibrary::GetHandRight(const ASGPawn* Pawn) return Pawn->GetHandRight(); } -USphereComponent* UPawnKismetLibrary::GetRightThumbFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetRightThumbFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetRightThumbFingertipCollider(); + return Pawn->GetRightThumbFingertipGrabCollider(); } -USphereComponent* UPawnKismetLibrary::GetRightIndexFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetRightIndexFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetRightIndexFingertipCollider(); + return Pawn->GetRightIndexFingertipGrabCollider(); } -USphereComponent* UPawnKismetLibrary::GetRightMiddleFingertipCollider(const ASGPawn* Pawn) +USphereComponent* UPawnKismetLibrary::GetRightMiddleFingertipGrabCollider(const ASGPawn* Pawn) { - return Pawn->GetRightMiddleFingertipCollider(); + return Pawn->GetRightMiddleFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightThumbFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightThumbFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightIndexFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightIndexFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightMiddleFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightMiddleFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightRingFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightRingFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightPinkyFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightPinkyFingertipTouchCollider(); } \ No newline at end of file diff --git a/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandActorKismetLibrary.cpp b/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandActorKismetLibrary.cpp index e7de6bca..8dd7acd8 100644 --- a/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandActorKismetLibrary.cpp +++ b/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandActorKismetLibrary.cpp @@ -51,22 +51,51 @@ USGVirtualHandComponent* UVirtualHandActorKismetLibrary::GetVirtualHand(const AS return VirtualHandActor->GetVirtualHand(); } -USphereComponent* UVirtualHandActorKismetLibrary::GetThumbFingertipCollider( +USphereComponent* UVirtualHandActorKismetLibrary::GetThumbFingertipGrabCollider( const ASGVirtualHandActor* VirtualHandActor) { - return VirtualHandActor->GetThumbFingertipCollider(); + return VirtualHandActor->GetThumbFingertipGrabCollider(); } -USphereComponent* UVirtualHandActorKismetLibrary::GetIndexFingertipCollider( +USphereComponent* UVirtualHandActorKismetLibrary::GetIndexFingertipGrabCollider( const ASGVirtualHandActor* VirtualHandActor) { - return VirtualHandActor->GetIndexFingertipCollider(); + return VirtualHandActor->GetIndexFingertipGrabCollider(); } -USphereComponent* UVirtualHandActorKismetLibrary::GetMiddleFingertipCollider( +USphereComponent* UVirtualHandActorKismetLibrary::GetMiddleFingertipGrabCollider( const ASGVirtualHandActor* VirtualHandActor) { - return VirtualHandActor->GetMiddleFingertipCollider(); + return VirtualHandActor->GetMiddleFingertipGrabCollider(); +} +USphereComponent* UVirtualHandActorKismetLibrary::GetThumbFingertipTouchCollider( + const ASGVirtualHandActor* VirtualHandActor) +{ + return VirtualHandActor->GetThumbFingertipTouchCollider(); +} + +USphereComponent* UVirtualHandActorKismetLibrary::GetIndexFingertipTouchCollider( + const ASGVirtualHandActor* VirtualHandActor) +{ + return VirtualHandActor->GetIndexFingertipTouchCollider(); +} + +USphereComponent* UVirtualHandActorKismetLibrary::GetMiddleFingertipTouchCollider( + const ASGVirtualHandActor* VirtualHandActor) +{ + return VirtualHandActor->GetMiddleFingertipTouchCollider(); +} + +USphereComponent* UVirtualHandActorKismetLibrary::GetRingFingertipTouchCollider( + const ASGVirtualHandActor* VirtualHandActor) +{ + return VirtualHandActor->GetRingFingertipTouchCollider(); +} + +USphereComponent* UVirtualHandActorKismetLibrary::GetPinkyFingertipTouchCollider( + const ASGVirtualHandActor* VirtualHandActor) +{ + return VirtualHandActor->GetPinkyFingertipTouchCollider(); } bool UVirtualHandActorKismetLibrary::IsLeft(const ASGVirtualHandActor* VirtualHandActor) diff --git a/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp b/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp index 74c4d0f0..7f26ccbc 100644 --- a/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp +++ b/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp @@ -77,46 +77,113 @@ void UVirtualHandComponentKismetLibrary::SetRight(USGVirtualHandComponent* Virtu VirtualHandComponent->SetRight(bInRight); } -const FVector& UVirtualHandComponentKismetLibrary::GetDefaultFingertipsColliderSize( +const FVector& UVirtualHandComponentKismetLibrary::GetDefaultFingertipsGrabColliderSize( const USGVirtualHandComponent* VirtualHandComponent) { - return VirtualHandComponent->GetDefaultFingertipsColliderSize(); + return VirtualHandComponent->GetDefaultFingertipsGrabColliderSize(); } -const FName& UVirtualHandComponentKismetLibrary::GetThumbFingertipSocketName( +const FName& UVirtualHandComponentKismetLibrary::GetThumbFingertipGrabSocketName( const USGVirtualHandComponent* VirtualHandComponent) { - return VirtualHandComponent->GetThumbFingertipSocketName(); + return VirtualHandComponent->GetThumbFingertipGrabSocketName(); } -void UVirtualHandComponentKismetLibrary::SetThumbFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName) +void UVirtualHandComponentKismetLibrary::SetThumbFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName) { - VirtualHandComponent->SetThumbFingertipSocketName(SocketName); + VirtualHandComponent->SetThumbFingertipGrabSocketName(GrabSocketName); } -const FName& UVirtualHandComponentKismetLibrary::GetIndexFingertipSocketName( +const FName& UVirtualHandComponentKismetLibrary::GetIndexFingertipGrabSocketName( const USGVirtualHandComponent* VirtualHandComponent) { - return VirtualHandComponent->GetIndexFingertipSocketName(); + return VirtualHandComponent->GetIndexFingertipGrabSocketName(); } -void UVirtualHandComponentKismetLibrary::SetIndexFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName) +void UVirtualHandComponentKismetLibrary::SetIndexFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName) { - VirtualHandComponent->SetIndexFingertipSocketName(SocketName); + VirtualHandComponent->SetIndexFingertipGrabSocketName(GrabSocketName); } -const FName& UVirtualHandComponentKismetLibrary::GetMiddleFingertipSocketName( +const FName& UVirtualHandComponentKismetLibrary::GetMiddleFingertipGrabSocketName( const USGVirtualHandComponent* VirtualHandComponent) { - return VirtualHandComponent->GetMiddleFingertipSocketName(); + return VirtualHandComponent->GetMiddleFingertipGrabSocketName(); } -void UVirtualHandComponentKismetLibrary::SetMiddleFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName) +void UVirtualHandComponentKismetLibrary::SetMiddleFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName) { - VirtualHandComponent->SetMiddleFingertipSocketName(SocketName); + VirtualHandComponent->SetMiddleFingertipGrabSocketName(GrabSocketName); +} + +const FVector& UVirtualHandComponentKismetLibrary::GetDefaultFingertipsTouchColliderSize( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetDefaultFingertipsTouchColliderSize(); +} + +const FName& UVirtualHandComponentKismetLibrary::GetThumbFingertipTouchSocketName( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetThumbFingertipTouchSocketName(); +} + +void UVirtualHandComponentKismetLibrary::SetThumbFingertipTouchSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName) +{ + VirtualHandComponent->SetThumbFingertipTouchSocketName(TouchSocketName); +} + +const FName& UVirtualHandComponentKismetLibrary::GetIndexFingertipTouchSocketName( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetIndexFingertipTouchSocketName(); +} + +void UVirtualHandComponentKismetLibrary::SetIndexFingertipTouchSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName) +{ + VirtualHandComponent->SetIndexFingertipTouchSocketName(TouchSocketName); +} + +const FName& UVirtualHandComponentKismetLibrary::GetMiddleFingertipTouchSocketName( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetMiddleFingertipTouchSocketName(); +} + +void UVirtualHandComponentKismetLibrary::SetMiddleFingertipTouchSocketName( + USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName) +{ + VirtualHandComponent->SetMiddleFingertipTouchSocketName(TouchSocketName); +} + +const FName& UVirtualHandComponentKismetLibrary::GetRingFingertipTouchSocketName( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetRingFingertipTouchSocketName(); +} + +void UVirtualHandComponentKismetLibrary::SetRingFingertipTouchSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName) +{ + VirtualHandComponent->SetRingFingertipTouchSocketName(TouchSocketName); +} + +const FName& UVirtualHandComponentKismetLibrary::GetPinkyFingertipTouchSocketName( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetPinkyFingertipTouchSocketName(); +} + +void UVirtualHandComponentKismetLibrary::SetPinkyFingertipTouchSocketName(USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName) +{ + VirtualHandComponent->SetPinkyFingertipTouchSocketName(TouchSocketName); } bool UVirtualHandComponentKismetLibrary::IsHiddenInGameIfNoGloveDetected( diff --git a/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h b/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h index 6c811cda..1b52095e 100644 --- a/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h +++ b/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h @@ -72,13 +72,28 @@ public: static USGVirtualHandComponent* GetHandLeft(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetLeftThumbFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetLeftThumbFingertipGrabCollider(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetLeftIndexFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetLeftIndexFingertipGrabCollider(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetLeftMiddleFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetLeftMiddleFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftThumbFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftIndexFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftMiddleFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftRingFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftPinkyFingertipTouchCollider(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") static USGWristTrackerComponent* GetWristTrackerRight(const ASGPawn* Pawn); @@ -87,11 +102,26 @@ public: static USGVirtualHandComponent* GetHandRight(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetRightThumbFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetRightThumbFingertipGrabCollider(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetRightIndexFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetRightIndexFingertipGrabCollider(const ASGPawn* Pawn); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") - static USphereComponent* GetRightMiddleFingertipCollider(const ASGPawn* Pawn); + static USphereComponent* GetRightMiddleFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightThumbFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightIndexFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightMiddleFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightRingFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightPinkyFingertipTouchCollider(const ASGPawn* Pawn); }; \ No newline at end of file diff --git a/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandActorKismetLibrary.h b/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandActorKismetLibrary.h index b8022f07..1a557351 100644 --- a/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandActorKismetLibrary.h +++ b/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandActorKismetLibrary.h @@ -60,13 +60,28 @@ public: static USGVirtualHandComponent* GetVirtualHand(const ASGVirtualHandActor* VirtualHandActor); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") - static USphereComponent* GetThumbFingertipCollider(const ASGVirtualHandActor* VirtualHandActor); + static USphereComponent* GetThumbFingertipGrabCollider(const ASGVirtualHandActor* VirtualHandActor); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") - static USphereComponent* GetIndexFingertipCollider(const ASGVirtualHandActor* VirtualHandActor); + static USphereComponent* GetIndexFingertipGrabCollider(const ASGVirtualHandActor* VirtualHandActor); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") - static USphereComponent* GetMiddleFingertipCollider(const ASGVirtualHandActor* VirtualHandActor); + static USphereComponent* GetMiddleFingertipGrabCollider(const ASGVirtualHandActor* VirtualHandActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") + static USphereComponent* GetThumbFingertipTouchCollider(const ASGVirtualHandActor* VirtualHandActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") + static USphereComponent* GetIndexFingertipTouchCollider(const ASGVirtualHandActor* VirtualHandActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") + static USphereComponent* GetMiddleFingertipTouchCollider(const ASGVirtualHandActor* VirtualHandActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") + static USphereComponent* GetRingFingertipTouchCollider(const ASGVirtualHandActor* VirtualHandActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") + static USphereComponent* GetPinkyFingertipTouchCollider(const ASGVirtualHandActor* VirtualHandActor); UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") static bool IsLeft(const ASGVirtualHandActor* VirtualHandActor); diff --git a/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h b/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h index 5de6b531..980565e6 100644 --- a/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h +++ b/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h @@ -81,28 +81,66 @@ public: static void SetRight(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, bool bInRight); UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") - static const FVector& GetDefaultFingertipsColliderSize(const USGVirtualHandComponent* VirtualHandComponent); + static const FVector& GetDefaultFingertipsGrabColliderSize(const USGVirtualHandComponent* VirtualHandComponent); UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") - static const FName& GetThumbFingertipSocketName(const USGVirtualHandComponent* VirtualHandComponent); + static const FName& GetThumbFingertipGrabSocketName(const USGVirtualHandComponent* VirtualHandComponent); UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") - static void SetThumbFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName); + static void SetThumbFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName); UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") - static const FName& GetIndexFingertipSocketName(const USGVirtualHandComponent* VirtualHandComponent); + static const FName& GetIndexFingertipGrabSocketName(const USGVirtualHandComponent* VirtualHandComponent); UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") - static void SetIndexFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName); + static void SetIndexFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName); UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") - static const FName& GetMiddleFingertipSocketName(const USGVirtualHandComponent* VirtualHandComponent); + static const FName& GetMiddleFingertipGrabSocketName(const USGVirtualHandComponent* VirtualHandComponent); UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") - static void SetMiddleFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, - const FName& SocketName); + static void SetMiddleFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& GrabSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FVector& GetDefaultFingertipsTouchColliderSize(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetThumbFingertipTouchSocketName(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetThumbFingertipTouchSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetIndexFingertipTouchSocketName(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetIndexFingertipTouchSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetMiddleFingertipTouchSocketName(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetMiddleFingertipTouchSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetRingFingertipTouchSocketName(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetRingFingertipTouchSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetPinkyFingertipTouchSocketName(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetPinkyFingertipTouchSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FName& TouchSocketName); UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") static bool IsHiddenInGameIfNoGloveDetected(const USGVirtualHandComponent* VirtualHandComponent);