text: #pragma once
  #include "CoreMinimal.h"
  #include "UObject/NoExportTypes.h"
  #include "GameFramework/Actor.h"
  #include "Engine/EngineTypes.h"
  #include "CaveVine.generated.h"
  
  class UHealthComponent;
  class USceneComponent;
  class USplineMeshComponent;
  
  UCLASS(Abstract, Blueprintable)
  class ACaveVine : public AActor {
      GENERATED_BODY()
  public:
  protected:
      UPROPERTY(EditAnywhere)
      TEnumAsByte<ECollisionChannel> GroundCollisionChannel;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float IdleSwingSpeed;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float ChaseSpeed;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float MaxReach;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float GroundOffset;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float NoiseRadius;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      float NoiseSpeed;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, meta=(AllowPrivateAccess=true))
      USplineMeshComponent* SplineMeshComponent;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, meta=(AllowPrivateAccess=true))
      USceneComponent* VineHead;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      FVector VineVelocity;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      FVector VineLocation;
      
      UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
      FVector VineStartLocation;
      
      UPROPERTY(EditAnywhere, Export, Transient)
      TWeakObjectPtr<UHealthComponent> Target;
      
  public:
      ACaveVine();
  protected:
      UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
      void BP_OnTargetChanged(UHealthComponent* NewTarget);
      
      UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
      void BP_OnInitialized();
      
  };
  
  