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.