integrate the touch component and colliders and rename the grab ones

This commit is contained in:
Mamadou Babaei
2023-05-19 18:11:47 +02:00
parent 5a697e567e
commit ea29e1020e
12 changed files with 985 additions and 270 deletions
@@ -210,11 +210,19 @@ USGVirtualHandComponent::USGVirtualHandComponent(const FObjectInitializer& Objec
bRight = true; bRight = true;
DefaultFingertipsColliderSize = FVector{0.04f, 0.04f, 0.04f}; DefaultFingertipsGrabColliderSize = FVector{0.04f, 0.04f, 0.04f};
ThumbFingertipSocketName = FName(TEXT("ThumbFingertip")); ThumbFingertipGrabSocketName = FName(TEXT("ThumbFingertip"));
IndexFingertipSocketName = FName(TEXT("ThumbFingertip")); IndexFingertipGrabSocketName = FName(TEXT("IndexFingertip"));
MiddleFingertipSocketName = FName(TEXT("MiddleFingertip")); 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; bHiddenInGameIfNoGloveDetected = false;
@@ -100,62 +100,157 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer)
false, nullptr, ETeleportType::None); false, nullptr, ETeleportType::None);
HandLeft->SetWristTracker(WristTrackerLeft); HandLeft->SetWristTracker(WristTrackerLeft);
LeftThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( LeftThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("LeftThumbFingertipCollider")); this, TEXT("LeftThumbFingertipGrabCollider"));
LeftThumbFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); LeftThumbFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
LeftThumbFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetThumbFingertipSocketName()); LeftThumbFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetThumbFingertipGrabSocketName());
LeftThumbFingertipCollider->SetCastShadow(false); LeftThumbFingertipGrabCollider->SetCastShadow(false);
LeftThumbFingertipCollider->bCastDynamicShadow = false; LeftThumbFingertipGrabCollider->bCastDynamicShadow = false;
LeftThumbFingertipCollider->SetReceivesDecals(true); LeftThumbFingertipGrabCollider->SetReceivesDecals(true);
LeftThumbFingertipCollider->SetCanEverAffectNavigation(false); LeftThumbFingertipGrabCollider->SetCanEverAffectNavigation(false);
LeftThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); LeftThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
LeftThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); LeftThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
LeftThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
LeftThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); LeftThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
LeftIndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( LeftIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("LeftIndexFingertipCollider")); this, TEXT("LeftIndexFingertipGrabCollider"));
LeftIndexFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); LeftIndexFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
LeftIndexFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetIndexFingertipSocketName()); LeftIndexFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetIndexFingertipGrabSocketName());
LeftIndexFingertipCollider->SetCastShadow(false); LeftIndexFingertipGrabCollider->SetCastShadow(false);
LeftIndexFingertipCollider->bCastDynamicShadow = false; LeftIndexFingertipGrabCollider->bCastDynamicShadow = false;
LeftIndexFingertipCollider->SetReceivesDecals(true); LeftIndexFingertipGrabCollider->SetReceivesDecals(true);
LeftIndexFingertipCollider->SetCanEverAffectNavigation(false); LeftIndexFingertipGrabCollider->SetCanEverAffectNavigation(false);
LeftIndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); LeftIndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
LeftIndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); LeftIndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
LeftIndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
LeftIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); LeftIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
LeftMiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( LeftMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("LeftMiddleFingertipCollider")); this, TEXT("LeftMiddleFingertipGrabCollider"));
LeftMiddleFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); LeftMiddleFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
LeftMiddleFingertipCollider->SetupAttachment(HandLeft, HandLeft->GetMiddleFingertipSocketName()); LeftMiddleFingertipGrabCollider->SetupAttachment(HandLeft, HandLeft->GetMiddleFingertipGrabSocketName());
LeftMiddleFingertipCollider->SetCastShadow(false); LeftMiddleFingertipGrabCollider->SetCastShadow(false);
LeftMiddleFingertipCollider->bCastDynamicShadow = false; LeftMiddleFingertipGrabCollider->bCastDynamicShadow = false;
LeftMiddleFingertipCollider->SetReceivesDecals(true); LeftMiddleFingertipGrabCollider->SetReceivesDecals(true);
LeftMiddleFingertipCollider->SetCanEverAffectNavigation(false); LeftMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false);
LeftMiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); LeftMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
LeftMiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); LeftMiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
LeftMiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
LeftMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); LeftMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
LeftThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USGWristTrackerComponent>( WristTrackerRight = ObjectInitializer.CreateDefaultSubobject<USGWristTrackerComponent>(
this, TEXT("WristTrackerRight")); this, TEXT("WristTrackerRight"));
@@ -167,67 +262,162 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer)
HandRight->SetRight(true); HandRight->SetRight(true);
HandRight->SetHiddenIfNoGloveDetected(true); HandRight->SetHiddenIfNoGloveDetected(true);
HandRight->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f}, 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}, HandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f},
false, nullptr, ETeleportType::None); false, nullptr, ETeleportType::None);
HandRight->SetWristTracker(WristTrackerRight); HandRight->SetWristTracker(WristTrackerRight);
RightThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( RightThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("RightThumbFingertipCollider")); this, TEXT("RightThumbFingertipGrabCollider"));
RightThumbFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); RightThumbFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
RightThumbFingertipCollider->SetupAttachment(HandRight, HandRight->GetThumbFingertipSocketName()); RightThumbFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetThumbFingertipGrabSocketName());
RightThumbFingertipCollider->SetCastShadow(false); RightThumbFingertipGrabCollider->SetCastShadow(false);
RightThumbFingertipCollider->bCastDynamicShadow = false; RightThumbFingertipGrabCollider->bCastDynamicShadow = false;
RightThumbFingertipCollider->SetReceivesDecals(true); RightThumbFingertipGrabCollider->SetReceivesDecals(true);
RightThumbFingertipCollider->SetCanEverAffectNavigation(false); RightThumbFingertipGrabCollider->SetCanEverAffectNavigation(false);
RightThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); RightThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
RightThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); RightThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
RightThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
RightThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); RightThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
RightIndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( RightIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("RightIndexFingertipCollider")); this, TEXT("RightIndexFingertipGrabCollider"));
RightIndexFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); RightIndexFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
RightIndexFingertipCollider->SetupAttachment(HandRight, HandRight->GetIndexFingertipSocketName()); RightIndexFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetIndexFingertipGrabSocketName());
RightIndexFingertipCollider->SetCastShadow(false); RightIndexFingertipGrabCollider->SetCastShadow(false);
RightIndexFingertipCollider->bCastDynamicShadow = false; RightIndexFingertipGrabCollider->bCastDynamicShadow = false;
RightIndexFingertipCollider->SetReceivesDecals(true); RightIndexFingertipGrabCollider->SetReceivesDecals(true);
RightIndexFingertipCollider->SetCanEverAffectNavigation(false); RightIndexFingertipGrabCollider->SetCanEverAffectNavigation(false);
RightIndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); RightIndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
RightIndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); RightIndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
RightIndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
RightIndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); RightIndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
RightMiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( RightMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("RightMiddleFingertipCollider")); this, TEXT("RightMiddleFingertipGrabCollider"));
RightMiddleFingertipCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsColliderSize()); RightMiddleFingertipGrabCollider->SetRelativeScale3D(HandLeft->GetDefaultFingertipsGrabColliderSize());
RightMiddleFingertipCollider->SetupAttachment(HandRight, HandRight->GetMiddleFingertipSocketName()); RightMiddleFingertipGrabCollider->SetupAttachment(HandRight, HandRight->GetMiddleFingertipGrabSocketName());
RightMiddleFingertipCollider->SetCastShadow(false); RightMiddleFingertipGrabCollider->SetCastShadow(false);
RightMiddleFingertipCollider->bCastDynamicShadow = false; RightMiddleFingertipGrabCollider->bCastDynamicShadow = false;
RightMiddleFingertipCollider->SetReceivesDecals(true); RightMiddleFingertipGrabCollider->SetReceivesDecals(true);
RightMiddleFingertipCollider->SetCanEverAffectNavigation(false); RightMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false);
RightMiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); RightMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
RightMiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); RightMiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
RightMiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
RightMiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); RightMiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
RightThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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() void ASGPawn::BeginPlay()
@@ -81,62 +81,157 @@ ASGVirtualHandActor::ASGVirtualHandActor(const FObjectInitializer& ObjectInitial
VirtualHand->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f}, VirtualHand->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f},
false, nullptr, ETeleportType::None); false, nullptr, ETeleportType::None);
ThumbFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( ThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("ThumbFingertipCollider")); this, TEXT("ThumbFingertipGrabCollider"));
ThumbFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetThumbFingertipSocketName()); ThumbFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetThumbFingertipGrabSocketName());
ThumbFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); ThumbFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize());
ThumbFingertipCollider->SetCastShadow(false); ThumbFingertipGrabCollider->SetCastShadow(false);
ThumbFingertipCollider->bCastDynamicShadow = false; ThumbFingertipGrabCollider->bCastDynamicShadow = false;
ThumbFingertipCollider->SetReceivesDecals(true); ThumbFingertipGrabCollider->SetReceivesDecals(true);
ThumbFingertipCollider->SetCanEverAffectNavigation(false); ThumbFingertipGrabCollider->SetCanEverAffectNavigation(false);
ThumbFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); ThumbFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
ThumbFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); ThumbFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
ThumbFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
ThumbFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); ThumbFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
IndexFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( IndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("IndexFingertipCollider")); this, TEXT("IndexFingertipGrabCollider"));
IndexFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); IndexFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize());
IndexFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetIndexFingertipSocketName()); IndexFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetIndexFingertipGrabSocketName());
IndexFingertipCollider->SetCastShadow(false); IndexFingertipGrabCollider->SetCastShadow(false);
IndexFingertipCollider->bCastDynamicShadow = false; IndexFingertipGrabCollider->bCastDynamicShadow = false;
IndexFingertipCollider->SetReceivesDecals(true); IndexFingertipGrabCollider->SetReceivesDecals(true);
IndexFingertipCollider->SetCanEverAffectNavigation(false); IndexFingertipGrabCollider->SetCanEverAffectNavigation(false);
IndexFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); IndexFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
IndexFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); IndexFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
IndexFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
IndexFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); IndexFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
MiddleFingertipCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>( MiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
this, TEXT("MiddleFingertipCollider")); this, TEXT("MiddleFingertipGrabCollider"));
MiddleFingertipCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsColliderSize()); MiddleFingertipGrabCollider->SetRelativeScale3D(VirtualHand->GetDefaultFingertipsGrabColliderSize());
MiddleFingertipCollider->SetupAttachment(VirtualHand, VirtualHand->GetMiddleFingertipSocketName()); MiddleFingertipGrabCollider->SetupAttachment(VirtualHand, VirtualHand->GetMiddleFingertipGrabSocketName());
MiddleFingertipCollider->SetCastShadow(false); MiddleFingertipGrabCollider->SetCastShadow(false);
MiddleFingertipCollider->bCastDynamicShadow = false; MiddleFingertipGrabCollider->bCastDynamicShadow = false;
MiddleFingertipCollider->SetReceivesDecals(true); MiddleFingertipGrabCollider->SetReceivesDecals(true);
MiddleFingertipCollider->SetCanEverAffectNavigation(false); MiddleFingertipGrabCollider->SetCanEverAffectNavigation(false);
MiddleFingertipCollider->SetCollisionObjectType(ECC_WorldDynamic); MiddleFingertipGrabCollider->SetCollisionObjectType(ECC_WorldDynamic);
MiddleFingertipCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); MiddleFingertipGrabCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
MiddleFingertipCollider->SetCollisionResponseToAllChannels(ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToAllChannels(ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap);
MiddleFingertipCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); MiddleFingertipGrabCollider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap);
ThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USphereComponent>(
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<USGWristTrackerComponent>(TEXT("WristTracker")); WristTracker = CreateDefaultSubobject<USGWristTrackerComponent>(TEXT("WristTracker"));
WristTracker->SetupAttachment(RootComponent); WristTracker->SetupAttachment(RootComponent);
@@ -84,17 +84,35 @@ private:
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
uint8 bRight : 1; uint8 bRight : 1;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false"))
FVector DefaultFingertipsColliderSize; FVector DefaultFingertipsGrabColliderSize;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false"))
FName ThumbFingertipSocketName; FName ThumbFingertipGrabSocketName;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false"))
FName IndexFingertipSocketName; FName IndexFingertipGrabSocketName;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove | Grab", meta=(AllowPrivateAccess="false"))
FName MiddleFingertipSocketName; 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")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
uint8 bHiddenInGameIfNoGloveDetected : 1; uint8 bHiddenInGameIfNoGloveDetected : 1;
@@ -126,39 +144,94 @@ public:
void SetRight(const bool bInRight); 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 FORCEINLINE bool IsHiddenInGameIfNoGloveDetected() const
@@ -76,13 +76,28 @@ private:
USGVirtualHandComponent* HandLeft; USGVirtualHandComponent* HandLeft;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* LeftThumbFingertipCollider; USphereComponent* LeftThumbFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* LeftIndexFingertipCollider; USphereComponent* LeftIndexFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) 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")) UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGWristTrackerComponent* WristTrackerRight; USGWristTrackerComponent* WristTrackerRight;
@@ -91,13 +106,28 @@ private:
USGVirtualHandComponent* HandRight; USGVirtualHandComponent* HandRight;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* RightThumbFingertipCollider; USphereComponent* RightThumbFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* RightIndexFingertipCollider; USphereComponent* RightIndexFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) 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: public:
FORCEINLINE UCameraComponent* GetCamera() const FORCEINLINE UCameraComponent* GetCamera() const
@@ -115,19 +145,44 @@ public:
return HandLeft; 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 FORCEINLINE USGWristTrackerComponent* GetWristTrackerRight() const
@@ -140,19 +195,44 @@ public:
return HandRight; 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: public:
@@ -79,13 +79,28 @@ private:
USGVirtualHandComponent* VirtualHand; USGVirtualHandComponent* VirtualHand;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* ThumbFingertipCollider; USphereComponent* ThumbFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USphereComponent* IndexFingertipCollider; USphereComponent* IndexFingertipGrabCollider;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) 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: public:
FORCEINLINE USGWristTrackerComponent* GetWristTracker() const FORCEINLINE USGWristTrackerComponent* GetWristTracker() const
@@ -98,19 +113,44 @@ public:
return VirtualHand; 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: protected:
@@ -57,19 +57,44 @@ USGVirtualHandComponent* UPawnKismetLibrary::GetHandLeft(const ASGPawn* Pawn)
return Pawn->GetHandLeft(); 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) USGWristTrackerComponent* UPawnKismetLibrary::GetWristTrackerRight(const ASGPawn* Pawn)
@@ -82,17 +107,42 @@ USGVirtualHandComponent* UPawnKismetLibrary::GetHandRight(const ASGPawn* Pawn)
return Pawn->GetHandRight(); 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();
} }
@@ -51,22 +51,51 @@ USGVirtualHandComponent* UVirtualHandActorKismetLibrary::GetVirtualHand(const AS
return VirtualHandActor->GetVirtualHand(); return VirtualHandActor->GetVirtualHand();
} }
USphereComponent* UVirtualHandActorKismetLibrary::GetThumbFingertipCollider( USphereComponent* UVirtualHandActorKismetLibrary::GetThumbFingertipGrabCollider(
const ASGVirtualHandActor* VirtualHandActor) const ASGVirtualHandActor* VirtualHandActor)
{ {
return VirtualHandActor->GetThumbFingertipCollider(); return VirtualHandActor->GetThumbFingertipGrabCollider();
} }
USphereComponent* UVirtualHandActorKismetLibrary::GetIndexFingertipCollider( USphereComponent* UVirtualHandActorKismetLibrary::GetIndexFingertipGrabCollider(
const ASGVirtualHandActor* VirtualHandActor) const ASGVirtualHandActor* VirtualHandActor)
{ {
return VirtualHandActor->GetIndexFingertipCollider(); return VirtualHandActor->GetIndexFingertipGrabCollider();
} }
USphereComponent* UVirtualHandActorKismetLibrary::GetMiddleFingertipCollider( USphereComponent* UVirtualHandActorKismetLibrary::GetMiddleFingertipGrabCollider(
const ASGVirtualHandActor* VirtualHandActor) 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) bool UVirtualHandActorKismetLibrary::IsLeft(const ASGVirtualHandActor* VirtualHandActor)
@@ -77,46 +77,113 @@ void UVirtualHandComponentKismetLibrary::SetRight(USGVirtualHandComponent* Virtu
VirtualHandComponent->SetRight(bInRight); VirtualHandComponent->SetRight(bInRight);
} }
const FVector& UVirtualHandComponentKismetLibrary::GetDefaultFingertipsColliderSize( const FVector& UVirtualHandComponentKismetLibrary::GetDefaultFingertipsGrabColliderSize(
const USGVirtualHandComponent* VirtualHandComponent) const USGVirtualHandComponent* VirtualHandComponent)
{ {
return VirtualHandComponent->GetDefaultFingertipsColliderSize(); return VirtualHandComponent->GetDefaultFingertipsGrabColliderSize();
} }
const FName& UVirtualHandComponentKismetLibrary::GetThumbFingertipSocketName( const FName& UVirtualHandComponentKismetLibrary::GetThumbFingertipGrabSocketName(
const USGVirtualHandComponent* VirtualHandComponent) const USGVirtualHandComponent* VirtualHandComponent)
{ {
return VirtualHandComponent->GetThumbFingertipSocketName(); return VirtualHandComponent->GetThumbFingertipGrabSocketName();
} }
void UVirtualHandComponentKismetLibrary::SetThumbFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, void UVirtualHandComponentKismetLibrary::SetThumbFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName) const FName& GrabSocketName)
{ {
VirtualHandComponent->SetThumbFingertipSocketName(SocketName); VirtualHandComponent->SetThumbFingertipGrabSocketName(GrabSocketName);
} }
const FName& UVirtualHandComponentKismetLibrary::GetIndexFingertipSocketName( const FName& UVirtualHandComponentKismetLibrary::GetIndexFingertipGrabSocketName(
const USGVirtualHandComponent* VirtualHandComponent) const USGVirtualHandComponent* VirtualHandComponent)
{ {
return VirtualHandComponent->GetIndexFingertipSocketName(); return VirtualHandComponent->GetIndexFingertipGrabSocketName();
} }
void UVirtualHandComponentKismetLibrary::SetIndexFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, void UVirtualHandComponentKismetLibrary::SetIndexFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName) const FName& GrabSocketName)
{ {
VirtualHandComponent->SetIndexFingertipSocketName(SocketName); VirtualHandComponent->SetIndexFingertipGrabSocketName(GrabSocketName);
} }
const FName& UVirtualHandComponentKismetLibrary::GetMiddleFingertipSocketName( const FName& UVirtualHandComponentKismetLibrary::GetMiddleFingertipGrabSocketName(
const USGVirtualHandComponent* VirtualHandComponent) const USGVirtualHandComponent* VirtualHandComponent)
{ {
return VirtualHandComponent->GetMiddleFingertipSocketName(); return VirtualHandComponent->GetMiddleFingertipGrabSocketName();
} }
void UVirtualHandComponentKismetLibrary::SetMiddleFingertipSocketName(USGVirtualHandComponent* VirtualHandComponent, void UVirtualHandComponentKismetLibrary::SetMiddleFingertipGrabSocketName(USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName) 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( bool UVirtualHandComponentKismetLibrary::IsHiddenInGameIfNoGloveDetected(
@@ -72,13 +72,28 @@ public:
static USGVirtualHandComponent* GetHandLeft(const ASGPawn* Pawn); static USGVirtualHandComponent* GetHandLeft(const ASGPawn* Pawn);
UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | 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") 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") 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") UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn")
static USGWristTrackerComponent* GetWristTrackerRight(const ASGPawn* Pawn); static USGWristTrackerComponent* GetWristTrackerRight(const ASGPawn* Pawn);
@@ -87,11 +102,26 @@ public:
static USGVirtualHandComponent* GetHandRight(const ASGPawn* Pawn); static USGVirtualHandComponent* GetHandRight(const ASGPawn* Pawn);
UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | 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") 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") 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);
}; };
@@ -60,13 +60,28 @@ public:
static USGVirtualHandComponent* GetVirtualHand(const ASGVirtualHandActor* VirtualHandActor); static USGVirtualHandComponent* GetVirtualHand(const ASGVirtualHandActor* VirtualHandActor);
UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand") 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") 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") 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") UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Virtual Hand")
static bool IsLeft(const ASGVirtualHandActor* VirtualHandActor); static bool IsLeft(const ASGVirtualHandActor* VirtualHandActor);
@@ -81,28 +81,66 @@ public:
static void SetRight(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, bool bInRight); static void SetRight(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, bool bInRight);
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") 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") 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") UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component")
static void SetThumbFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, static void SetThumbFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName); const FName& GrabSocketName);
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") 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") UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component")
static void SetIndexFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, static void SetIndexFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName); const FName& GrabSocketName);
UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") 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") UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component")
static void SetMiddleFingertipSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, static void SetMiddleFingertipGrabSocketName(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent,
const FName& SocketName); 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") UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component")
static bool IsHiddenInGameIfNoGloveDetected(const USGVirtualHandComponent* VirtualHandComponent); static bool IsHiddenInGameIfNoGloveDetected(const USGVirtualHandComponent* VirtualHandComponent);