to the pole and horiz pole check routines, in case they need
their own, custom checking routines, if the usual, simple
checks aren't good enough.
got rid of the allowed-poles table, as it's now obsolete
moved all existing special code into compat.lua, altered to
use this feature.
Treat T-junction as a vertical or horizontal pole (depending
on its orientation), if the sign could be placed flat against
the back or side of the junction.
In this instance, the "front" of the junction is the side with
the middle bit sticking out, and will just get a regular wall
signif targeted, as with any non-pole node.
(both wooden and steel signs)
only streets mod's "bigpole" supported for now.
Model changes:
To make a sign support horizontal mounting, make a single "_onpole"
model, with two copies of the pole mount, one rotated by 90°. Make sure
the second copy appears has its own material entry, and that it is last
in the materials list in the exported .obj (`grep "g " file.obj` to
check).
When registered, signs_lib will set the "_onpole" and "_onpole_horiz"
tiles{} to reveal one mount or the other: entry 3 will expose the
vertical mount, entry 4 is the horizontal copy, with the opposite entry
being set to the "blank" image.
Placing a "wallmounted" sign onto a streets lamp would cause a
weird rotation if you're pointing downward too far. Now it
enforces NESW direction according to your yaw.
Also fixes bad orientation when you're really close to a post.
* combine rotation functions -- one no longer needs to choose
a particular rotation function for the node's paramtype2,
it'll figure it out automatically.
* fix glitch in wallmounted rotation
* re-order rotation facing order to N, E, S, W, floor, ceiling.
* limit yard sign to simple NESW-only rotation
* allow rotation of hanging signs (NESW only)
* allow rotation of signs on poles/posts if there's nothing in
the way of where the sign has to move to (NESW only).
minor re-factor as needed for that
don't store entities statically, let the LBM generate them.
this works around Minetest's reload-positioning inaccuracy at very large
positive or negative X/Z coords (tested -18000/+18000 at all four corners,
both new signs and after reboot)
if available on a given sign. The sign must have a
"foo:bar_widefont" variant, with the horizontal scaling set
appropriately (about half of the normal value for the
narrow-font sign)
Add new corresponding API to anto-generate those signs where
desired; use this feature in default wood and steel signs
(see api.lua and standard_signs.lua for examples)
make selectionbox call now ignores the old onpole flag (it's automatic now)
removed debug print()'s
moved the signs-on-fences lbm settings to here, from basic_signs.
some misc cleanups
added reference models for standard wooden sign ("wallmounted" on wall,
"facedir" on wall, and pole-mount variants, using standard-size pole
mount), and a separate .blend with street_signs' OM3 sign on slim pole
mount.
Any sign can now use a 15 or 31 px font, at any reasonable visual scale,
line width, number of lines, etc.
Split most signs off into a separate mod, basic_signs, which depends on
this one. Only the default minetest_game wood and steel signs remain in
signs_lib, completely redefined. The wall/yard/ceiling function for
wooden signs has been rewitten and moved to basic_signs, too.
signs_lib can now put almost any wall sign onto almost any kind of
posts/fence, as with most signs in my street_signs mod. Mods can add
their fences/posts to its "allowed" list, if needed (signs_lib tries to
detect most kinds of suitable fences, poles, posts, etc).
All signs affected by these changes are similar to what they've always
been, for continuity. The main difference is that they all use a 15px
font now, with a slightly larger scale, and the positions of some have
changed slightly.
Dropped the old "@KEYWORD" feature (but it could be re-added if it turns
out to be needed), and most of the old cruft like "|" for line breaks.
Created new wood and steel sign textures, derived from HDX.
See standard_signs.lua for examples of how the new API is used. The
"standard" text sizing/position/etc. variables are all at the top of
api.lua.