diff --git a/Content/Henry_AnimBP.uasset b/Content/Henry_AnimBP.uasset
index 05870afd948cb969132676b5e9baec7ad3ba23c9..ea2e31a0c56aceb81ee264e8865db921a6896501 100644
--- a/Content/Henry_AnimBP.uasset
+++ b/Content/Henry_AnimBP.uasset
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:a04e2d39d8a78c9210e211b72ed9b75015400338f3a07748fe9790b01a7838fc
-size 561028
+oid sha256:358161d2ff518f553ae57bb58882c8b845cda55eb74f582dab8d73b93ca3ffc5
+size 601257
diff --git a/Source/CharacterPlugin/Private/VHPointing.cpp b/Source/CharacterPlugin/Private/VHPointing.cpp
index 8e3063d879152670110db6ca8047b188b5d2189e..e5c523a4481b8c2b20e7262e9079b28368acb934 100644
--- a/Source/CharacterPlugin/Private/VHPointing.cpp
+++ b/Source/CharacterPlugin/Private/VHPointing.cpp
@@ -2,6 +2,7 @@
 
 
 #include "VHPointing.h"
+#include "Helper/CharacterPluginLogging.h"
 
 // Sets default values for this component's properties
 UVHPointing::UVHPointing()
@@ -18,8 +19,7 @@ UVHPointing::UVHPointing()
 void UVHPointing::BeginPlay()
 {
 	Super::BeginPlay();
-
-	// ...
+	
 	
 }
 
@@ -28,7 +28,44 @@ void UVHPointing::BeginPlay()
 void UVHPointing::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
 {
 	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
-
-	// ...
+	if (VHAnimInstance == nullptr) {
+		if (Cast<USkeletalMeshComponent>(GetOwner()->GetComponentByClass(USkeletalMeshComponent::StaticClass()))->GetAnimInstance())
+		{
+			VHAnimInstance = Cast<UVHAnimInstance>(Cast<USkeletalMeshComponent>(GetOwner()->GetComponentByClass(USkeletalMeshComponent::StaticClass()))->GetAnimInstance());
+		}
+		else
+		{
+			VH_ERROR("[UVHPointing::TickComponent] No VHAnimInstance component attached");
+		}
+	}
+	else
+	{
+		VHAnimInstance->EffectorPosition = PointingTarget;
+		if (bIsPointing)
+		{
+			FVector DirVHTarget = PointingTarget - GetOwner()->GetActorLocation();
+			float AngleLeftRight = FVector::DotProduct(FVector::CrossProduct(GetOwner()->GetActorUpVector().GetSafeNormal(), DirVHTarget.GetSafeNormal()), GetOwner()->GetActorForwardVector().GetSafeNormal());
+			float AngleFrontTarget = FMath::Acos(FVector::DotProduct(DirVHTarget.GetSafeNormal(), GetOwner()->GetActorForwardVector().GetSafeNormal()));
+			if (AngleFrontTarget > (180-BlindAngle)*PI/180.0) {
+				VHAnimInstance->PointingUseHand = EPointingHand::HandNone;
+			}
+			else 
+			{
+				if (AngleLeftRight > 0) {
+					VHAnimInstance->PointingUseHand = EPointingHand::HandLeft;
+				}
+				else
+				{
+					VHAnimInstance->PointingUseHand = EPointingHand::HandRight;
+				}
+			}
+		}
+		else
+		{
+			VHAnimInstance->PointingUseHand = EPointingHand::HandNone;
+		}
+		
+	}
+	
 }
 
diff --git a/Source/CharacterPlugin/Public/VHAnimInstance.h b/Source/CharacterPlugin/Public/VHAnimInstance.h
index daa7905879ae711f1f230ed43fe0944dee77e7ab..6ca57d6906b27b951170199fb6536a1788b2cc62 100644
--- a/Source/CharacterPlugin/Public/VHAnimInstance.h
+++ b/Source/CharacterPlugin/Public/VHAnimInstance.h
@@ -6,6 +6,14 @@
 #include "Animation/AnimInstance.h"
 #include "VHAnimInstance.generated.h"
 
+UENUM()
+enum EPointingHand
+{
+    HandNone = 0 UMETA(DisplayName = "None"),
+    HandLeft = 1 UMETA(DisplayName = "Left Hand"),
+    HandRight = 2 UMETA(DisplayName = "Right Hand")
+};
+
 UCLASS()
 class CHARACTERPLUGIN_API UVHAnimInstance : public UAnimInstance {
   GENERATED_UCLASS_BODY()
@@ -34,4 +42,10 @@ public:
     UPROPERTY(EditAnywhere, BlueprintReadWrite)
     FRotator SkelControl_Head = FRotator(0.0f, 0.0f, 0.0f);
 
+    UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
+        TEnumAsByte<EPointingHand> PointingUseHand = EPointingHand::HandNone;
+
+    UPROPERTY(EditAnywhere, BlueprintReadWrite)
+        FVector EffectorPosition;
+
 };
diff --git a/Source/CharacterPlugin/Public/VHPointing.h b/Source/CharacterPlugin/Public/VHPointing.h
index 3a704758dfbd3f4da95dd782fe2c4bf533b3f2cc..93d7620af1372f579bc7b4f3a31c24600cf9a05c 100644
--- a/Source/CharacterPlugin/Public/VHPointing.h
+++ b/Source/CharacterPlugin/Public/VHPointing.h
@@ -4,9 +4,11 @@
 
 #include "CoreMinimal.h"
 #include "Components/ActorComponent.h"
+#include "VHAnimInstance.h"
 #include "VHPointing.generated.h"
 
 
+
 UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
 class CHARACTERPLUGIN_API UVHPointing : public UActorComponent
 {
@@ -20,12 +22,17 @@ protected:
 	// Called when the game starts
 	virtual void BeginPlay() override;
 
+private:
+	UVHAnimInstance* VHAnimInstance;
+
 public:	
 	// Called every frame
 	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
 	UPROPERTY(EditAnywhere, BlueprintReadWrite)
-	bool isPointing;
+	bool bIsPointing;
 	UPROPERTY(EditAnywhere, BlueprintReadWrite)
 	FVector PointingTarget;
-		
+	// Angle of back area at which pointing stops in degrees.
+	UPROPERTY(EditAnywhere, BlueprintReadWrite)
+	float BlindAngle = 30.0;
 };