Files
WoWee/tests
Kelsi ca30409df0 fix(m2): rigid props swayed because a foliage token matched inside another word
The Stranglethorn Vale troll ruins sway like trees because "thorn" is a
foliage token and it sits inside "Stranglethorn". Every StranglethornRuins
piece, and the cliff rocks with it, was classified as foliage and handed to
the wind shader.

Foliage tokens have to be matched as substrings — model names run words
together with no separator, so StranglethornFern01 would not match on a
word boundary — and that is what lets a short token land inside an
unrelated word. An audit of every M2 in the data turned up the same fault
well beyond the reported one: "corn" inside Corner put wind on wall and
arch corners, "hops" inside ShopSign on shop signs, "tree" inside
StreetSign on street signs, "crop" inside Outcrop on rock outcrops, "herb"
inside Herbalism on profession signs, "vine" inside DivineShield.

A list of exceptions would not hold, so rank the matches instead. These
names are head-final compounds — the last word says what the model is — so
the match ending furthest right wins, with a longer token taking a tie at
the same end position, which is how "corner" beats the "corn" inside it.
StranglethornRuins is then a ruin while DustwallowTree, StoneTree and
DeadwindPassRockTree stay trees, none of which a veto list would have
managed. 73 models stop swaying; no plant loses its wind.

isFoliageLike also drives collision and animation, so these props were
walk-through with their animation disabled as well.
2026-07-31 14:09:40 -07:00
..