1
0
forked from 0ad/0ad
0ad/source/tools
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
..
atlas Implement quality levels for actors & corresponding setting. 2021-04-08 07:22:24 +00:00
autolog/SVNLog Fix fileendings of files with mixed fileendings in the public mod (except art, l10n) and in source/ (except for source/third_party/). 2016-07-25 12:58:47 +00:00
cmpgraph Add script for generating mostly-useless component interaction graphs. 2011-01-07 20:31:48 +00:00
dist Fix *nix tarballs to extract in a subfolder. 2021-02-27 10:19:31 +00:00
entdocs Changes various urls to point to the new website and fixes some broken forum urls. 2012-12-11 23:04:03 +00:00
entgraph Fix line endings of all files in source/ except source/third_party/. 2016-07-25 09:07:45 +00:00
entity Fix checkrefs following D11 / 1c9efa6fb5 2021-03-06 13:57:11 +00:00
fontbuilder2 Port remaining python2 helper scripts to python3, fixes #5694. 2021-02-12 21:25:33 +00:00
i18n Add a 'debug' catalog & PEP8 the long string file 2021-03-01 16:37:33 +00:00
lobbybots Lobbybots: update readme to reflect mod_ipstamp being optional 2021-02-08 14:22:01 +00:00
mapcompatibility Fixes A19 map converter script to be compatible with Python 2 (uses struct instead of to_bytes and from_bytes) 2015-06-14 17:53:12 +00:00
openlogsfolder Fix line endings of all files in source/ except source/third_party/. 2016-07-25 09:07:45 +00:00
profiler2 Make Profiler2 configurable in visual mode. Non visual doesn't load the config so it's not possible. Also update the profiler2 page to be able to change the port 2020-12-07 08:11:23 +00:00
replayprofile Fix replayprofile/ graphing tool for Profiler1 2021-03-02 08:35:39 +00:00
rlclient/python Add an 'Evaluate' RL endpoint, intended for dynamic game balancing 2021-02-28 12:16:32 +00:00
springimport Make all Wildfire Games copyright headers consistent by always ending with a period and using (C) instead of (c). 2017-07-10 14:26:24 +00:00
templatesanalyzer Port remaining python2 helper scripts to python3, fixes #5694. 2021-02-12 21:25:33 +00:00
templatessorter Templates sorting utility. Closes #801. 2011-07-30 20:20:34 +00:00
tracelogger [SM52 1/2] Upgrade Spidermonkey build system and binaries to 52.9.1 2020-11-18 14:34:17 +00:00
webservices Fix line endings of all files in source/ except source/third_party/. 2016-07-25 09:07:45 +00:00
xmlvalidator Fix checkrefs following D11 / 1c9efa6fb5 2021-03-06 13:57:11 +00:00
LICENSE.txt Split XpartaMuPP and EcheLOn into separate directories and rename parent folder to "lobbybots" following 5e643ba6be. 2018-11-07 17:23:56 +00:00