uni-bremen-agst / SEE

Collaborative Software Visualization with SEE (Software Engineering Experience)
https://see.uni-bremen.de
MIT License
19 stars 3 forks source link

Integrate Language Server Protocol functionality into Code Cities #747

Closed falko17 closed 3 months ago

falko17 commented 3 months ago

This PR integrates LSP-based information and functionality into SEE's code cities. It is the second of three parts of my master's thesis.

LSP integration

Specifically, the following LSP-enabled features have been implemented for code cities:

Major additional changes

Tooltip

The Tooltip class has been refactored in two major ways:

  1. The tooltip is now a singleton (there will never be more than one tooltip on screen).
  2. The tooltip will work as tooltips would work in other traditional GUIs. That is, the tooltip will disappear when the mouse is moved, and will re-appear when the mouse is kept still for a certain amount of time. The tooltip will stop appearing when the mouse leaves the region of interest.

Label

The label (ShowLabel) is now shown at the position of the laser pointer, instead of in the middle of the node. This has the advantage that the label is more easily readable (the center of the node might be off-screen) and also that the node-related information is visually close to each other if the node also has a tooltip.

To this end, I've added a custom shader that combines the portal functionality with an overlay modifier which makes sure that the label is always shown in front of other objects (otherwise, the label may clip into a nearby node). I have moved this shader and the portal shader out of the TextMeshPro plugin directory and into SEE's resources folder, as they are custom-made for SEE and not part of the original TextMeshPro release.

Minor additional changes

koschke commented 3 months ago

There is only one unresolved comment left regarding the CI not catching the TODO without issue reference. I will approve once that is fixed.