Search code examples
c++macrosunreal-engine4

Whats wrong with this macro?


I can't figure out what's wrong with the macro logging the player viewpoint. As far as I can tell, I must be missing an "include what you use" hash, but I can't figure out what it is. I've tried everything I can think of, googled like crazy, might be something to do with conversions from FRotator and Vectors to output in the macro out to console.

// Copyright Josh Marino 2017

#include "Grabber.h"
#include "PositionReport.generated.h"
#include "CoreMinimal.h"
#include "Engine/World.h"

// Sets default values for this component's properties
UGrabber::UGrabber()
{
   // Set this component to be initialized when the game starts, and to be ticked every frame.  You can turn these features
// off to improve performance if you don't need them.
PrimaryComponentTick.bCanEverTick = true;

// ...
}

// Called when the game starts
void UGrabber::BeginPlay()
{
Super::BeginPlay();

UE_LOG(LogTemp, Warning, TEXT("Grabber reporting for Duty!"))

}

// Called every frame
void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

// Get Player viewpoint viewpoint
FVector PlayerViewPointLocation;
FRotator PlayerViewPointRotation;
GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(
     PlayerViewPointLocation,
     PlayerViewPointRotation
);

// Log Out To Test

UE_LOG(LogTemp, Warning, TEXT("Location: %s Position: %s") *PlayerViewPointLocation.ToString(), *PlayerViewPointRotation.ToString())

// Ray-Cast out to reach distance


// See what we hit


}

Solution

  • for some reason it works now........macros are stupid

    #include "Grabber.h"
    #include "PositionReport.generated.h"
    #include "CoreMinimal.h"
    #include "Engine/World.h"
    
    
    // Sets default values for this component's properties
    UGrabber::UGrabber()
    {
        // Set this component to be initialized when the game starts, and to be ticked every frame.  You can turn these features
        // off to improve performance if you don't need them.
        bWantsBeginPlay = true;
        PrimaryComponentTick.bCanEverTick = true;
    
        // ...
    }
    
    
    // Called when the game starts
    void UGrabber::BeginPlay()
    {
        Super::BeginPlay();
        UE_LOG(LogTemp, Warning, TEXT("Grabber reporting for duty!"));
    
    }
    
    
    // Called every frame
    void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
    {
        Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
    
        // Get player view point this tick
        FVector PlayerViewPointLocation;
        FRotator PlayerViewPointRotation;
        GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(
            OUT PlayerViewPointLocation,
            OUT PlayerViewPointRotation
        );
        // TODO Log out to test
        UE_LOG(LogTemp, Warning, TEXT("Location: %s, Rotation: %s"),
            *PlayerViewPointLocation.ToString(),
            *PlayerViewPointRotation.ToString()
        )
    
            // Ray-cast out to reach distance
    
            // See what what we hit
    
    }