Instead of each CCmpVisualActor rendering itself individually, collect
all the units in a single CCmpUnitRenderer. This avoids the overhead of
doing Interpolate/RenderSubmit calls every frame for every object in the
world. It also allows more efficient culling.
CCmpUnitRenderer knows the positions of each object at the start and end
of each turn, and computes the bounding sphere of the object along that
path. That allows quick culling without recomputing the precise
interpolated transform every frame. (In the future it could be improved
much more.)
Clarify and clean up the sending of PositionChanged messages, and add
new InterpolatedPositionChanged.
Remove the forceFloating parameter from GetInterpolatedTransform, since
it doesn't fit the new design. Replace it with a (non-synchronised) flag
in CCmpPosition.
Move construction progress from CCmpVisualActor to CCmpPosition, so that
it consistently affects all position/transform computation.
Refs #2337.
This was SVN commit r15265.
Deserialize SYSTEM_ENTITY before any other entities. This makes it safe
for Deserialize() methods to access system components (mirroring how
Init() can already access system components).
Add a Deserialized message, sent after all entities have been
deserialized, to help with some other sequencing problems.
This was SVN commit r15264.
This allows component Init functions to make use of the terrain
immediately, instead of delaying some computations until the first
frame.
This was SVN commit r15262.
BoundingSphere is similar to a bounding box, but more spherical.
SOverlaySphere is useful for visualising BoundingSphere (it's quite
inefficient and should only be used for debug functionality).
Normalise the camera frustum clipping planes, so that IsSphereVisible
gives the correct result.
This was SVN commit r15261.
For unknown reasons, sometimes glTexSubImage2D acts as if
GL_UNPACK_ALIGNMENT = 2 or 4, instead of 1. This causes the odd-sized
array uploaded for the LOS texture to be interpreted incorrectly, and
the LOS texture gets rendered very incorrectly.
Pad the array to a multiple of 4 in all cases, so that
GL_UNPACK_ALIGNMENT shouldn't affect it.
Hopefully fixes#2594.
This was SVN commit r15216.
This allows for components to be extended in other files, so mods don't
have to overwrite entire components.
Fixes#2517. Thanks to Rada for helping on this
(also fix some tests broken in the previous commit)
This was SVN commit r15150.
You can now enable tinygettext’s output from the user.cfg file
(tinygettext.debug).
This enhancement also solved a warning due to the previous workaround,
which was
to uncomment the output line to avoid the debug messages.
This issue was reported by Yves at Github:
https://github.com/leper/0ad/issues/10
This was SVN commit r15002.
The ‘l10n.js’ global JavaScript file already defines this function as
markForTranslation(),
and defines a context-aware twin function as well. Those two functions
are the only ones
currently used in the mod code (as it should be), and there are no
remaining calls to the
engine for that.
This was SVN commit r14998.
The tests crashed on my Debian systems but not on my Ubuntu system.
The crash happened in line 142 of SpiderMonkey's ThreadLocal.h.
I know that I had to use a workarounnd for contexts to avoid destroying
the context that was created first. I also had in mind that in newer
versions a JS_Init function got introduced which presumably solves this
kind of issues.
Based on this experience I assumed runtimes could have a similar problem
and this patch indeed fixes the issues.
Unfortunately the correct usage of JSRuntimes in that regard is not
documented.
There's only a rater misterious comment in JSAPI.h which hasn't been
cleared up so far and is most likely completely outdated
(https://bugzilla.mozilla.org/show_bug.cgi?id=992641).
This was SVN commit r14995.
In order to do so, I had to extend the XML message extractor to support
using XML tags as context.
This is because one of the ranks is “Advanced”, which is a pretty common
string.
This was SVN commit r14986.
Reported by JoshuaJB at Github: https://github.com/leper/0ad/issues/27
Fix provided by l777 (who I believe to be leper but I don’t really know)
on IRC.
This was SVN commit r14985.
Fixes random crashes on Windows due to differences of STL types on the
binary level between different static libraries.
The differences are caused by the definition of _HAS_ITERATOR_DEBUGGING
and _SECURE_SCL in lib/precompiled.h.
All our engine static libs use precompiled headers but we didn't use
them for tinygettext because they aren't needed (except for these two
defines).
I've decided to add precompiled headers to tinygettext too instead of
just copying these defines. That should cause less headaches in the
future.
This was SVN commit r14983.
• You can now translate “The production queue is full”.
• Internationalized the “Pause” and “Resume” buttons. Only the initial
label was internationalized, it would switch to English as soon as you
pause the game for the first time.
• Internationalized the “Screenshot written to” message in the engine.
This was SVN commit r14968.
In 1b3261b8f4 empty text files were committed instead of the libs.
The text files had svn:eol-style properties set and the mime-type was
text.
This removes the eol-style properties, changes the mime type and addes
the content of the files.
This was SVN commit r14959.
It includes the translation template files (POT) as well as translation
files
(PO) developer through the Transifex platform by our awesome
translators.
It also includes tools to generate the translation template files,
generate a
special translation file with the longest strigns of all translations,
and a
tool to download translations from Transifex into the right game folders
automatically.
Fixes#67
This was SVN commit r14955.
It includes a marvelous language selection menu developed by Yves.
It also includes the introduction of a sprintf implementation for
JavaScript, as well as
translation helper functions that use JavaScript-side translation
caching.
This patch includes code by Yves, sanderd17, leper and Gallaecio.
Ref #67
This was SVN commit r14954.
Provides the logic to detect the system language, load translations, and
use
loaded translations both in the C++ and the JavaScript side.
This patch includes code by Yves, sanderd17, leper, historic_bruno and
Gallaecio. It’s worth noting that Yves and historic_bruno were also the
main
contributors behind the changes in 1b3261b8f4 as well.
This was SVN commit r14953.
This commit contains all the required changes to our source files and
build scripts (hopefully).
A next commit will remove the old stuff of SpiderMonkey 1.8.5.
Spcial thanks to:
- H4writer who helped a lot mainly with the performance issues we
had/have, but also with other problems or questions.
- Leper for the review.
- Historic_bruno for implementing the build scripts on Mac OS X and
testing on the Mac.
- The people from the #jsapi channel and from
mozilla.dev.tech.js-engine who answered a lot of questions and helped
solving problems.
- All the other people who helped
Refs #1886Fixes#2442Fixes#2416
This was SVN commit r14877.
This problems occurs with the new SpiderMonkey in debug mode, but it's
not a SpiderMonkey issue.
Unfortunately I couldn't find a clean solution, so I just documented the
problem in an extensive comment block and applied a workaround.
A clean solution would probably require changing the approach for
counting allocations completely.
This was SVN commit r14874.
* Replace DejaVu with Biolinium for the existign sans-styles.
* Add additional sans-styles using Biolinum.
* Update the GUI style definitions to use the sans-styles instead of
serif styles.
(Wait with updating custom defined fonts in strings, as it will cause a
mess with the internationalisation that's about to be included)
* Add fonts from the quite complete FreeFont family as fallback fonts.
* Render all glyphs supported by the different fonts to support as many
scripts as possible.
* Fixes#2457.
(Now hope I included all needed files)
This was SVN commit r14853.