🎮 Game

Library for in-world interactive UI screens. It renders a UI Panel to a texture, maps it onto a model surface, raycasts to find UV and cursor position, and routes mouse input to the panel. A TargetPanelSystem tracks screens, handles culling and focus, and a PanelSceneObject draws the panel into a render target with optional cursor and mipmaps.

🔧 Editor

An editor utility that lets a developer pick a ScreenPanel-derived type in a property drawer. It scans loaded types for non-abstract subclasses of ScreenPanel, shows them in a combo box, and writes the selected type’s full name back to the serialized field.

🧪 Unit Test

Unit tests for the PanelRenderTarget library. The tests spin up a Sandbox.TestAppSystem for the run, create a Scene and a GameObject, and assert the scene directory reports one object. This is a small sanity check that engine setup and scene bookkeeping work under the library’s context.

🐞 Possible Bugs

Code/ui/Example.razor
OnMouseMove never assigns MousePosition, so the displayed position and the cursor style stay at 0,0.
ui/Example.razor
BuildHash calls StateHasChanged, which forces a re-render during hash computation and causes continuous re-rendering.