diff --git a/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset b/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset
index e3897ef849f7c431089d8933275c5bd6b937105d..ade5e7f48de1ff08a9260496ddfc2b79198f8bae 100644
Binary files a/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset and b/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset differ
diff --git a/Content/Blueprints/TabletBP.uasset b/Content/Blueprints/TabletBP.uasset
index 70471f0bd4bdba18cde69f90430fa282113748f7..279e6d81f4934b0826f6229755ea4b16b9e47154 100644
Binary files a/Content/Blueprints/TabletBP.uasset and b/Content/Blueprints/TabletBP.uasset differ
diff --git a/Content/Blueprints/TeleportControllerBP.uasset b/Content/Blueprints/TeleportControllerBP.uasset
index bc71155c16d56df0b15c2423eadfe49869e41c91..605c4f66458361b8572f8e3d58720e1e1ba41265 100644
Binary files a/Content/Blueprints/TeleportControllerBP.uasset and b/Content/Blueprints/TeleportControllerBP.uasset differ
diff --git a/Content/PPMaterials/TextureMaterialVR.uasset b/Content/PPMaterials/TextureMaterialVR.uasset
index 74696d413546d18799610e37995dc463e06402b8..199d0d4ec2a9c4705155993d8388de5ae63b5086 100644
Binary files a/Content/PPMaterials/TextureMaterialVR.uasset and b/Content/PPMaterials/TextureMaterialVR.uasset differ
diff --git a/OptiX.uplugin b/OptiX.uplugin
index b8de04aca3b114444aac104dc86144918d5b9eb8..cc939ae0df7e247c8c7f65bb20fc4c21a939839c 100644
--- a/OptiX.uplugin
+++ b/OptiX.uplugin
@@ -27,12 +27,6 @@
       "LoadingPhase": "PostEngineInit"
     }
   ],
