Facepunch / Rust.Community

Community Entity to fill Server Side modder requests
MIT License
46 stars 21 forks source link

Add ability to move client UIs from the server side #33

Open nthxny opened 2 years ago

nthxny commented 2 years ago

Hello, I see this repository is getting attention again, which is fantastic. I'd like to offer a contribution, as I operate a server that depends heavily on complicated server-sided UI like the following:

The primary thing I'd like to see is the ability to move UI elements across the screen, optionally animating them in the process. This would allow for much more responsive and fluid interfaces, and less garbage on the client and server (as I'd have to send less duplicate UIs).

Unity can do this pretty easily just by changing the RectTransform anchors, so I've added an RPC to start a coroutine to move the UI to a target position on the client. Also added ease-in, ease-out, and ease-in-out easings with a duration to make it smoother.

Currently takes the following JSON packet, a list of MoveUI requests that it will parse all at once:

[   
    {
    "name": "TestPanel7766",
    "anchormin": "0.5 0",
    "anchormax": "1 1",
    "duration": "0.25",
    "easing": "in-out"
    }
]

Due to the nature of this repo, I had to test in an empty Unity project. AFAIK it should work fine, panels with children animate correctly, but I'm unable to test some components, and can't test the function over RPC/in game.