diff --git a/InstancedMeshLines/Content/ExampleMap.umap b/InstancedMeshLines/Content/ExampleMap.umap index 2220183936cd8235a84c8eeafc745ebbc8f59998..fadd933fc66bf8d79521fab877e4261c2a6ec129 100644 Binary files a/InstancedMeshLines/Content/ExampleMap.umap and b/InstancedMeshLines/Content/ExampleMap.umap differ diff --git a/InstancedMeshLines/Content/ExampleMap_BuiltData.uasset b/InstancedMeshLines/Content/ExampleMap_BuiltData.uasset index 06f787659e243a25918ea05f951489038a8c99e3..d67265b5d9869ce3c2003fe114e65474f97d9d2c 100644 Binary files a/InstancedMeshLines/Content/ExampleMap_BuiltData.uasset and b/InstancedMeshLines/Content/ExampleMap_BuiltData.uasset differ diff --git a/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Private/GPUInstancedLineComponent.cpp b/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Private/GPUInstancedLineComponent.cpp index 703e346af542d97ddf0e4d7d755189768bda5e6d..ec35353186093565212b51ebf07b4fe098a071c3 100644 --- a/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Private/GPUInstancedLineComponent.cpp +++ b/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Private/GPUInstancedLineComponent.cpp @@ -95,7 +95,7 @@ void UGPUInstancedLineComponent::Init() bIsInitialized = true; - + // Add serialized lines to be rendered immediately - pretty sure this could and should be done differently. for (FEditorLineData& EditorLine : EditorLines) { AddLineFromEditorData(EditorLine); @@ -106,8 +106,6 @@ void UGPUInstancedLineComponent::Init() FUpdateTextureRegion2D* UGPUInstancedLineComponent::CalculateTextureRegions(const FIntPoint& StartIndex, int32 NumberOfPoints, int32& NumberOfRegionsOut) { - const bool bMultiRow = StartIndex.X + NumberOfPoints > TextureWidth; - // Calculate the first consecutive region: int32 RemainingPoints = NumberOfPoints; @@ -336,11 +334,14 @@ int32 UGPUInstancedLineComponent::AddLine(const TArray<FVector>& Line, FLinearCo return LineId; } -int32 UGPUInstancedLineComponent::AddLineFromEditorData(const FEditorLineData& LineData) +int32 UGPUInstancedLineComponent::AddLineFromEditorData(FEditorLineData& LineData) { const TArray<FEditorPoint>* EditorLineDataPtr = &LineData.Points; const TArray<FVector>* FVectorLineDataPtr = reinterpret_cast<const TArray<FVector>*>(EditorLineDataPtr); - return AddLine(*FVectorLineDataPtr, LineData.Color, LineData.Width); + + LineData.RespectiveLineId = AddLine(*FVectorLineDataPtr, LineData.Color, LineData.Width); + + return LineData.RespectiveLineId; } diff --git a/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Public/GPUInstancedLineComponent.h b/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Public/GPUInstancedLineComponent.h index f6cbbe02b54a50cebbff801700b0e45fb304309d..d2af8882cf674788d48b1342236b28b56fd0cbac 100644 --- a/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Public/GPUInstancedLineComponent.h +++ b/InstancedMeshLines/Plugins/InstancedMeshLineRendering/Source/InstancedMeshLineRendering/Public/GPUInstancedLineComponent.h @@ -26,7 +26,7 @@ struct FEditorPoint { GENERATED_USTRUCT_BODY() - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, meta = (MakeEditWidget = true)) FVector Point; FEditorPoint() @@ -45,7 +45,7 @@ struct FEditorLineData { GENERATED_USTRUCT_BODY() - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, meta = (MakeEditWidget = true, EditFixedOrder)) TArray<FEditorPoint> Points; UPROPERTY(EditAnywhere) @@ -54,6 +54,8 @@ struct FEditorLineData UPROPERTY(EditAnywhere) FColor Color; + int32 RespectiveLineId = -1; + FEditorLineData() { } @@ -143,7 +145,7 @@ public: * @return int32 Id of the line, can be used to access it later on. */ UFUNCTION(BlueprintCallable, Category = "Components|InstancedLineComponent") - int32 AddLineFromEditorData(const FEditorLineData& LineData); + int32 AddLineFromEditorData(FEditorLineData& LineData); /** * Adds a point at the end of the specified line.