View Issue Details

IDProjectCategoryView StatusLast Update
0005546DarkRadiantRendererpublic05.03.2021 05:01
Reporterorbweaver Assigned Toorbweaver  
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Version2.11.0 
Target Version2.12.0Fixed in Version2.12.0 
Summary0005546: Attached light radii are the wrong colour if "Override light volume colour" is active
DescriptionWhen "Override light volume colour" is set in the Colours dialog, regular light radii appear the correct colour as specified by the colour scheme, but (most) attached light radii show as green.

This is because the attached light entities are subclasses of "light", and the colour override system only matches by exact classname rather than following inheritance. As a result, the light entities take their colour from the "editor_color" spawnarg rather than the overridden colour stored by EClassColourManager.
TagsNo tags attached.

Activities

orbweaver

orbweaver

25.02.2021 20:33

developer   ~0013729

Fixed in 163b15487b80ceda5af832e4aad438fadce01497

Related Changesets

DarkRadiant: master 39d5000a

2021-02-24 20:27:16

orbweaver

Details Diff
0005546: add failing test to capture issue

OverrideEClassColour test confirms that adding an override for 'light'
correctly changes the colour of 'light' itself but not its subclasses.
Affected Issues
0005546
mod - test/Entity.cpp Diff File

DarkRadiant: master aeffec9e

2021-02-24 20:48:45

orbweaver

Details Diff
0005546: add passing test for entity attribute inheritance

Confirm that an entity class can inherit attributes from its parent class
(there is already a test for inheritance of spawnargs on an actual entity).
Affected Issues
0005546
mod - test/Entity.cpp Diff File

DarkRadiant: master 9694cb37

2021-02-24 21:12:17

orbweaver

Details Diff
0005546: entity class inherited attributes no longer copied

Instead of copying all attributes from the parent class at the time inheritance
in resolved, which wastes resources and discards information about which
attributes were inherited and which were defined explicitly, we now dynamically
query the parent class in forEachClassAttribute() and getAttribute().
Affected Issues
0005546
mod - radiantcore/eclass/Doom3EntityClass.cpp Diff File

DarkRadiant: master 163b1548

2021-02-25 19:51:41

orbweaver

Details Diff
0005546: attached light entities now correctly coloured

Rather than rely exclusively on the possibly-inherited editor_color spawnarg,
entity classes now check this spawnarg only at their own level, then
recursively delegate to their parent class's getColour() method. This ensures
that colour overrides (which are implemented in terms of setColour/getColour)
propagate to child classes.
Affected Issues
0005546
mod - include/ieclass.h Diff File
mod - radiantcore/eclass/Doom3EntityClass.cpp Diff File
mod - radiantcore/eclass/Doom3EntityClass.h Diff File
mod - test/Entity.cpp Diff File

DarkRadiant: master 7dbe8cfb

2021-03-01 20:54:34

orbweaver

Details Diff
Remove broken EntityClassAttribute::inherited flag

Ever since the fix for 0005546 eliminated copying of inherited attributes from
parent entity classes into their children, the 'inherited' bool was rendered
useless, which in turn broke certain functionality such as the colour-coding of
inherited spawnargs in the EClassTree.

The inherited flag is now removed entirely from EntityClassAttribute, and
replaced by an extra bool passed to the AttributeVisitor when visiting entity
class attributes.
Affected Issues
0005546
mod - include/ieclass.h Diff File
mod - libs/eclass.h Diff File
mod - plugins/dm.stimresponse/SRPropertyLoader.cpp Diff File
mod - plugins/dm.stimresponse/SRPropertyLoader.h Diff File
mod - plugins/script/interfaces/EClassInterface.cpp Diff File
mod - radiant/ui/eclasstree/EClassTree.cpp Diff File
mod - radiant/ui/eclasstree/EClassTree.h Diff File
mod - radiant/ui/eclasstree/EClassTreeBuilder.cpp Diff File
mod - radiant/ui/einspector/AddPropertyDialog.cpp Diff File
mod - radiant/ui/einspector/EntityInspector.cpp Diff File
mod - radiantcore/eclass/EntityClass.cpp Diff File
mod - radiantcore/eclass/EntityClass.h Diff File
mod - radiantcore/entity/SpawnArgs.cpp Diff File
mod - test/Entity.cpp Diff File

Issue History

Date Modified Username Field Change
24.02.2021 20:07 orbweaver New Issue
24.02.2021 20:07 orbweaver Status new => assigned
24.02.2021 20:07 orbweaver Assigned To => orbweaver
25.02.2021 20:33 orbweaver Status assigned => resolved
25.02.2021 20:33 orbweaver Resolution open => fixed
25.02.2021 20:33 orbweaver Fixed in Version => 2.12.0
25.02.2021 20:33 orbweaver Note Added: 0013729
05.03.2021 05:01 orbweaver Changeset attached => DarkRadiant master 39d5000a
05.03.2021 05:01 orbweaver Changeset attached => DarkRadiant master aeffec9e
05.03.2021 05:01 orbweaver Changeset attached => DarkRadiant master 9694cb37
05.03.2021 05:01 orbweaver Changeset attached => DarkRadiant master 163b1548
05.03.2021 05:01 orbweaver Changeset attached => DarkRadiant master 7dbe8cfb