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

- Added socket to rods so that it doesn't look ridiculous when rotating the...

- Added socket to rods so that it doesn't look ridiculous when rotating the object the rod is connected to.
- Fixed tablet rod calculation in Blueprints
- Fixed rod calculation for others in selectable actor
parent f7bf66bf
No related branches found
No related tags found
No related merge requests found
Showing
with 62 additions and 30 deletions
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -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);
......
......@@ -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));
......@@ -274,14 +271,29 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
// 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?
......
......@@ -39,6 +39,8 @@ public:
UOptiXLensComponent(const FObjectInitializer& ObjectInitializer);
virtual void BeginPlay() override;
// UOptiXObjectComponent Interface Start
virtual void UpdateOptiXComponentVariables() override;
......
......@@ -138,4 +138,7 @@ public:
UPROPERTY(BlueprintReadWrite, EditAnywhere)
UStaticMeshComponent* Sphere;
UPROPERTY(BlueprintReadWrite, EditAnywhere)
UStaticMeshComponent* Socket;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment