Summary
It looks like v34.30 (maybe even v34.21) has broken the @editable
editor fields. The editor presents incorrect UI fields for many cases.
The outlined fields with yellow are incorrect.
The editor presents an asset field. Instead it should be a list of types like in the following screenshot for example.
Please select what you are reporting on:
Unreal Editor for Fortnite
What Type of Bug are you experiencing?
Other
Steps to Reproduce
- Use the
vz_anomaly_2
project (see private code below). - Add the
vz_*
prefixed components to the entity - Add at least one element to each array
Alternatively here’s a test code:
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
vz_test_abstract_editables_component := class<final><final_super>(component) {
@editable
EAbstract: vz_abstract
@editable
ESetAbstract: vz_abstract = vz_abstract_impl {}
@editable
EOptionalAbstract: ?vz_abstract
@editable
ESetOptionalAbstract: ?vz_abstract = false
@editable
EAbstractArray: []vz_abstract
}
vz_test_interface_editables_component := class<final><final_super>(component) {
@editable
EInterface: vz_interface
@editable
ESetInterface: vz_interface = vz_interface_impl {}
@editable
EOptionalInterface: ?vz_interface
@editable
ESetOptionalInterface: ?vz_interface = false
@editable
EInterfaceArray: []vz_interface
}
vz_test_concrete_editables_component := class<final><final_super>(component) {
@editable
EConcrete: vz_concrete_class
@editable
ESetConcrete: vz_concrete_class = vz_concrete_class {}
@editable
EOptionalConcrete: ?vz_concrete_class
@editable
ESetOptionalConcrete: ?vz_concrete_class = false
@editable
EConcreteArray: []vz_concrete_class
}
vz_test_non_concrete_editables_component := class<final><final_super>(component) {
@editable
ENonConcrete: vz_non_concrete_class
@editable
ESetNonConcrete: vz_non_concrete_class = vz_non_concrete_class { Number := 42 }
@editable
EOptionalNonConcrete: ?vz_non_concrete_class
@editable
ESetOptionalNonConcrete: ?vz_non_concrete_class = false
@editable
ENonConcreteArray: []vz_non_concrete_class
}
vz_interface := interface {}
vz_interface_impl := class(vz_interface) {}
vz_abstract := class<abstract> {}
vz_abstract_impl := class(vz_abstract) {}
vz_non_concrete_class := class {
@editable
Number: int
}
vz_concrete_class := class<concrete> {
@editable
Number: int = 42
}
Expected Result
EAbstract
,EInterface
,EConcrete
andENonConcrete
should present a field to set a proper verse type instead of a list of project assets.EAbstractArray
andEInterfaceArray
elements should behave the same way as described in previous bullet point.ESetOptional*
fields should sayNone
as the verse value is already set tofalse
.
Source of bugs:
ENonConcreteArray
Element should not automatically default theNumber
field to any value at all as it’s not being set in code.- No
@editable
fields that have no default value in code should automatically be set by the editor, ever. This should also apply to types which areconcrete
. This is a source of bugs as the editor will not remind the user that the value hasn’t been configured to a proper value yet. Instead the editor will silently fallback to a default value, which the user might forget to set manually, which is a big NO NO!
In the following screenshot we explicitly set the EOptionalNonConcrete
field, but we haven’t specified the Number
field yet.
The editor introduced a potential source for a bug here.
Observed Result
EAbstract
,EInterface
,EConcrete
andENonConcrete
are impossible to set.EAbstractArray
andEInterfaceArray
elements are impossible to set.ESetOptional*
shows incorrect value in the editor as if it was not set yet. However it is set tofalse
in code, which should beNone
in the editor and notSet to Value
.ENonConcreteArray
Element’sNumber
field should not be set at all.
Platform(s)
UEFN
Island Code
8188-2741-8846