// Fill out your copyright notice in the Description page of Project Settings. #include "TempCharacter.h" #include "UObject/SoftObjectPath.h" #include "Dialogs/Dialogs.h" #include "Engine/GameViewportClient.h" #include "Blueprint/UserWidget.h" #include "../../../Plugins/Developer/RiderLink/Source/RD/thirdparty/clsocket/src/ActiveSocket.h" // CONSTRUCTOR ATempCharacter::ATempCharacter() { // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; } // Called when the game starts or when spawned void ATempCharacter::BeginPlay() { Super::BeginPlay(); } //Binds the input we made in the setup player component to the forward vector void ATempCharacter::ForwardInput(float Axis) { AddMovementInput(GetActorForwardVector() * Axis); } //Binds the input we made in the setup player component to the right vector void ATempCharacter::RightMoveInput(float Axis) { AddMovementInput(GetActorRightVector() * Axis); } // Called every frame void ATempCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); } // Called to bind functionality to input void ATempCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAxis(TEXT("Move Forward / Backward"), this, &ATempCharacter::ForwardInput); PlayerInputComponent->BindAxis(TEXT("Move Right / Left"), this, &ATempCharacter::RightMoveInput); PlayerInputComponent->BindAxis(TEXT("Turn Right / Left Mouse"), this, &ATempCharacter::AddControllerYawInput); PlayerInputComponent->BindAxis(TEXT("Look Up / Down Mouse"), this, &ATempCharacter::AddControllerPitchInput); PlayerInputComponent->BindAction("Interact", IE_Pressed, this, &ATempCharacter::KeyPressed); // custom keybind Interact } void ATempCharacter::KeyPressed() { LineTraceLogic(); } void ATempCharacter::LineTraceLogic() { float GlobalTrace = TraceDistance; FHitResult OutHit; FVector Start = GetActorLocation(); FVector End = Start + GlobalTrace * GetActorForwardVector(); FCollisionQueryParams TraceParams; TraceParams.AddIgnoredActor(this); /*bool bHit = GetWorld()->LineTraceSingleByChannel(OutHit, Start, End, ECC_Visibility, TraceParams); if (bHit) { if (OutHit.GetActor()->ActorHasTag("MerchantTag")) { FStringClassReference WidgetRef(TEXT("WidgetBlueprint/Game/Merchant/BP_OPENDIAL.BP_OPENDIAL")); TSubclassOf WidgetLoad = WidgetRef.TryLoadClass(); UUserWidget* TestWidget = CreateWidget(this, WidgetLoad, FName(TEXT("MyWidget"))); if(TestWidget) { TestWidget->AddToViewport(0); } DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 1.0f); UE_LOG(LogTemp, Display, TEXT("HIT: %s"), *OutHit.GetActor()->GetName()); } } */ // In a constructor FStringClassReference MyWidgetClassRef(TEXT("/Game/Widgets/TestWidget.TestWidget_C")); // Get the widget class TSubclassOf TestWidgetClass = MyWidgetClassRef.TryLoadClass(); // ... then to display you widget do // Check if class was found if (TestWidgetClass ) { // Create the widget UUserWidget* TestWidget= CreateWidget(this, TestWidgetClass, FName(TEXT("MyWidget"))); // Check if widget was created if (TestWidget) { TestWidget->AddToViewport(); } } // I GIVE UP LOL! }