Description

UDN Issue: [Link Removed]

Steps to Reproduce
  • Create a C++ file in a chosen project (I used CitySample)
  • Paste something like the following in it:
    ```
    // Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "InstancedStruct.h"
#include "Engine/DataAsset.h"
#include "LoganTestDataAsset.generated.h"

/**

  • */
    USTRUCT(DisplayName = "Test Data Asset")
    UCLASS()
    class CITYSAMPLE_API UTestDataAsset : public UDataAsset

    { GENERATED_BODY() UPROPERTY(EditAnywhere, meta = (BaseStruct = "/Script/CitySample.TestDataNode")) FInstancedStruct Child; }

    ;

USTRUCT(DisplayName = "Test Data Node")
struct CITYSAMPLE_API FTestDataNode

{ GENERATED_BODY() UPROPERTY(EditAnywhere, meta = (BaseStruct = "/Script/CitySample.TestDataNode")) TArray<FInstancedStruct> Children; UPROPERTY(EditAnywhere, meta = (BaseStruct = "/Script/CitySample.TestDataNode")) FInstancedStruct Child; }

;
```

  • Create a new DataAsset that derives from the custom UDataAsset above
  • Open it in editor and start creating deeply nested tree of children

BEFORE: Framerate would become unusable after about 7-9 levels deep
AFTER: Framerate should be acceptable after 15-20 levels deep.

NOTE: This is a pretty large change which has the potential to affect all sorts of InstancedStruct editing. While I have done my best to do my own exploratory testing - QA exploratory testing would be appreciated to ensure instanced struct editing is functional.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-207555 in the post.

2
Login to Vote

Unresolved
CreatedFeb 20, 2024
ResolvedApr 22, 2024
UpdatedMay 2, 2024