CineCameraSettings details customizations (preset combobox) don't respect IsEditable or apply presets to all fields

The CineCameraSettings details customizations classes for cinematic camera presets (FCameraFilmbackSettingsCustomization, FCameraLensSettingsCustomization, FCameraCropSettingsCustomization) do not correctly respect IsEditable for the properties they edit. Of note, FCameraFilmbackSettingsCustomization has a method IsPresetEnabled, which checks this for two of its fields (SensorWidth and SensorHeight, but not the newer SensorHorizontalOffset and SensorVerticalOffset), but the other two classes do not check at all. This means that when these fields are not editable, the preset combo-box remains enabled and will attempt to edit those properties if used.

In addition, the method FCameraFilmbackSettingsCustomization::OnPresetChanged only sets the properties SensorWidth and SensorHeight, but not the newer SensorHorizontalOffset and SensorVerticalOffset, so those two fields are ignored when selecting a preset.

Finally, the implementations of FCameraLensSettingsCustomization::OnPresetChanged and FCameraCropSettingsCustomization::OnPresetChanged both copy a comment from FCameraFilmbackSettingsCustomization::OnPresetChanged saying “all SetValues except the last set to Interactive”, yet in fact pass the “InteractiveChange” flag to all SetValue calls including the last one.

[Attachment Removed]

Steps to Reproduce
Issue 1 - CineCameraSettings details customizations (preset combobox) don’t respect IsEditable for all fields

  • Create a subclass of UCineCameraComponent.
  • Override CanEditChange to return false (you can either only return false for some properties - e.g. LensSettings->MinFocalLength - or simply always return false, indicating no properties may be edited.)
  • Start the editor and open a details panel editing your subclassed component (e.g. by making an ACineCameraActor and changing the class of its camera component.
  • Note that the preset combo-boxes in the details panel are not disabled, even though changing the preset will attempt to edit properties that CanEditChange returned false for.
  • Set a preset using a combo-box that should be disabled, and note that an ensure fires (e.g. in FCameraLensSettingsCustomization::OnPresetChanged) because the attempted edit failed.

Issue 2 - CineCameraSettings details customizations (preset combobox) don’t apply presets for all fields

  • Edit a filmback preset (under project settings -> cinematic camera) to specify a non-zero SensorHorizontalOffset.
  • Select that preset on any UCinematicCameraComponent, and note that the chosen value is not applied.
    [Attachment Removed]

Hi! Sorry for the delays, and thanks for reporting this. I have a fix that should hopefully ship in 5.8 (it’s currently in review and testing). I can give you the Github commit link once it’s submitted if you want?

[Attachment Removed]

Sounds good, I’ll close this ticket then! Cheers.

[Attachment Removed]

Don’t worry about the commit, we’ll pick up the fix from 5.8 in due course. Thanks!

[Attachment Removed]