a much more important feature than they were two years or something ago, and
it's helpful for debugging and exploration to get this important node property
shown in property tree dumps or in the property browser (verbose mode).
in with readProperties() would not look the same, because element indices
of '0' were even dropped when a node has a "secret" value *and* children
- introduce "omit-node" modifier attribute for the "include" attribute.
This inserts the given file in place of the including node, while the
node is dropped. This is desirable for multiple includes (which can't
be done by multiply using the "include" attribute, as this isn't valid
XML spec syntax)
- fix bug that messed up leg distances after inserting and deleting waypoints
not at the end of the route
- move add_waypoint() and delete_waypoint from hxx to cxx
- beef up routetest
that had been told that this node is linking to them
mf: remove old erase-by-key methods; they are now unused and always were
problematic, so they won't be used in the future either
- remove bad code from hash_table::bucket::erase(const char *) that was
introduced with the last patch. (This function isn't used anywhere and
is scheduled for removal. Leaving it in for now as a reference.)
- remove leaves first in remove_from_path_caches()
- cosmetics: indentation, one trailing space, variable name change, comment
(Sorrry for mixing that with actual code, but I think it's easy to see.)
"""
- make every node maintain list of properties that link to it
- add functions to erase node by address from hash bucket/entry in their
path caches, so that all references can be removed
- if a node is removed, it (and all children, grandchildren, ...) calls
all linked properties to remove them from their path-cache
This fixes problems with the aerotow over multiplayer and maybe some
other problems, where nodes are queried by name.
"""
<model>
<path>some/model.xml</path>
<condition>
<property>model/switch</property>
</condition>
</model>
Of course, one could add "select" animations for all <object-name> in the
<model>, but this is tedious and can hardly be done e.g. for all
objects in all instruments in $FG_ROOT/Aircraft/Instruments-3d/ etc.
The feature will be used in the bo105, so that civilian variants can
have a HSI instrument, where military variants have a TACAN etc.
- // the current item each time. Is
- // that OK?
No, it is not OK. This messes up the vector and confuses the iterator.
And it leads to crashes. Better read the vector in reverse order.
("In member function 'T SGPersonalityParameter<T>::shuffle()':
28: error: there are no arguments to 'sg_random' that depend on a template
parameter, so a declaration of 'sg_random' must be available")
specify the same texture in the "foo.lighted" and "foo.unlighted" material
entry. This also allows to drop the state cloning and thereby solves the
most urgent apt_signs.cxx TODO. :-)
states from material.xml (separate <material> entries for now)
- clone state less often: not once per sign element, but once per material
switch (TODO: clone only once per material)
got plib's lowres red-white chequer-board pattern along with an error
message, and not ours ... which is much prettier, but also bigger.
(Should we downscale it?)
- add commands @size, @material, @light
- make "BlackSign" texture default
- make @B, @R, @L, @Y open close their frames automatically (this can be
avoided by setting the @material manually)
- add number variants for those 4 sign commands: @Y2, @B5, etc (according
to the spec; defaulting to the respective biggest panel size, i.e. @B = @B3)
(detailed description will be added to $FG_ROOT/Docs/)
but contain <glyph> entries with <name>, <left> and <right>. The latter two
describe where in the texture a letter or symbol begins and where it ends.
(range 0-1). <xscale> defines a horizontal scaling factor.
from provided node
"* minor redundant gl call in DrawCone2 optimized away (twice per frame)
* corrected the glRotatef() order in drawRain even further (a less
obvious mistake than before, which is noticed by looking skywards and wiggling
the mouse in the view direction change mode)
* all the "magic numbers" used in the rain rendering code have been
provided a default (based on the old hardcoded value) in a form of a
define, and a meaningfully named static member in SGEnviro"
(We are currently getting a lot of aborts in the condition code when
running MP. I don't expect this to fix it, but a bug is a bug.)
(reviewed by Fred, who also fixed *my* bugs :-)
add abstract class SGModelData. If a pointer to such a class is handed over
to sgLoad3DModel, then its modelLoaded() method is called with path, property
node and branch. And then it's added to the scene graph so that it's
destroyed when the model branch is removed from the graph.
modellib.[ch]xx:
only cache objects when asked to. This is the case for OBJECT_SHARED
and random objects (like before), but no longer for OBJECT_STATIC.
These are now removed from the graph when they are "out of sight". This
prevents accumulation of static models, and makes destroying model data
possible (e.g. removing Nasal modules)
matmodel.cxx:
set cache flag for random objects (same behavior as before)