4.16 - Custom Post Process Setting not showing up in Details Panel?

I’ve added two floats for Anamorphic Bloom to the list of settings in FPostProcessSettings, but they aren’t showing up when I go to edit my post process volume in 4.16? I’m using Release Branch.

Here’s the edit to Scene.h (right underneath Bloom Intensity)



#if 1 // STORMTIDE ENGINE
	/** How to shape Anamorphic Bloom. -1 = Horizontal Line, 0 = Default (Circle), 1 = Cross. */
	UPROPERTY(interp, BlueprintReadWrite, Category = "Lens|Bloom", meta=(ClampMin = "-1.0", ClampMax = "1.0", UIMin = "-1.0", UIMax = "1.0", editcondition = "bOverride_AnamorphicBloomShape", DisplayName = "Anamorphic Shape"))
	float AnamorphicBloomShape;

	/** Sets the blur value of Anamorphic Bloom */
	UPROPERTY(interp, BlueprintReadWrite, Category = "Lens|Bloom", meta=(ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0", editcondition = "bOverride_AnamorphicBloomStretch", DisplayName = "Anamorphic Stretch"))
	float AnamorphicBloomStretch;
#endif // STORMTIDE ENGINE


But it doesn’t show up in the PP Volume Details Panel:

I’ve tried almost everything I can think of / can find in order to get them to show up - but even in “CustomizeChildren” in “PostProcessSettingsCustomization.cpp” , my custom UPROPERTY isn’t even being iterated over, like it doesn’t exist?!

I’ve rebuilt the engine several times now and all the other modifcations I’ve added are there - this worked in prior versions! Where do I need to go to make this option appear in the panel?

You need to have EditAnywhere keyword set on your UPROPERTY macro

i.e UPROPERTY(EditAnywhere, interp, BlueprintReadWrite, Category = “Lens|Bloom”, meta=(ClampMin = “-1.0”, ClampMax = “1.0”, UIMin = “-1.0”, UIMax = “1.0”, editcondition = “bOverride_AnamorphicBloomShape”, DisplayName = “Anamorphic Shape”))

Also it’s not supported to enclose UPROPERTYs in arbitrary #ifdefs. Don’t remember what the behaviour is if you try, but you should be getting a compiler warning for that I believe.

Hey Matt, I’m surprised I didn’t think of that but - none of the default properties have that flag, they only have BP Read/Write.

Yeah that is the case but just using #if 1 is supported / works okay (well, it did before… but now I’m going to try without those too)

EDIT: Okay, I guess I was wrong about that. I could have sworn that’s what I was using before. Do you know if its possible to add a pre-processor flag to UHT if you’re building from source?

So your properties are showing up now? You are right that a bunch of the properties in that struct don’t specify EditAnywhere and yet show up, I don’t understand why. Perhaps Interp implies EditAnywhere?

As for modifying UHT, I don’t know. I’d guess that allowing arbitrary defines would be a major job, but how simple it would be to add an extra hard coded one, I’m not sure.

This struct is heavily customized. See FPostProcessSettingsCustomization. In general you need EditAnywhere, VisibleAnywhere, etc for properties to show up…

You can modify UHT if you have the source. See HeaderParser.cpp. You have to hard code it to look for an identifier im afraid. Look at usage of PushCompilerDirective in that file.

Awesome, thanks to you both. I’ll look at adding defines to UHT to help me out too :slight_smile:

So I tried adding EditAnywhere, it still didn’t show up. I stepped through “FPostProcessSettingsCustomization::CustomizeChildren()” as the details panel was being created (by pressing F4), and my custom settings aren’t even parsed at all - it’s like they don’t exist.

I don’t feel like it’s the pre-processor directive - because I have this in PhysicsSettings.h and it shows up in the project settings window just fine. I’m fairly sure that it’s only UFUNCTIONS that misbehave with preprocessor directives.



#if 1 // STORMTIDE ENGINE
	/* Stormtide Engine - Whether to use fixed timestep during substepping */
	UPROPERTY(config, EditAnywhere, Category = "Framerate")
	bool bFixedTimestepSubsteps;
#endif // STORMTIDE ENGINE


EDIT: I removed the Pre-Processor stuff and suddenly it’s showing up… I don’t understand why the same preprocessor works fine in PhysicsSettings for a UPROPERTY(), but not in Post Process Settings? Possibly because Physics Settings is a UClass whereas PostProcessSettings is a UStruct?

Doesn’t look like adding anything to UHT will help me here.