Basically, allow us to change the default in-editor icon for any blueprint without the need to add a billboard.
This code was taken from the skylight. (\Engine\Source\Runtime\Engine\Private\Components\SkyLightComponent.cpp)
USkyLightComponent::USkyLightComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer) { #if WITH_EDITORONLY_DATA if (!IsRunningCommandlet()) { static ConstructorHelpers::FObjectFinder<UTexture2D> StaticTexture(TEXT("/Engine/EditorResources/LightIcons/SkyLight")); StaticEditorTexture = StaticTexture.Object; StaticEditorTextureScale = 1.0f; DynamicEditorTexture = StaticTexture.Object; DynamicEditorTextureScale = 1.0f; } #endif
Following the chain, the variables are set within the LightComponentBase.h (\Engine\Source\Runtime\Engine\Classes\Components\LightComponentBase.h)
#if WITH_EDITORONLY_DATA /** Sprite for static light in the editor. */ UPROPERTY(transient) UTexture2D* StaticEditorTexture; /** Sprite scaling for static light in the editor. */ UPROPERTY(transient) float StaticEditorTextureScale; /** Sprite for dynamic light in the editor. */ UPROPERTY(transient) UTexture2D* DynamicEditorTexture; /** Sprite scaling for dynamic light in the editor. */ UPROPERTY(transient) float DynamicEditorTextureScale; #endif
Following up on that, the icon for it seems currently implemented for a USceneComponent object, however I do not see a way to actually change this in BP for a custom blueprint of type Scene-component.
While I can probably reverse-engineer this for my custom C++ classes, I would love the ability to just be able to set it up on a per actor basis, so that Actor, Pawns, and Scene Components added to the level can have the ability to display a custom icon in editor out of the box without the need for a Billboard to be setup.