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
Branches
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) ...@@ -71,7 +71,18 @@ void AOptiXVRPawn::UpdateTranslation(UPrimitiveComponent* Interaction)
TArray<USceneComponent*> Parents; TArray<USceneComponent*> Parents;
GrabbedLever->GetParentComponents(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); FVector NewDist = GetDistanceVector(Interaction);
GrabDistanceX = NewDist.X; GrabDistanceX = NewDist.X;
......
...@@ -26,12 +26,14 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -26,12 +26,14 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
Gizmo = CreateDefaultSubobject<USceneComponent>(TEXT("Gizmo")); Gizmo = CreateDefaultSubobject<USceneComponent>(TEXT("Gizmo"));
Gizmo->SetupAttachment(GetStaticMeshComponent()); Gizmo->SetupAttachment(GetStaticMeshComponent());
Gizmo->SetHiddenInGame(true); Gizmo->SetHiddenInGame(true);
//Gizmo->SetAbsolute(false, true, true);
SupportWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("SupportWidget")); SupportWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("SupportWidget"));
SupportWidget->SetAbsolute(false, true, true);
SupportWidget->SetupAttachment(Gizmo); SupportWidget->SetupAttachment(Gizmo);
static ConstructorHelpers::FClassFinder<UUserWidget> SupportWidgetClass(TEXT("/OptiX/UI/SupportSwapWidget2")); static ConstructorHelpers::FClassFinder<UUserWidget> SupportWidgetClass(TEXT("/OptiX/UI/SupportSwapWidget2"));
SupportWidget->SetWidgetClass(SupportWidgetClass.Class); SupportWidget->SetWidgetClass(SupportWidgetClass.Class);
SupportWidget->SetAbsolute(false, true, false);
SupportWidget->SetWorldScale3D(FVector(0.05, 0.05, 0.05)); SupportWidget->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
SupportWidget->SetDrawSize(FVector2D(800, 2300)); SupportWidget->SetDrawSize(FVector2D(800, 2300));
SupportWidget->SetGenerateOverlapEvents(false); SupportWidget->SetGenerateOverlapEvents(false);
...@@ -45,11 +47,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -45,11 +47,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslationSupport->SetupAttachment(Gizmo); TranslationSupport->SetupAttachment(Gizmo);
TranslateX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateX")); TranslateX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateX"));
TranslateX->SetAbsolute(false, true, true);
TranslateX->SetupAttachment(TranslationSupport); TranslateX->SetupAttachment(TranslationSupport);
static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateXMesh(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowbody.Arrowbody'")); static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateXMesh(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowbody.Arrowbody'"));
TranslateX->SetStaticMesh(TranslateXMesh.Object); TranslateX->SetStaticMesh(TranslateXMesh.Object);
TranslateX->SetAbsolute(false, true, false); TranslateX->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateX->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
TranslateX->SetGenerateOverlapEvents(false); TranslateX->SetGenerateOverlapEvents(false);
TranslateX->SetHiddenInGame(true); TranslateX->SetHiddenInGame(true);
...@@ -58,15 +60,15 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -58,15 +60,15 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateX->SetCanEverAffectNavigation(false); TranslateX->SetCanEverAffectNavigation(false);
ArrowX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowX")); ArrowX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowX"));
ArrowX->SetAbsolute(false, false, true);
ArrowX->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
ArrowX->SetupAttachment(TranslateX); ArrowX->SetupAttachment(TranslateX);
static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateArrow(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowhead.Arrowhead'")); static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateArrow(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowhead.Arrowhead'"));
ArrowX->SetStaticMesh(TranslateArrow.Object); ArrowX->SetStaticMesh(TranslateArrow.Object);
//ArrowX->SetAbsolute(false, true, false); //ArrowX->SetAbsolute(false, true, false);
//ArrowX->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
ArrowX->SetRelativeLocation(FVector(39, 0, 0)); ArrowX->SetRelativeLocation(FVector(39, 0, 0));
ArrowX->SetGenerateOverlapEvents(false); ArrowX->SetGenerateOverlapEvents(false);
ArrowX->SetHiddenInGame(true); ArrowX->SetHiddenInGame(true);
ArrowX->SetAbsolute(false, false, true);
ArrowX->CastShadow = 0; ArrowX->CastShadow = 0;
ArrowX->bVisibleInReflectionCaptures = false; ArrowX->bVisibleInReflectionCaptures = false;
...@@ -87,9 +89,10 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -87,9 +89,10 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
// todo // todo
TranslateY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateY")); TranslateY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateY"));
TranslateY->SetAbsolute(false, true, true);
TranslateY->SetupAttachment(TranslationSupport); TranslateY->SetupAttachment(TranslationSupport);
TranslateY->SetStaticMesh(TranslateXMesh.Object); TranslateY->SetStaticMesh(TranslateXMesh.Object);
TranslateY->SetAbsolute(false, true, false);
TranslateY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); TranslateY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateY->SetGenerateOverlapEvents(false); TranslateY->SetGenerateOverlapEvents(false);
TranslateY->SetHiddenInGame(true); TranslateY->SetHiddenInGame(true);
...@@ -100,6 +103,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -100,6 +103,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateY->SetCanEverAffectNavigation(false); TranslateY->SetCanEverAffectNavigation(false);
ArrowY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowY")); ArrowY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowY"));
ArrowY->SetAbsolute(false, false, true);
ArrowY->SetupAttachment(TranslateY); ArrowY->SetupAttachment(TranslateY);
ArrowY->SetStaticMesh(TranslateArrow.Object); ArrowY->SetStaticMesh(TranslateArrow.Object);
//ArrowY->SetAbsolute(false, true, false); //ArrowY->SetAbsolute(false, true, false);
...@@ -107,7 +112,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -107,7 +112,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
ArrowY->SetRelativeLocation(FVector(39, 0, 0)); ArrowY->SetRelativeLocation(FVector(39, 0, 0));
ArrowY->SetGenerateOverlapEvents(false); ArrowY->SetGenerateOverlapEvents(false);
ArrowY->SetHiddenInGame(true); ArrowY->SetHiddenInGame(true);
ArrowY->SetAbsolute(false, false, true);
ArrowY->CastShadow = 0; ArrowY->CastShadow = 0;
ArrowY->bVisibleInReflectionCaptures = false; ArrowY->bVisibleInReflectionCaptures = false;
...@@ -125,9 +129,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -125,9 +129,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
//TranslateWidgetY->SetTwoSided(true); //TranslateWidgetY->SetTwoSided(true);
TranslateZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateZ")); TranslateZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateZ"));
TranslateZ->SetAbsolute(false, true, true);
TranslateZ->SetupAttachment(TranslationSupport); TranslateZ->SetupAttachment(TranslationSupport);
TranslateZ->SetStaticMesh(TranslateXMesh.Object); TranslateZ->SetStaticMesh(TranslateXMesh.Object);
TranslateZ->SetAbsolute(false, true, false);
TranslateZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); TranslateZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
TranslateZ->SetGenerateOverlapEvents(false); TranslateZ->SetGenerateOverlapEvents(false);
TranslateZ->SetHiddenInGame(true); TranslateZ->SetHiddenInGame(true);
...@@ -136,7 +140,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -136,7 +140,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
TranslateZ->CastShadow = 0; TranslateZ->CastShadow = 0;
TranslateZ->bVisibleInReflectionCaptures = false; TranslateZ->bVisibleInReflectionCaptures = false;
ArrowZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowZ")); ArrowZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowZ"));
ArrowZ->SetAbsolute(false, false, true);
ArrowZ->SetupAttachment(TranslateZ); ArrowZ->SetupAttachment(TranslateZ);
ArrowZ->SetStaticMesh(TranslateArrow.Object); ArrowZ->SetStaticMesh(TranslateArrow.Object);
//ArrowZ->SetAbsolute(false, true, false); //ArrowZ->SetAbsolute(false, true, false);
...@@ -144,7 +150,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ...@@ -144,7 +150,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
ArrowZ->SetRelativeLocation(FVector(39, 0, 0)); ArrowZ->SetRelativeLocation(FVector(39, 0, 0));
ArrowZ->SetGenerateOverlapEvents(false); ArrowZ->SetGenerateOverlapEvents(false);
ArrowZ->SetHiddenInGame(true); ArrowZ->SetHiddenInGame(true);
ArrowZ->SetAbsolute(false, false, true);
ArrowZ->SetCanEverAffectNavigation(false); ArrowZ->SetCanEverAffectNavigation(false);
ArrowZ->CastShadow = 0; ArrowZ->CastShadow = 0;
ArrowZ->bVisibleInReflectionCaptures = false; ArrowZ->bVisibleInReflectionCaptures = false;
...@@ -476,6 +481,14 @@ void ASelectableActorBase::DeleteActor() ...@@ -476,6 +481,14 @@ void ASelectableActorBase::DeleteActor()
void ASelectableActorBase::SetRodPosition(FVector TablePosition) 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 FVector TableZero = TablePosition + FVector(0, 0, 95); // Table Height
// Far away from the table or below table, make it go straight down // Far away from the table or below table, make it go straight down
...@@ -499,8 +512,16 @@ void ASelectableActorBase::SetRodPosition(FVector TablePosition) ...@@ -499,8 +512,16 @@ void ASelectableActorBase::SetRodPosition(FVector TablePosition)
} }
// TODO Material highlighting - swap material slots? // 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(); //int32 N = OverlapComponent->GetNumMaterials();
//for (int32 i = 0; i < N; i++) //for (int32 i = 0; i < N; i++)
//{ //{
...@@ -508,8 +529,16 @@ void ASelectableActorBase::OnOverlapBegin(UPrimitiveComponent * OverlapComponent ...@@ -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(); //int32 N = OverlappedComp->GetNumMaterials();
//for (int32 i = 0; i < N; i++) //for (int32 i = 0; i < N; i++)
//{ //{
......
...@@ -52,6 +52,12 @@ public: ...@@ -52,6 +52,12 @@ public:
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor") UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void UIEventDelete(); 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: public:
UPROPERTY(BlueprintReadWrite, EditAnywhere) UPROPERTY(BlueprintReadWrite, EditAnywhere)
......
...@@ -57,10 +57,10 @@ public: ...@@ -57,10 +57,10 @@ public:
UFUNCTION(BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor") UFUNCTION(BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
void SetRodPosition(FVector TablePosition); 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); 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); 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