Some icon/ability combinations on locations results in duplicate connections. The connection logic was parsing this as both a bidirectional and one-way connection, resulting in a one-way being drawn when it shouldn't be.
This adds a simple check to recommit an existing bidirectional connection, rather than drawing a new one-way for it.
- Fixes a timing issue which would cause shadow lines to appear when hovering on a snap point
- Fixes a missing nil check that would cause errors during onUpdate if the card had no connections
The events which can indicate a drag stop are varied:
- Drag a card into another on the table (tryObjectEnterContainer)
- Drag multiple cards into another on the table (onCollisionEnter, tryObjectEnterContainer)
- Group multiple cards while holding them (tryObjectEnterContainer)
Previously the entire location map was being rebuilt and redrawn in onUpdate() during a drag operation, including the connectors which weren't changing. This was causing notable lag on some systems.
This splits the draw operations into two separate pieces - locations on the board which are unchanging, and locations which are being dragged. This allows only connections which are actually moving to be recalculated.
Since TTS only allows a single list of vector lines per object the dragged lines are now set on the cards themselves rather than the PlayArea. This may possibly improve performance in itself, by keeping each list of vectors smaller. Supporting this required some changes in how pre-built connections are handled.
The excluded scenarios have very complex connection limitations beyond what's on the cards; we should handle them eventually, but for now we just don't draw the connections for those scenarios.
Based in the newly-named Mythos Area, when a Scenario card lands the name will be extracted and sent to interested objects.
Playarea will use this for special location handling, and there will be other cases in the future.
Creates an API object for the PlayArea, and moves most references to the PlayArea to use the API instead.
Image swapper is excluded on this, as I'm not completely sure how TTS will handle having an object rebuild itself.