-  "Plugins": [
-    {
-      "Name": "MultiLine",
-      "Enabled":  true
-    }
-  ],
   "PostBuildSteps": 
   {
     "Win64": [
diff --git a/Source/OptiX/OptiX.Build.cs b/Source/OptiX/OptiX.Build.cs
index 13d849b31020e5456992a3733c1950d430b86cfe..a42b7c140debd5302d45731e35b32bdf236ff371 100644
--- a/Source/OptiX/OptiX.Build.cs
+++ b/Source/OptiX/OptiX.Build.cs
@@ -45,9 +45,6 @@ public class OptiX : ModuleRules
                 "UMG",
                 "Slate",
                 "SlateCore",
-                "MultiLine"
-
-
             }
             );
         PrivateDependencyModuleNames.AddRange(
@@ -60,7 +57,6 @@ public class OptiX : ModuleRules
                 "OptiXLibrary",
                 "Engine",
                 "HeadMountedDisplay",
-                "MultiLine",
                 "Json",
                 "JsonUtilities",
                 "RenderCore",
diff --git a/Source/OptiX/Private/LineInstancedStaticMeshComponent.cpp b/Source/OptiX/Private/LineInstancedStaticMeshComponent.cpp
index f3a921b1d8e69346291ca093dfd8c7fe6f2adbf4..76182e18793a9c6f793af47421cb076b5d7c798d 100644
--- a/Source/OptiX/Private/LineInstancedStaticMeshComponent.cpp
+++ b/Source/OptiX/Private/LineInstancedStaticMeshComponent.cpp
@@ -21,9 +21,6 @@ ULineInstancedStaticMeshComponent::ULineInstancedStaticMeshComponent(const FObje
 
 	UE_LOG(LogTemp, Display, TEXT("ULineInstancedStaticMeshComponent Constructor"));
 
-
-	SetGenerateOverlapEvents(false);
-
 	static ConstructorHelpers::FObjectFinder<UStaticMesh>LineMeshAsset(TEXT("StaticMesh'/OptiX/Laser/cylinder.cylinder'"));
 	UStaticMesh* LineAsset = LineMeshAsset.Object;
 	SetStaticMesh(LineAsset);
@@ -31,6 +28,8 @@ ULineInstancedStaticMeshComponent::ULineInstancedStaticMeshComponent(const FObje
 	SetRenderCustomDepth(true);
 	SetCastShadow(false);
 	SetCollisionEnabled(ECollisionEnabled::NoCollision);
+	SetGenerateOverlapEvents(false);
+
 	//SetCullDistance(10000);
 	//SetBoundsScale(1000); // Prevent culling due to usage of worldpositionoffset
 
diff --git a/Source/OptiX/Private/OptiXLaserActor.cpp b/Source/OptiX/Private/OptiXLaserActor.cpp
index 4780c719f8df313ecfdeddf77edf910289cef5e6..e692d6cdb06b5d91149eb6d8ebef9b22030646ce 100644
--- a/Source/OptiX/Private/OptiXLaserActor.cpp
+++ b/Source/OptiX/Private/OptiXLaserActor.cpp
@@ -41,14 +41,7 @@ AOptiXLaserActor::AOptiXLaserActor(const FObjectInitializer& ObjectInitializer)
 
 	LineInstancedStaticMeshComponent = CreateDefaultSubobject<ULineInstancedStaticMeshComponent>(TEXT("LineInstancedStaticMeshComponent"));
 	LineInstancedStaticMeshComponent->SetupAttachment(GetStaticMeshComponent());
-	//InstancedStaticMeshComponent->SetGenerateOverlapEvents(false);
-
-	//InstancedStaticMeshComponent->SetStaticMesh(LineAsset);
-	//InstancedStaticMeshComponent->SetRenderCustomDepth(true);
-	//InstancedStaticMeshComponent->SetCastShadow(false);
-	//InstancedStaticMeshComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision);
-
-
+	
 	OptiXLaserComponent = CreateDefaultSubobject<UOptiXLaserComponent>(TEXT("LaserComponent"));
 	OptiXLaserComponent->SetupAttachment(LineInstancedStaticMeshComponent);
 
@@ -61,25 +54,7 @@ void AOptiXLaserActor::BeginPlay()
 	Super::BeginPlay();
 
 	FOptiXModule::Get().GetOptiXContextManager()->SetActiveLaserActor(this);
-
-
-	//FActorSpawnParameters SpawnInfo;
-	//SpawnInfo.Owner = this;
-	//MultiLineActorRef = GetWorld()->SpawnActor<AMultiLineActor>(GetActorLocation(), GetActorRotation(), SpawnInfo);
-
-	//FAttachmentTransformRules Rules = FAttachmentTransformRules(EAttachmentRule::SnapToTarget, true);
-	//MultiLineActorRef->AttachToActor(this, Rules);
-	//MultiLineActorRef->SetFlatShading(true);
-	//MultiLineActorRef->GetMeshComponent()->SetCastShadow(false);
-	//MultiLineActorRef->GetMeshComponent()->SetGenerateOverlapEvents(false);
-	//MultiLineActorRef->GetMeshComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
-
-	//MultiLineActorRef->SetActorHiddenInGame(true);
-
-	//DynamicLaserMaterial = UMaterialInstanceDynamic::Create(InstancedStaticMeshComponent->GetMaterial(0), this);
-	//InstancedStaticMeshComponent->GetStaticMesh()->SetMaterial(0, DynamicLaserMaterial);
-	//InstancedStaticMeshComponent->SetMaterial(0, DynamicLaserMaterial);
-	//InitInstancedMeshData();
+	
 	LineInstancedStaticMeshComponent->InitLineSegments(OptiXLaserComponent->LaserIndices, 20);
 	LineInstancedStaticMeshComponent->UpdateLUT(OptiXLaserComponent->LaserIndexColorMap);
 
@@ -89,97 +64,13 @@ void AOptiXLaserActor::BeginPlay()
 void AOptiXLaserActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
 {
 	Super::EndPlay(EndPlayReason);
-	//MultiLineActorRef->Destroy();
-	//MultiLineActorRef = nullptr;
 
 	UE_LOG(LogTemp, Warning, TEXT("OptiX Laser Actor EndPlay")); 
 }
 
-//void AOptiXLaserActor::Tick(float DeltaTime)
-//{
-//	// We don't need to trace each tick, but only if either the optix scene changed, or the laser position moved. 
-//	Super::Tick(DeltaTime);
-//
-//	//LineInstancedStaticMeshComponent->UpdateLines();
-//
-//	//if (bLaserTraceEnabled)
-//	//{		
-//	//	// Check if there's anything in the queue
-//
-//	//	if (!FOptiXModule::Get().GetOptiXContextManager()->LaserIntersectionQueue.IsEmpty())
-//	//	{
-//	//		DisplayLines();
-//	//	}
-//	//}
-//
-//
-//}
-
-//void AOptiXLaserActor::InitInstancedMeshData()
-//{
-//	// We have a max number of LaserIndices * 20 instances
-//	uint32 Count = 0;
-//
-//	TArray<LineProps> Lines;
-//
-//	for (int32 Index : OptiXLaserComponent->LaserIndices)
-//	{
-//		TArray<FVector> Line;
-//		Line.Add(FVector(0, 0, 0));
-//
-//		for (int32 Intersection = Index * 20 * 2; Intersection < Index * 20 * 2 + 20 * 2; Intersection += 2)
-//		{
-//			FTransform LineTransform;
-//
-//
-//			LineTransform.SetScale3D({ 0, 0, 0 });
-//			LineTransform.SetLocation({0, 0, 0});
-//
-//			// Rotation - align z to point towards End:
-//
-//			LineTransform.SetRotation(FQuat::Identity);
-//
-//			if (LineTransform.ContainsNaN())
-//			{
-//				UE_LOG(LogTemp, Fatal, TEXT("Line Transform contains NaNs!"));
-//			}
-//
-//			InstancedStaticMeshComponent->AddInstanceWorldSpace(LineTransform);
-//			Count++;
-//
-//			Line.Add(FVector(0, 0, 0));
-//		}
-//		//UE_LOG(LogTemp, Display, TEXT("Line Length: %i"), Line.Num());
-//
-//		Lines.Add(LineProps(Line, OptiXLaserComponent->LaserIndexColorMap[Index].ReinterpretAsLinear(), OptiXLaserComponent->GetLaserWidth()));
-//
-//	}
-//	//UE_LOG(LogTemp, Display, TEXT("Lines : %i"), Lines.Num());
-//	MultiLineActorRef->CreateMesh(Lines);
-//
-//	UE_LOG(LogTemp, Display, TEXT("Created Proc Mesh"));
-//}
 
 void AOptiXLaserActor::UpdateLaserPattern(EPatternTypes Pattern)
 {
-	// Clear the data 
-	// This doesn't seem to work atm, maybe related to this here:
-	// https://unreal-engine-issues.herokuapp.com/issue/UE-60607
-	// Need to try it in a newer version! TODO
-	// For now, quick and dirty hack
-	//MultiLineActorRef->ClearMeshSections();
-	//MultiLineActorRef->Destroy();
-	//FActorSpawnParameters SpawnInfo;
-	//SpawnInfo.Owner = this;
-	//MultiLineActorRef = GetWorld()->SpawnActor<AMultiLineActor>(GetActorLocation(), GetActorRotation(), SpawnInfo);
-
-	/*FAttachmentTransformRules Rules = FAttachmentTransformRules(EAttachmentRule::SnapToTarget, true);
-	MultiLineActorRef->AttachToActor(this, Rules);
-	MultiLineActorRef->SetFlatShading(true);
-	MultiLineActorRef->GetMeshComponent()->SetCastShadow(false);
-	MultiLineActorRef->GetMeshComponent()->SetGenerateOverlapEvents(false);
-	MultiLineActorRef->GetMeshComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);*/
-
 
 	OptiXLaserComponent->PreparePatternChange(Pattern);
 	LineInstancedStaticMeshComponent->InitLineSegments(OptiXLaserComponent->LaserIndices, 20);
@@ -196,127 +87,3 @@ void AOptiXLaserActor::UpdateLaserWidth(float NewWidth)
 	OptiXLaserComponent->SetLaserWidth(NewWidth);
 	LineInstancedStaticMeshComponent->DynamicLaserMaterial->SetScalarParameterValue("Width", NewWidth);
 }
-
-
-//void AOptiXLaserActor::DisplayLines()
-//{
-	/*
-	This works and is decently efficient but the actual optix setup is incredibly wasteful and weird.
-	There's no need for 3 huge buffers which contain almost no data, as only a few of the 50 * 50 possible rays get traced.
-	Really really *really* needs to be refactored to something sensible!
-	*/
-
-
-	//LineInstancedStaticMeshComponent->UpdateLines(OptiXLaserComponent->GetLaserWidth());
-
-
-	// Update the material here for now TODO
-	// It's definitely not easily possible to have a per-instance color data sadly
-	//if (DynamicLaserMaterial != nullptr)
-	//{
-	//	DynamicLaserMaterial->SetVectorParameterValue("Color", Cie1931WavelengthToRGB(OptiXLaserComponent->GetWavelength()));
-	//}
-
-	// Update the transforms of the mesh instances
-
-
-	// Try to empty the queue in one go or until it is empty:
-	//bool bIsDirty = true;
-	//uint32 TransformIndex = 0;
-
-	//TArray<LineProps> Lines;
-
-
-	//for (int32 i = 0; i < 50 * 50; ++i)
-	//{
-	//	if (FOptiXModule::Get().GetOptiXContextManager()->LaserIntersectionQueue.IsEmpty()) break;
-
-	//	TPair<uint32, TArray<FVector>> QueueItem;
-	//	FOptiXModule::Get().GetOptiXContextManager()->LaserIntersectionQueue.Dequeue(QueueItem);
-	//	int32 Index = QueueItem.Key;
-
-	//	TArray<FVector> Line;
-	//	FVector PrevIntersection(0, 0, 0);
-
-	//	for (int32 Intersection = 0; Intersection < 20 * 2; Intersection += 2)
-	//	{
-	//		//if (Intersection == 0)
-	//		//{
-	//		//	if (QueueItem.Value[Intersection] != FVector(0, -1, 0))
-	//		//	{
-	//		//		PrevIntersection = GetActorRotation().UnrotateVector(QueueItem.Value[Intersection] - GetActorLocation());
-	//		//		Line.Add(PrevIntersection);
-	//		//	}
-	//		//	else
-	//		//	{
-	//		//		Line.Add(FVector(0, 0, 0));
-	//		//	}
-	//		//}
-
-	//		//if (QueueItem.Value[Intersection + 1] != FVector(0, -1, 0))
-	//		//{
-	//		//	PrevIntersection = GetActorRotation().UnrotateVector(QueueItem.Value[Intersection + 1] - GetActorLocation());
-	//		//	Line.Add(PrevIntersection);
-	//		//}
-	//		//else
-	//		//{
-	//		//	Line.Add(PrevIntersection);
-	//		//}
-	//				
-
-	//		bIsDirty = true;
-	//		FTransform LineTransform;
-	//		FVector Start = QueueItem.Value[Intersection];
-	//		FVector End = QueueItem.Value[Intersection + 1];
-
-	//		//UE_LOG(LogTemp, Display, TEXT("# Dist: %s"), *(Start-End).ToString());
-
-
-	//		float D = FVector::Distance(Start, End);
-	//		float DScaled = D / 100.0;
-	//		float Width = OptiXLaserComponent->GetLaserWidth();
-	//		if (D == 0)
-	//		{
-	//			Width = 0; // Set scale to 0 if it shouldn't be drawn
-	//		}
-
-	//		LineTransform.SetScale3D({ Width, Width, DScaled });
-	//		LineTransform.SetLocation(Start);
-
-	//		// Rotation - align z to point towards End:
-	//		FQuat Rot = FRotationMatrix::MakeFromZ(End - Start).ToQuat();
-
-	//		if (D == 0)
-	//		{
-	//			Rot = FRotationMatrix::Identity.ToQuat();
-	//		}
-
-	//		LineTransform.SetRotation(Rot);
-
-	//		FTransform OldTransform;
-	//		InstancedStaticMeshComponent->GetInstanceTransform(TransformIndex, OldTransform, true);
-
-	//		if (OldTransform.Equals(LineTransform))
-	//		{
-	//			bIsDirty = false;
-	//		}
-
-	//		if (LineTransform.ContainsNaN())
-	//		{
-	//			UE_LOG(LogTemp, Fatal, TEXT("Line Transform contains NaNs!"));
-	//		}
-
-	//		//UE_LOG(LogTemp, Display, TEXT("# Instances: %i"), InstancedStaticMeshComponent->GetInstanceCount());
-
-	//		InstancedStaticMeshComponent->UpdateInstanceTransform(TransformIndex, LineTransform, true, bIsDirty, true);
-	//		TransformIndex++;
-	//	}	
-	//	//UE_LOG(LogTemp, Display, TEXT(" Line Color : %s"), *OptiXLaserComponent->LaserIndexColorMap[Index].ReinterpretAsLinear().ToString());
-
-	//	// Linear Color set doesn't work here! Not a big deal tho
-	//	//Lines.Add(LineProps(Line, FLinearColor(0.0, 0.0, 0.0), OptiXLaserComponent->GetLaserWidth()));
-	//}
-	//UE_LOG(LogTemp, Display, TEXT("Lines : %i"), Lines.Num());
-
-	//MultiLineActorRef->UpdateMesh(Lines);
-//}
diff --git a/Source/OptiX/Private/OptiXLaserTargetComponent.cpp b/Source/OptiX/Private/OptiXLaserTargetComponent.cpp
index df4ec60b959e6295881a1470834d23c9cb106e7b..3c565dbde114aa32382365d02ba2cd3714bae370 100644
--- a/Source/OptiX/Private/OptiXLaserTargetComponent.cpp
+++ b/Source/OptiX/Private/OptiXLaserTargetComponent.cpp
@@ -143,7 +143,8 @@ void UOptiXLaserTargetComponent::InitOptiXGroups()
 
 void UOptiXLaserTargetComponent::CleanOptiXComponent()
 {
-	OptiXContext->GetGroup("top_object")->RemoveChild(OptiXTransform);
+	if(OptiXContext->GetGroup("top_object") != NULL)
+		OptiXContext->GetGroup("top_object")->RemoveChild(OptiXTransform);
 
 	OptiXTransform = nullptr;
 	Super::CleanOptiXComponent();
diff --git a/Source/OptiX/Private/OptiXObjectComponent.cpp b/Source/OptiX/Private/OptiXObjectComponent.cpp
index 49c1c0c0c87c776be9f2480bc9bab6e38d311cd8..adcfd9435e7d65ebb87292d9dbbbb3b7ca269c77 100644
--- a/Source/OptiX/Private/OptiXObjectComponent.cpp
+++ b/Source/OptiX/Private/OptiXObjectComponent.cpp
@@ -187,7 +187,6 @@ void UOptiXCubemapComponent::BeginPlay()
 	for (AActor* Actor : FoundLaserActors)
 	{
 		HideComponent(Cast<AOptiXLaserActor>(Actor)->LineInstancedStaticMeshComponent);
-		//HideActorComponents(Cast<AOptiXLaserActor>(Actor)->MultiLineActorRef);
 	}
 
 
diff --git a/Source/OptiX/Private/SelectableActorBase.cpp b/Source/OptiX/Private/SelectableActorBase.cpp
index f45146f68d39b9c8313b87b0e176073b1da592b4..dc5be06efe81d3a3d6484d06a3cdbf53b0c6ba44 100644
--- a/Source/OptiX/Private/SelectableActorBase.cpp
+++ b/Source/OptiX/Private/SelectableActorBase.cpp
@@ -13,10 +13,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 
 	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor"));
 
-
 	SetMobility(EComponentMobility::Movable);
 
 	GetStaticMeshComponent()->SetGenerateOverlapEvents(true);
+	GetStaticMeshComponent()->CastShadow = 0;
+
 
 	Gizmo = CreateDefaultSubobject<USceneComponent>(TEXT("Gizmo"));
 	Gizmo->SetupAttachment(GetStaticMeshComponent());
@@ -43,6 +44,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateX->SetGenerateOverlapEvents(false);
 	TranslateX->SetHiddenInGame(true);
 
+	TranslateX->CastShadow = 0;
+	TranslateX->bVisibleInReflectionCaptures = false;
+
 	ArrowX = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowX"));
 	ArrowX->SetupAttachment(TranslateX);
 	static ConstructorHelpers::FObjectFinder<UStaticMesh> TranslateArrow(TEXT("StaticMesh'/OptiX/UI/Translator/Arrowhead.Arrowhead'"));
@@ -54,6 +58,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ArrowX->SetHiddenInGame(true);
 	ArrowX->SetAbsolute(false, false, true);
 
+	ArrowX->CastShadow = 0;
+	ArrowX->bVisibleInReflectionCaptures = false;
+
 
 	TranslateWidgetX = CreateDefaultSubobject<UWidgetComponent>(TEXT("TranslateWidgetX"));
 	TranslateWidgetX->SetAbsolute(false, true, true);
@@ -78,6 +85,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateY->SetHiddenInGame(true);
 	TranslateY->SetWorldRotation(FRotator(0.f, 90.0f, 0.0f));
 
+	TranslateY->CastShadow = 0;
+	TranslateY->bVisibleInReflectionCaptures = false;
+
 	ArrowY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowY"));
 	ArrowY->SetupAttachment(TranslateY);
 	ArrowY->SetStaticMesh(TranslateArrow.Object);
@@ -88,6 +98,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ArrowY->SetHiddenInGame(true);
 	ArrowY->SetAbsolute(false, false, true);
 
+	ArrowY->CastShadow = 0;
+	ArrowY->bVisibleInReflectionCaptures = false;
 
 	TranslateWidgetY = CreateDefaultSubobject<UWidgetComponent>(TEXT("TranslateWidgetY"));	
 	TranslateWidgetY->SetAbsolute(false, true, true);
@@ -109,6 +121,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateZ->SetHiddenInGame(true);
 	TranslateZ->SetWorldRotation(FRotator(90.f, 0.0f, 0.0f));
 
+	TranslateZ->CastShadow = 0;
+	TranslateZ->bVisibleInReflectionCaptures = false;
+
 	ArrowZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ArrowZ"));
 	ArrowZ->SetupAttachment(TranslateZ);
 	ArrowZ->SetStaticMesh(TranslateArrow.Object);
@@ -119,6 +134,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ArrowZ->SetHiddenInGame(true);
 	ArrowZ->SetAbsolute(false, false, true);
 
+	ArrowZ->CastShadow = 0;
+	ArrowZ->bVisibleInReflectionCaptures = false;
 
 	TranslateWidgetZ = CreateDefaultSubobject<UWidgetComponent>(TEXT("TranslateWidgetZ"));
 	TranslateWidgetZ->SetAbsolute(false, true, true);
@@ -146,6 +163,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ScaleH->SetCollisionEnabled(ECollisionEnabled::NoCollision);
 	ScaleH->SetHiddenInGame(true);
 
+	ScaleH->CastShadow = 0;
+	ScaleH->bVisibleInReflectionCaptures = false;
+
 	ScaleV = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ScaleV"));
 	ScaleV->SetupAttachment(RotationSupport);
 	ScaleV->SetStaticMesh(ScaleMesh.Object);
@@ -155,6 +175,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ScaleV->SetCollisionEnabled(ECollisionEnabled::NoCollision);
 	ScaleV->SetHiddenInGame(true);
 
+	ScaleV->CastShadow = 0;
+	ScaleV->bVisibleInReflectionCaptures = false;
+
 	SupportH = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SupportH"));
 	SupportH->SetupAttachment(RotationSupport);
 	static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'"));
@@ -165,6 +188,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportH->SetHiddenInGame(true);
 	//SupportH->SetWorldLocation(FVector(25, 0, 0));
 
+	SupportH->CastShadow = 0;
+	SupportH->bVisibleInReflectionCaptures = false;
+
 	SupportSphereH = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SupportSphereH"));
 	SupportSphereH->SetupAttachment(SupportH);
 	static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/SelectorSphere.SelectorSphere'"));
@@ -175,6 +201,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportSphereH->SetHiddenInGame(true);
 	SupportSphereH->SetRelativeLocation(FVector(0, 0, 100));
 
+	SupportSphereH->CastShadow = 0;
+	SupportSphereH->bVisibleInReflectionCaptures = false;
+
 	DegreeWidgetH = CreateDefaultSubobject<UWidgetComponent>(TEXT("DegreeWidgetH"));
 	DegreeWidgetH->SetupAttachment(SupportSphereH);
 	static ConstructorHelpers::FClassFinder<UUserWidget> DegreeWidgetClass(TEXT("/OptiX/UI/Rotator/DegreeCounter"));
@@ -194,6 +223,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportV->SetHiddenInGame(true);
 	//SupportV->SetWorldLocation(FVector(0, 25, 0));
 
+	SupportV->CastShadow = 0;
+	SupportV->bVisibleInReflectionCaptures = false;
+
 	SupportSphereV = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SupportSphereV"));
 	SupportSphereV->SetupAttachment(SupportV);
 	//static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Sphere_2.Sphere_2'"));
@@ -204,6 +236,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportSphereV->SetHiddenInGame(true);
 	SupportSphereV->SetRelativeLocation(FVector(0, 0, 100));
 
+	SupportSphereV->CastShadow = 0;
+	SupportSphereV->bVisibleInReflectionCaptures = false;
+
 	DegreeWidgetV = CreateDefaultSubobject<UWidgetComponent>(TEXT("DegreeWidgetV"));
 	DegreeWidgetV->SetupAttachment(SupportSphereV);
 	DegreeWidgetV->SetWidgetClass(DegreeWidgetClass.Class);
@@ -229,6 +264,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ConnectorV->SetMaterial(0, MetalMaterial.Object);
 	ConnectorV->SetMaterial(1, MetalMaterial.Object);
 
+	ConnectorV->CastShadow = 0;
+	ConnectorV->bVisibleInReflectionCaptures = false;
+
 	Sphere = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SphereNew"));
 	Sphere->SetAbsolute(false, false, true);
 
@@ -241,6 +279,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	Sphere->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
 	Sphere->SetRelativeLocation(FVector(0, 0, 100));
 
+	Sphere->CastShadow = 0;
+	Sphere->bVisibleInReflectionCaptures = false;
+
 	ConnectorH = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ConnectorHNew"));
 	ConnectorH->SetAbsolute(false, true, true);
 	ConnectorH->SetupAttachment(ConnectorV);
@@ -252,6 +293,9 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ConnectorH->SetGenerateOverlapEvents(false);
 	ConnectorH->SetCollisionEnabled(ECollisionEnabled::NoCollision);
 
+	ConnectorH->CastShadow = 0;
+	ConnectorH->bVisibleInReflectionCaptures = false;
+
 	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor End"));
 
 
diff --git a/Source/OptiX/Public/OptiXLaserActor.h b/Source/OptiX/Public/OptiXLaserActor.h
index 06902cd0c0c17154ac3029cff910f948501d7312..42b624bca3e1d1f5018aa1842adda4af90f48780 100644
--- a/Source/OptiX/Public/OptiXLaserActor.h
+++ b/Source/OptiX/Public/OptiXLaserActor.h
@@ -11,9 +11,6 @@
 #include "SelectableActorBase.h"
 #include "LineInstancedStaticMeshComponent.h"
 
-#include "MultiLineActor.h"
-
-
 #include "OptiXLaserActor.generated.h"
 
 
@@ -62,12 +59,6 @@ public:
 	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = OptiX)
 	UOptiXLaserComponent* OptiXLaserComponent;
 
-	//UPROPERTY(BlueprintReadOnly, Category = OptiX)
-	//UMaterialInstanceDynamic* DynamicLaserMaterial;	
-
-	//UPROPERTY()
-	//AMultiLineActor* MultiLineActorRef;
-
 };