diff --git a/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset b/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset index e45f66d97eecdaf0f9d573321f6a7653256fded7..1091bad9d3e7829dadd11289da3789a3e111d4bd 100644 Binary files a/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset and b/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset differ diff --git a/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset b/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset index 087d6aa0cc6c31f009280e3454b95c1feec3bba8..d8dce25d511b009feffbaa44f3d71dcedab7da25 100644 Binary files a/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset and b/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset differ diff --git a/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset b/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset index 6886e118de8fc72d3edb72fe899aa92bfc9e427d..32b38ab55ba46369aec475cded46c077bec1bb79 100644 Binary files a/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset and b/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset differ diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset index f3ca78d93bcc8307e67bb5cde205180d87b58d76..34445617130c0dd58f7b9f12b295235c66fe2de8 100644 Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset differ diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset index 8eaa66a6a20074b1a8a2ec8ebd032ebbd34a5560..db0631364bdd4392058272e6f832d696993eb426 100644 Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset differ diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset index b4ea154e5d7ffc921f7075026cd312141197e06e..dbca406026b8518f698a282c347f5883d3c13da9 100644 Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset differ diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset index 461bf8f78591c505bec22f795b156c0155c3d38b..72aa22c365cea20d9c0e8a45e6596ecc555c8d12 100644 Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset differ diff --git a/Content/Blueprints/TabletBP.uasset b/Content/Blueprints/TabletBP.uasset index 0fc15a5876e1e790925519b63a51b856201762de..da7bc0365b0371302ad7bd1e0d74dacd784c10c2 100644 Binary files a/Content/Blueprints/TabletBP.uasset and b/Content/Blueprints/TabletBP.uasset differ diff --git a/Source/OptiX/Private/OptiXLensComponent.cpp b/Source/OptiX/Private/OptiXLensComponent.cpp index c63a042a0115b5c02e8ac15b9e42ed6e8cb747cd..7db0c253b0ce28b51d99e16a10e787a11b37f60d 100644 --- a/Source/OptiX/Private/OptiXLensComponent.cpp +++ b/Source/OptiX/Private/OptiXLensComponent.cpp @@ -28,6 +28,20 @@ UOptiXLensComponent::UOptiXLensComponent(const FObjectInitializer& ObjectInitial } + +void UOptiXLensComponent::BeginPlay() +{ + Super::BeginPlay(); + + + // do this on the game thread + // hook into WL update: + //UE_LOG(LogTemp, Display, TEXT("Begin Play on LensComponent, GameThread")); + + FOptiXModule::Get().GetOptiXContextManager()->WavelengthChangedEvent.AddUFunction(this, "OnWavelengthChangedEvent"); +} + + void UOptiXLensComponent::UpdateOptiXComponentVariables() { check(IsInRenderingThread()); @@ -153,9 +167,6 @@ void UOptiXLensComponent::InitOptiXGroups() OptiXContext->GetGroup("top_object")->AddChild(OptiXTransform); MarkDirty(); - - // hook into WL update: - FOptiXModule::Get().GetOptiXContextManager()->WavelengthChangedEvent.AddUFunction(this, "OnWavelengthChangedEvent"); } void UOptiXLensComponent::InitCubemap(FRHICommandListImmediate & RHICmdList) @@ -254,9 +265,9 @@ void UOptiXLensComponent::CleanOptiXComponent() void UOptiXLensComponent::InitFromData(const FLensData& Data) { - SetLensRadius(Data.LensRadius); - SetRadius1(Data.Radius1); - SetRadius2(Data.Radius2); + SetLensRadius(Data.LensRadius * 10); + SetRadius1(Data.Radius1 * 10); + SetRadius2(Data.Radius2 * 10); SetThickness(Data.Thickness); SetLensType1(Data.LensTypeSide1); SetLensType2(Data.LensTypeSide2); diff --git a/Source/OptiX/Private/SelectableActorBase.cpp b/Source/OptiX/Private/SelectableActorBase.cpp index 8a84870ba5d566877056d2ad24b0f1d715178647..01b465f0d500d52bb660bec9ed3daa408896aea4 100644 --- a/Source/OptiX/Private/SelectableActorBase.cpp +++ b/Source/OptiX/Private/SelectableActorBase.cpp @@ -27,9 +27,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti Gizmo->SetupAttachment(GetStaticMeshComponent()); Gizmo->SetHiddenInGame(true); - UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 0/4")); - - SupportWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("SupportWidget")); SupportWidget->SetupAttachment(Gizmo); static ConstructorHelpers::FClassFinder<UUserWidget> SupportWidgetClass(TEXT("/OptiX/UI/SupportSwapWidget2")); @@ -93,7 +90,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti TranslateY->SetupAttachment(TranslationSupport); TranslateY->SetStaticMesh(TranslateXMesh.Object); TranslateY->SetAbsolute(false, true, false); - TranslateY->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f)); + TranslateY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); TranslateY->SetGenerateOverlapEvents(false); TranslateY->SetHiddenInGame(true); TranslateY->SetWorldRotation(FRotator(0.f, 90.0f, 0.0f)); @@ -106,7 +103,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ArrowY->SetupAttachment(TranslateY); ArrowY->SetStaticMesh(TranslateArrow.Object); //ArrowY->SetAbsolute(false, true, false); - //ArrowY->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f)); + ArrowY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); ArrowY->SetRelativeLocation(FVector(39, 0, 0)); ArrowY->SetGenerateOverlapEvents(false); ArrowY->SetHiddenInGame(true); @@ -131,7 +128,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti TranslateZ->SetupAttachment(TranslationSupport); TranslateZ->SetStaticMesh(TranslateXMesh.Object); TranslateZ->SetAbsolute(false, true, false); - TranslateZ->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f)); + TranslateZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); TranslateZ->SetGenerateOverlapEvents(false); TranslateZ->SetHiddenInGame(true); TranslateZ->SetWorldRotation(FRotator(90.f, 0.0f, 0.0f)); @@ -143,7 +140,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ArrowZ->SetupAttachment(TranslateZ); ArrowZ->SetStaticMesh(TranslateArrow.Object); //ArrowZ->SetAbsolute(false, true, false); - //ArrowZ->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f)); + ArrowZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f)); ArrowZ->SetRelativeLocation(FVector(39, 0, 0)); ArrowZ->SetGenerateOverlapEvents(false); ArrowZ->SetHiddenInGame(true); @@ -201,7 +198,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'")); SupportH->SetStaticMesh(SupportMesh.Object); SupportH->SetWorldRotation(FRotator(-90, 0, 0)); - SupportH->SetWorldScale3D(FVector(1, 1, 0.5)); + SupportH->SetWorldScale3D(FVector(0.6, 0.6, 0.3)); SupportH->SetGenerateOverlapEvents(false); SupportH->SetHiddenInGame(true); //SupportH->SetWorldLocation(FVector(25, 0, 0)); @@ -214,7 +211,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/SelectorSphere.SelectorSphere'")); SupportSphereH->SetStaticMesh(SupportSphereMesh.Object); SupportSphereH->SetAbsolute(false, false, true); - SupportSphereH->SetWorldScale3D(FVector(0.05, 0.05, 0.05)); + SupportSphereH->SetWorldScale3D(FVector(0.03, 0.03, 0.03)); SupportSphereH->SetGenerateOverlapEvents(false); SupportSphereH->SetHiddenInGame(true); SupportSphereH->SetRelativeLocation(FVector(0, 0, 100)); @@ -237,7 +234,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti SupportV->SetupAttachment(RotationSupport); SupportV->SetStaticMesh(SupportMesh.Object); SupportV->SetWorldRotation(FRotator(0.0f, 0.0f, 90.0f)); - SupportV->SetWorldScale3D(FVector(1, 1, 0.5)); + SupportV->SetWorldScale3D(FVector(0.6, 0.6, 0.3)); SupportV->SetGenerateOverlapEvents(false); SupportV->SetHiddenInGame(true); //SupportV->SetWorldLocation(FVector(0, 25, 0)); @@ -250,7 +247,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti //static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Sphere_2.Sphere_2'")); SupportSphereV->SetStaticMesh(SupportSphereMesh.Object); SupportSphereV->SetAbsolute(false, false, true); - SupportSphereV->SetWorldScale3D(FVector(0.05, 0.05, 0.05)); + SupportSphereV->SetWorldScale3D(FVector(0.03, 0.03, 0.03)); SupportSphereV->SetGenerateOverlapEvents(false); SupportSphereV->SetHiddenInGame(true); SupportSphereV->SetRelativeLocation(FVector(0, 0, 100)); @@ -269,19 +266,34 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti //DegreeWidgetV->SetTwoSided(true); UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 3/4")); + - - // Rods + // Rods static ConstructorHelpers::FObjectFinder<UMaterial> MetalMaterial(TEXT("Material'/OptiX/Laser/MetalSilver.MetalSilver'")); + static ConstructorHelpers::FObjectFinder<UStaticMesh> SphereMesh(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'")); + static ConstructorHelpers::FObjectFinder<UStaticMesh> Cylinder2(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'")); + + Socket = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SocketNew")); + Socket->SetAbsolute(false, false, true); + + Socket->SetupAttachment(GetStaticMeshComponent()); + Socket->SetStaticMesh(SphereMesh.Object); + Socket->SetGenerateOverlapEvents(false); + Socket->SetMaterial(0, MetalMaterial.Object); + Socket->SetCollisionEnabled(ECollisionEnabled::NoCollision); + Socket->SetWorldScale3D(FVector(0.03, 0.03, 0.03)); + //Socket->SetRelativeLocation(FVector(0, 0, 0)); + Socket->SetCanEverAffectNavigation(false); + Socket->CastShadow = 0; + Socket->bVisibleInReflectionCaptures = false; ConnectorV = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ConnectorVNew")); ConnectorV->SetAbsolute(false, true, true); - ConnectorV->SetupAttachment(GetStaticMeshComponent()); - static ConstructorHelpers::FObjectFinder<UStaticMesh> Cylinder2(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'")); + ConnectorV->SetupAttachment(Socket); ConnectorV->SetStaticMesh(Cylinder2.Object); - ConnectorV->SetWorldScale3D(FVector(1, 1, -1)); + ConnectorV->SetWorldScale3D(FVector(0.5, 0.5, -1)); ConnectorV->SetGenerateOverlapEvents(false); ConnectorV->SetCollisionEnabled(ECollisionEnabled::NoCollision); ConnectorV->SetMaterial(0, MetalMaterial.Object); @@ -294,12 +306,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti Sphere->SetAbsolute(false, false, true); Sphere->SetupAttachment(ConnectorV); - static ConstructorHelpers::FObjectFinder<UStaticMesh> SphereMesh(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'")); Sphere->SetStaticMesh(SphereMesh.Object); Sphere->SetGenerateOverlapEvents(false); Sphere->SetMaterial(0, MetalMaterial.Object); Sphere->SetCollisionEnabled(ECollisionEnabled::NoCollision); - Sphere->SetWorldScale3D(FVector(0.05, 0.05, 0.05)); + Sphere->SetWorldScale3D(FVector(0.03, 0.03, 0.03)); Sphere->SetRelativeLocation(FVector(0, 0, 100)); Sphere->SetCanEverAffectNavigation(false); Sphere->CastShadow = 0; @@ -311,6 +322,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti ConnectorH->SetStaticMesh(Cylinder2.Object); ConnectorH->SetGenerateOverlapEvents(false); ConnectorH->SetRelativeLocation(FVector(0, 0, 100)); + ConnectorH->SetWorldScale3D(FVector(0.5, 0.5, 1.0)); ConnectorH->SetMaterial(0, MetalMaterial.Object); ConnectorH->SetMaterial(1, MetalMaterial.Object); ConnectorH->SetGenerateOverlapEvents(false); @@ -464,7 +476,16 @@ void ASelectableActorBase::DeleteActor() void ASelectableActorBase::SetRodPosition(FVector TablePosition) { - FVector TableZero = TablePosition + FVector(0, 0, 98); // Table Height + FVector TableZero = TablePosition + FVector(0, 0, 95); // Table Height + + // Far away from the table or below table, make it go straight down + if ( (Socket->GetComponentLocation().Z <= TableZero.Z) || (Socket->GetComponentLocation() - TableZero).Size() > 200) + { + ConnectorH->SetWorldScale3D(FVector(0, 0, 0)); + ConnectorV->SetWorldScale3D(FVector(1, 1, -10)); + return; + } + float ScaleFactorV = FMath::Abs(ConnectorV->GetComponentLocation().Z - TableZero.Z) / 100.0f; ConnectorV->SetWorldScale3D(FVector(1, 1, -ScaleFactorV)); @@ -475,11 +496,6 @@ void ASelectableActorBase::SetRodPosition(FVector TablePosition) ConnectorH->SetWorldRotation(FRotationMatrix::MakeFromZ(DistanceToSphere).Rotator()); - if ((ConnectorV->GetComponentLocation() - TableZero).Size() > 200) // Far away from the table, make it go straight down - { - ConnectorH->SetWorldScale3D(FVector(0, 0, 0)); - ConnectorV->SetWorldScale3D(FVector(1, 1, -10)); - } } // TODO Material highlighting - swap material slots? diff --git a/Source/OptiX/Public/OptiXLensComponent.h b/Source/OptiX/Public/OptiXLensComponent.h index 956f68e492bb1486bdcb3135b8c66b8534f996d4..b6953a3755e871fe5d1ff673f85a0f82f0c882bf 100644 --- a/Source/OptiX/Public/OptiXLensComponent.h +++ b/Source/OptiX/Public/OptiXLensComponent.h @@ -39,6 +39,8 @@ public: UOptiXLensComponent(const FObjectInitializer& ObjectInitializer); + virtual void BeginPlay() override; + // UOptiXObjectComponent Interface Start virtual void UpdateOptiXComponentVariables() override; diff --git a/Source/OptiX/Public/SelectableActorBase.h b/Source/OptiX/Public/SelectableActorBase.h index 90bb3f830b2011b758baa6ab4015651402676361..682cd71eb4b9d2195cf98219fad58bbd21059442 100644 --- a/Source/OptiX/Public/SelectableActorBase.h +++ b/Source/OptiX/Public/SelectableActorBase.h @@ -138,4 +138,7 @@ public: UPROPERTY(BlueprintReadWrite, EditAnywhere) UStaticMeshComponent* Sphere; + + UPROPERTY(BlueprintReadWrite, EditAnywhere) + UStaticMeshComponent* Socket; };