Skip to content
Snippets Groups Projects
Commit 26e4e6a3 authored by David Gilbert's avatar David Gilbert :bug:
Browse files

- adjusted rods to always be at the lowest point

- flipped translation axis when moving in negative direction
- adjusted scale of various things
parent 419046d9
No related branches found
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -71,7 +71,18 @@ void AOptiXVRPawn::UpdateTranslation(UPrimitiveComponent* Interaction)
TArray<USceneComponent*> Parents;
GrabbedLever->GetParentComponents(Parents);
Parents[0]->SetRelativeScale3D(FVector(ScaleX / 39.0, 1, 1));
if (ScaleX < 0)
{
GrabbedLever->SetWorldScale3D(FVector(-0.6, -0.6, -0.6));
}
else
{
GrabbedLever->SetWorldScale3D(FVector(0.6, 0.6, 0.6));
}
Parents[0]->SetWorldScale3D(FVector(ScaleX / 39.0, 0.6, 0.6));
FVector NewDist = GetDistanceVector(Interaction);
GrabDistanceX = NewDist.X;
......
......@@ -26,12 +26,14 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
Gizmo = CreateDefaultSubobject<USceneComponent>(TEXT("Gizmo"));
Gizmo->SetupAttachment(GetStaticMeshComponent());
Gizmo->SetHiddenInGame(true);
//Gizmo->SetAbsolute(false, true, true);
SupportWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("SupportWidget"));
SupportWidget->SetAbsolute(false, true, true);
SupportWidget->SetupAttachment(Gizmo);
static ConstructorHelpers::FClassFinder<UUserWidget> SupportWidgetClass(TEXT("/OptiX/UI/SupportSwapWidget2"));
SupportWidget->SetWidgetClass(SupportWidgetClass.Class);
SupportWidget->SetAbsolute(false, true, false);
SupportWidget->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
SupportWidget->SetDrawSize(FVector2D(800, 2300));
SupportWidget->SetGenerateOverlapEvents(false);
......@@ -45,11 +47,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslationSupport->SetupAttachment(Gizmo);
TranslateX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateX"));
TranslateX->SetAbsolute(false, true, true);
TranslateX->SetupAttachment(TranslationSupport);
static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateXMesh(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowbody.Arrowbody'"));
TranslateX->SetStaticMesh(TranslateXMesh.Object);
TranslateX->SetAbsolute(false, true, false);
TranslateX->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
TranslateX->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateX->SetGenerateOverlapEvents(false);
TranslateX->SetHiddenInGame(true);
......@@ -58,15 +60,15 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateX->SetCanEverAffectNavigation(false);
ArrowX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowX"));
ArrowX->SetAbsolute(false, false, true);
ArrowX->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
ArrowX->SetupAttachment(TranslateX);
static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateArrow(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowhead.Arrowhead'"));
ArrowX->SetStaticMesh(TranslateArrow.Object);
//ArrowX->SetAbsolute(false, true, false);
//ArrowX->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
ArrowX->SetRelativeLocation(FVector(39, 0, 0));
ArrowX->SetGenerateOverlapEvents(false);
ArrowX->SetHiddenInGame(true);
ArrowX->SetAbsolute(false, false, true);
ArrowX->CastShadow = 0;
ArrowX->bVisibleInReflectionCaptures = false;
......@@ -87,9 +89,10 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
// todo
TranslateY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateY"));
TranslateY->SetAbsolute(false, true, true);
TranslateY->SetupAttachment(TranslationSupport);
TranslateY->SetStaticMesh(TranslateXMesh.Object);
TranslateY->SetAbsolute(false, true, false);
TranslateY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateY->SetGenerateOverlapEvents(false);
TranslateY->SetHiddenInGame(true);
......@@ -100,6 +103,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateY->SetCanEverAffectNavigation(false);
ArrowY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowY"));
ArrowY->SetAbsolute(false, false, true);
ArrowY->SetupAttachment(TranslateY);
ArrowY->SetStaticMesh(TranslateArrow.Object);
//ArrowY->SetAbsolute(false, true, false);
......@@ -107,7 +112,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
ArrowY->SetRelativeLocation(FVector(39, 0, 0));
ArrowY->SetGenerateOverlapEvents(false);
ArrowY->SetHiddenInGame(true);
ArrowY->SetAbsolute(false, false, true);
ArrowY->CastShadow = 0;
ArrowY->bVisibleInReflectionCaptures = false;
......@@ -125,9 +129,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
//TranslateWidgetY->SetTwoSided(true);
TranslateZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateZ"));
TranslateZ->SetAbsolute(false, true, true);
TranslateZ->SetupAttachment(TranslationSupport);
TranslateZ->SetStaticMesh(TranslateXMesh.Object);
TranslateZ->SetAbsolute(false, true, false);
TranslateZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateZ->SetGenerateOverlapEvents(false);
TranslateZ->SetHiddenInGame(true);
......@@ -136,7 +140,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateZ->CastShadow = 0;
TranslateZ->bVisibleInReflectionCaptures = false;
ArrowZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowZ"));
ArrowZ->SetAbsolute(false, false, true);
ArrowZ->SetupAttachment(TranslateZ);
ArrowZ->SetStaticMesh(TranslateArrow.Object);
//ArrowZ->SetAbsolute(false, true, false);
......@@ -144,7 +150,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
ArrowZ->SetRelativeLocation(FVector(39, 0, 0));
ArrowZ->SetGenerateOverlapEvents(false);
ArrowZ->SetHiddenInGame(true);
ArrowZ->SetAbsolute(false, false, true);
ArrowZ->SetCanEverAffectNavigation(false);
ArrowZ->CastShadow = 0;
ArrowZ->bVisibleInReflectionCaptures = false;
......@@ -476,6 +481,14 @@ void ASelectableActorBase::DeleteActor()
void ASelectableActorBase::SetRodPosition(FVector TablePosition)
{
// Flip socket?
if (Socket->GetComponentLocation().Z > GetActorLocation().Z)
{
Socket->SetRelativeLocation(-1 * Socket->RelativeLocation);
}
FVector TableZero = TablePosition + FVector(0, 0, 95); // Table Height
// Far away from the table or below table, make it go straight down
......@@ -499,8 +512,16 @@ void ASelectableActorBase::SetRodPosition(FVector TablePosition)
}
// TODO Material highlighting - swap material slots?
void ASelectableActorBase::OnOverlapBegin(UPrimitiveComponent * OverlapComponent, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
void ASelectableActorBase::OnOverlapBegin_Implementation(UPrimitiveComponent * OverlapComponent, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
AOptiXVRPawn* OverlappingPawn = Cast<AOptiXVRPawn>(OtherActor);
if (OverlappingPawn != nullptr)
{
OverlappingPawn->OnOverlapBeginWithLever(OverlapComponent);
}
//int32 N = OverlapComponent->GetNumMaterials();
//for (int32 i = 0; i < N; i++)
//{
......@@ -508,8 +529,16 @@ void ASelectableActorBase::OnOverlapBegin(UPrimitiveComponent * OverlapComponent
//}
}
void ASelectableActorBase::OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
void ASelectableActorBase::OnOverlapEnd_Implementation(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
AOptiXVRPawn* OverlappingPawn = Cast<AOptiXVRPawn>(OtherActor);
if (OverlappingPawn != nullptr)
{
OverlappingPawn->OnOverlapEndWithLever(OverlappedComp);
}
//int32 N = OverlappedComp->GetNumMaterials();
//for (int32 i = 0; i < N; i++)
//{
......
......@@ -52,6 +52,12 @@ public:
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void UIEventDelete();
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void OnOverlapBeginWithLever(UPrimitiveComponent* Lever);
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void OnOverlapEndWithLever(UPrimitiveComponent* Lever);
public:
UPROPERTY(BlueprintReadWrite, EditAnywhere)
......
......@@ -57,10 +57,10 @@ public:
UFUNCTION(BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void SetRodPosition(FVector TablePosition);
UFUNCTION()
UFUNCTION(BlueprintNativeEvent)
void OnOverlapBegin(class UPrimitiveComponent* OverlapComponent, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
UFUNCTION()
UFUNCTION(BlueprintNativeEvent)
void OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment