1
0
forked from 0ad/0ad
0ad/source
wraitii 76acc4e146 Implement quality levels for actors & corresponding setting.
An actor file, as referenced by the VisualActor, can now define
different actors for different "quality level" setting.
In this initial version, the quality is handled directly by the object
manager.

Actor format impact:
- '<qualitylevels>' may be used as the root node, containing actor nodes
as children.
  - such actor nodes can refer to a file, or to an inline actor, or
simply be inlined.
  - such actor nodes may have a 'quality' attribute, specifying the
maximum quality level of this actor. By default, 255 (the maximum) is
implied.
- The actor format remains valid, but 'groups', 'variants', 'material',
'castshadow' and 'float' can be given a [minquality, maxquality[ range
via XML attributes. Outside of this range, the XML node is ignored
(making it possible to define, in a single actor file, several quality
levels).

Quality is a 0-255 value, with:
- Range 0-99 intended for lower level-of-detail actors (billboards,
etc.)
- Range 100-200 the 'normal' range for models. 100 is "low", 150
"medium", and 200 "high".
- Range 201-255 used for higher quality actors that might be used for
e.g. cinematics.
The range is wide to make it easier to add intermediate levels in the
future and it seemed easier given that an integer value of some kind was
required anyways.

Engine impacts:
- A new CActorDef class is introduced, wrapping an art/actors XML file
and its different quality levels. ObjectBase remains the definition of a
given 'actor', now at a given quality level.
- CActorDef imposes a maximal # of quality level for a particular actor
definition (5 currently).
- CUnit is made to refer to an Actor Definition explicitly, not a
particular ObjectBase.
- As a minor optimisation, variation keys are calculated on
pointer-to-sets-of-selections, instead of raw sets-of-selections, as
this reduces copying.
- some refactoring, including better const-correctness and hotloading
support via std::shared_ptr.

Differential Revision: https://code.wildfiregames.com/D3787
This was SVN commit r25210.
2021-04-08 07:22:24 +00:00
..
collada Refactors smart pointers creation, reduces code duplication and improves exception safety. 2021-02-13 23:53:40 +00:00
graphics Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
gui Further hotkey work: clear hotkeys when an input box/the console gets focus. 2021-04-03 20:12:40 +00:00
i18n Moves CreateDateTimeInstance from the public L10n header to its implementation. 2021-03-12 09:11:22 +00:00
lib Fix console not preventing hotkeys from firing / Clean up hotkey-input conflict. 2021-04-02 14:18:20 +00:00
lobby Fix typos in log and warn messages 2021-03-10 16:50:15 +00:00
maths Moves CRect from ps to maths to related geometric primitives. 2021-03-30 21:14:36 +00:00
mocks More FreeBSD build fixes. 2012-01-30 06:21:11 +00:00
network Remember OOS on a per-client basis. 2021-03-31 15:55:19 +00:00
pch Further header & precompiled cleanup, fix no-PCH builds. 2020-12-09 14:39:14 +00:00
ps Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
renderer Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
rlinterface Increase MP Command delay to 4 turns, decrease MP turns to 200ms. 2021-03-03 21:02:57 +00:00
scriptinterface Replaces CPos by more a consistent CVector2D, reduces geometry code duplication. 2021-03-28 21:55:13 +00:00
simulation2 Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
soundmanager Fix compilation with --without-audio 2021-03-04 17:36:24 +00:00
third_party Optimization for include resolving in PreprocessorWrapper. 2021-01-20 23:05:15 +00:00
tools Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
main.cpp Make real directory paths on the VFS predictable (retry) 2021-03-23 12:46:59 +00:00
test_setup.cpp Introduce C++ templates replacements for DEFINE_INTERFACE_X and RegisterFunction macros 2021-03-01 20:52:24 +00:00