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

fix(cave): fixes a few issues in sign material and sign logic, still a bit broken

parent 234cbf3c
No related branches found
No related tags found
1 merge request!44refactor(cave): Adjust Cave Overlay to new VirtualRealityPawn, Livelink and inputs
No preview for this file type
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include "Materials/MaterialInstanceDynamic.h" #include "Materials/MaterialInstanceDynamic.h"
#include "Pawn/VirtualRealityPawn.h" #include "Pawn/VirtualRealityPawn.h"
#include "Utility/VirtualRealityUtilities.h" #include "Utility/VirtualRealityUtilities.h"
#include "MotionControllerComponent.h"
DEFINE_LOG_CATEGORY(LogCAVEOverlay); DEFINE_LOG_CATEGORY(LogCAVEOverlay);
...@@ -233,15 +235,13 @@ bool ACAVEOverlayController::PositionInDoorOpening(const FVector& Position) cons ...@@ -233,15 +235,13 @@ bool ACAVEOverlayController::PositionInDoorOpening(const FVector& Position) cons
WallDistance + 10); WallDistance + 10);
} }
void ACAVEOverlayController::SetSignsForHand(UStaticMeshComponent* Hand, UMaterialInstanceDynamic* HandMaterial) const void ACAVEOverlayController::SetSignsForHand(UStaticMeshComponent* Sign, const FVector HandPosition, UMaterialInstanceDynamic* HandMaterial) const
{ {
const FVector HandPosition = Hand->GetRelativeTransform().GetLocation();
const bool bHandIsCloseToWall = FMath::IsWithinInclusive(HandPosition.GetAbsMax(), const bool bHandIsCloseToWall = FMath::IsWithinInclusive(HandPosition.GetAbsMax(),
WallDistance - WallCloseDistance, WallDistance); WallDistance - WallCloseDistance, WallDistance);
if (bHandIsCloseToWall && !PositionInDoorOpening(HandPosition)) if (bHandIsCloseToWall && !PositionInDoorOpening(HandPosition))
{ {
Hand->SetVisibility(true); Sign->SetVisibility(true);
HandMaterial->SetScalarParameterValue("SignOpacity", HandMaterial->SetScalarParameterValue("SignOpacity",
CalculateOpacityFromPosition(HandPosition)); CalculateOpacityFromPosition(HandPosition));
...@@ -253,12 +253,16 @@ void ACAVEOverlayController::SetSignsForHand(UStaticMeshComponent* Hand, UMateri ...@@ -253,12 +253,16 @@ void ACAVEOverlayController::SetSignsForHand(UStaticMeshComponent* Hand, UMateri
const double Y = bXWallCloser ? HandPosition.Y : FMath::Sign(HandPosition.Y) * WallDistance; const double Y = bXWallCloser ? HandPosition.Y : FMath::Sign(HandPosition.Y) * WallDistance;
const double Z = HandPosition.Z; const double Z = HandPosition.Z;
const FRotator Rot = bXWallCloser ? FRotator(0, 0, 0) : FRotator(0, 0, 90); const auto Rot = bXWallCloser ? FRotator(0, 0, 0) : FRotator(0, 0, 90);
Hand->SetRelativeLocationAndRotation(FVector(X, Y, Z), Rot); const auto Pos = FVector(X, Y, Z);
Sign->SetRelativeLocationAndRotation(Pos, Rot);
UE_LOGFMT(LogCAVEOverlay, Log, "HandPos: {Hand} vs SignPos: {Sign}", HandPosition.ToString(), Pos.ToString());
} }
else else
{ {
Hand->SetVisibility(true); Sign->SetVisibility(false);
} }
} }
...@@ -298,6 +302,9 @@ void ACAVEOverlayController::Tick(float DeltaTime) ...@@ -298,6 +302,9 @@ void ACAVEOverlayController::Tick(float DeltaTime)
} }
// Hand Logic // Hand Logic
SetSignsForHand(SignRightHand, RightSignMaterialDynamic); const FVector RightPosition = VRPawn->RightHand->GetRelativeTransform().GetLocation();
SetSignsForHand(SignLeftHand, LeftSignMaterialDynamic); const FVector LeftPosition = VRPawn->LeftHand->GetRelativeTransform().GetLocation();
SetSignsForHand(SignRightHand, RightPosition, RightSignMaterialDynamic);
SetSignsForHand(SignLeftHand, LeftPosition, LeftSignMaterialDynamic);
} }
...@@ -57,7 +57,7 @@ private: ...@@ -57,7 +57,7 @@ private:
double CalculateOpacityFromPosition(const FVector& Position) const; double CalculateOpacityFromPosition(const FVector& Position) const;
bool PositionInDoorOpening(const FVector& Position) const; bool PositionInDoorOpening(const FVector& Position) const;
void SetSignsForHand(UStaticMeshComponent* Hand, UMaterialInstanceDynamic* HandMaterial) const; void SetSignsForHand(UStaticMeshComponent* Sign, const FVector HandPosition, UMaterialInstanceDynamic* HandMaterial) const;
bool bInitialized = false; bool bInitialized = false;
......
...@@ -240,7 +240,7 @@ void AVirtualRealityPawn::SetupMotionControllerSources() ...@@ -240,7 +240,7 @@ void AVirtualRealityPawn::SetupMotionControllerSources()
MotionControllerSourceLeft = FName("Left"); MotionControllerSourceLeft = FName("Left");
MotionControllerSourceRight = FName("Right"); MotionControllerSourceRight = FName("Right");
} }
if (UVirtualRealityUtilities::IsRoomMountedMode() && UVirtualRealityUtilities::IsMaster()) if (UVirtualRealityUtilities::IsRoomMountedMode())
{ {
MotionControllerSourceLeft = LeftSubjectRepresentation.Subject; MotionControllerSourceLeft = LeftSubjectRepresentation.Subject;
MotionControllerSourceRight = RightSubjectRepresentation.Subject; MotionControllerSourceRight = RightSubjectRepresentation.Subject;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment