From 2ddfaecc0db4e062f202486b5a05b6ae9d45997e Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Mon, 8 May 2023 13:05:22 +0200 Subject: [PATCH] add static get component methods for quickly accessing grab/touch components --- .../SenseGlove/Components/SGGrabComponent.cpp | 12 ++++++++++++ .../SenseGlove/Components/SGTouchComponent.cpp | 12 ++++++++++++ .../Public/SenseGlove/Components/SGGrabComponent.h | 2 ++ .../Public/SenseGlove/Components/SGTouchComponent.h | 2 ++ .../SGKismet/SGGrabComponentKismetLibrary.cpp | 5 +++++ .../SGKismet/SGTouchComponentKismetLibrary.cpp | 5 +++++ .../Public/SGKismet/SGGrabComponentKismetLibrary.h | 3 +++ .../Public/SGKismet/SGTouchComponentKismetLibrary.h | 3 +++ 8 files changed, 44 insertions(+) diff --git a/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp b/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp index d5cd61ee..6396f895 100644 --- a/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp @@ -66,6 +66,18 @@ struct USGGrabComponent::FImpl ************************/ }; +USGGrabComponent* USGGrabComponent::GetGrabComponent(const AActor* Actor) +{ + if (ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return nullptr; + } + + USGGrabComponent* GrabComponent = Cast( + Actor->GetComponentByClass(USGGrabComponent::StaticClass())); + return GrabComponent; +} + bool USGGrabComponent::IsGrabbable(const AActor* Actor) { if (ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) diff --git a/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp b/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp index ea5eb3ee..086694c0 100644 --- a/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp @@ -66,6 +66,18 @@ struct USGTouchComponent::FImpl ************************/ }; +USGTouchComponent* USGTouchComponent::GetTouchComponent(const AActor* Actor) +{ + if (ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return nullptr; + } + + USGTouchComponent* TouchComponent = Cast( + Actor->GetComponentByClass(USGTouchComponent::StaticClass())); + return TouchComponent; +} + bool USGTouchComponent::IsTouchable(const AActor* Actor) { if (ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) diff --git a/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h b/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h index ad1694a9..18bd1823 100644 --- a/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h +++ b/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h @@ -50,6 +50,8 @@ class SENSEGLOVE_API USGGrabComponent : public USceneComponent GENERATED_UCLASS_BODY() public: + static USGGrabComponent* GetGrabComponent(const AActor* Actor); + static bool IsGrabbable(const AActor* Actor); private: diff --git a/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h b/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h index cd5cc2bb..b650b2a7 100644 --- a/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h +++ b/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h @@ -48,6 +48,8 @@ class SENSEGLOVE_API USGTouchComponent : public USceneComponent GENERATED_UCLASS_BODY() public: + static USGTouchComponent* GetTouchComponent(const AActor* Actor); + static bool IsTouchable(const AActor* Actor); private: diff --git a/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp b/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp index a04b05b9..5d0e1c0d 100644 --- a/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp +++ b/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp @@ -39,6 +39,11 @@ #include "SenseGlove/Components/SGGrabComponent.h" +USGGrabComponent* UGrabComponentKismetLibrary::GetGrabComponent(const AActor* Actor) +{ + return USGGrabComponent::GetGrabComponent(Actor); +} + bool UGrabComponentKismetLibrary::IsGrabbable(const AActor* Actor) { return USGGrabComponent::IsGrabbable(Actor); diff --git a/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp b/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp index 71606346..0707527e 100644 --- a/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp +++ b/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp @@ -40,6 +40,11 @@ #include "SenseGlove/Components/SGTouchComponent.h" +USGTouchComponent* UTouchComponentKismetLibrary::GetTouchComponent(const AActor* Actor) +{ + return USGTouchComponent::GetTouchComponent(Actor); +} + bool UTouchComponentKismetLibrary::IsTouchable(const AActor* Actor) { return USGTouchComponent::IsTouchable(Actor); diff --git a/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h b/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h index 618648e7..ce318377 100644 --- a/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h +++ b/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h @@ -50,6 +50,9 @@ class SENSEGLOVEKISMET_API UGrabComponentKismetLibrary final : public USGBluepri GENERATED_BODY() public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static USGGrabComponent* GetGrabComponent(const AActor* Actor); + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") static bool IsGrabbable(const AActor* Actor); diff --git a/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h b/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h index a3e0a1c3..d3dd69f1 100644 --- a/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h +++ b/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h @@ -50,6 +50,9 @@ class SENSEGLOVEKISMET_API UTouchComponentKismetLibrary final : public USGBluepr GENERATED_BODY() public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static USGTouchComponent* GetTouchComponent(const AActor* Actor); + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") static bool IsTouchable(const AActor* Actor);