All Rust commits from Facepunch

Setup ToD toggles in code. TODO: ToD buttons on the canvas

New "Toggle triangle counts" button that toggles a text window underneath with tri counts broken down by Player, Viewmodel, Worldmodel, Entity, Total. Works with the currently toggled LOD

Allow freecam to go up/down using E/Q too (this is on top of existing leftshift/ctrl)

Ensure the viewmodel always spawns at a fixed location and not at wherever the orbit camera is currently

button to loop the selected animation

Character Animation and Skin Viewer scene now supports LOD toggles with new buttons

Fixed ironsights

Keep the viewmodel active in the world so it can be seen in freecam

Hold leftshift for faster orbit camera zooming

Fixed gestures and misc animations not working

Fixed all old controls now that we're using the new input system. Only allow freecam when we don't have any camera options toggled

Fixed player not spawning

merge from main
Don't run two cameras, it confuses the viewmodel camera system. Instead use one camera and reposition it to match the orbit camera, this matches the regular game behaviour of switching between the game camera and debug cam Marked some button lists as non static so domain reloads can be disabled, still has some issues

merge from main

Missed style file (rhyme time)

Change Image material on buttons so they all appear white

Dynamically load all gestures from `GestureCollection.Instance.AllGestures` and use their sprite for the button. Halved the looping time of looping gestures to 2.5f seconds. All gestures are working but the sprites can be improved

Set selection scrollview content to use preferred size to prevent being able to scroll beyond elements

Fixed button text that broke after merge
Invoke gestures with a gesture config, not a string Clamp the gesture list so the scroll doesn't feel bad
Merge from main

Simplify SwapCamera. Removed an orbit camera lock position. Reordered orbit camera lock positions to go to the player first

WIP orbital camera setup. Currently swaps cameras with pressing Q, Tab changes lock target, hold right click and use mouse to move orbit. Needs UI setup

Setup the rest of the player gesture animation buttons. Surrender and the dances don't work right now

Setup more anims: Viewmodel specific: manualcycle, dryfire, throw, use_self, use_other, use_other_wounded PlayModel specific: drop_item, pickup_item, drink, victory, wave

Only allow camera movement when the input field is not in focus

TODO comments for later around camera work

Move camera gradually using WASD/leftshift (up)/leftctrl (down)

Clothing is now equipped to the active viewmodel. Makes use of a new editor-only method to apply clothing directly from a list of ItemModWearable rather than using a BasePlayer to look at their equipped clothing. Run this method when equipping items and wearables so the viewmodel is always up to date. (Doesn't work with skins just yet)

Commenting

Added new FOV slider to the canvas to modify Camera FOV. Setup min/max values respecting regular gameplay FOV bounds. Includes "Field of View" text overlaying the slider

Renamed script in line with scene rename

Setup the existing positonal marker square images in the centre of the canvas so they can be toggled on/off with a new button. Shortcutted with `U`. Some code cleanup & commenting

Added the scene to SceneLoader so it appears in Editor scenes dropdown menu. Renamed scene to CharacterAnimationAndSkinViewer

Copied legacy script's Camera setup so ironsights ADS, screen shake and animation camera rotations work as expected

Fixed not being able to reselect most recently selected items/wearable after using the clear buttons

Added a clear selected item button (shortcutted with `I`) to unequip the player item, worldmodel and viewmodel

merge from main

Setup Animations button in the bottom left to open a collapsable scroll view. Works harmoniously with the Items and Wearables select collapsable scroll view - animations button forces collapse of select scroll view, items/wearables button forces collapse of animations scroll view.

Ensure the selected item viewmodel always has the same player skin as the spawned PlayerModel

Commenting

Fixed editor PlaySoundFirstPerson NRE when there isn't a local player. Added a Sound Manager to this scene so sounds work

Simplified how the scroll view is populated

Code cleanup and reordering

Fixed wearables being removed when selecting a new item

Code setup for new collapsable Items and Wearables selection. Each one is a toggle button that opens a scrollview and populates with items or wearables - replaces the old 2 separate scroll views, creating more screen space. Made the UI bigger. Removed old scrollviews and setup code

Setup new UI layout for tabbed collapsable item and wearable search. Code setup next
Update spawned viewmodel with same skin colour as preview model
Spawn a player model instead of a BasePlayer Spawn the associated entity via ItemModEntity and equip it via WorkshopPlayerPreview Turn the spawned player model 180 degrees Add an Image component to the button used in this scene and populate it with the item icon Codegen so that the static fields in this scene are handled by domain reload