# TODO ## General - [ ] use matrix thing for UVManager (linear algebra is hard) - [ ] Add action wheel icons - [.] add separate function for updating relevant state variables instead of sending full state to save bandwidth - [ ] add function that gets total health with absoprtion - [ ] retractable wipers when it rains - [ ] avatar themes?? (AvatarAPI.getColor) ## Rewrite - [.] fix data api - [.] ConfigAPI - [.] reimplement avatar settings - [ ] fix sound - [ ] fix Blockbench animations - [.] fix or disable custom commands (can probably use `/figura run`) - [ ] fix armor, won't re-enable until cleanup ## Cleanup - [ ] Rewrite state management and synchronization code to be less horrifying - [ ] one library for syncing state - [ ] sender side: allow syncing entire state (EXPENSIVE) or just single values - [ ] internally map variable names to a number deterministically to reduce unnecessary data transfer i.e. t["this_is_a_very_long_but_readable_variable_name"]=42 -> t[6]=42 - [.] use a lookup table/array based on order added - [.] user should never see this, variable name to number translation should be completely transparent - [.] alternatively no manual syncing; state should be implicitly "shared" and can only be written to/read from via functions to prevent bad programming from desyncing state - [.] receiver side: register handler function that has access to both old and new state - [.] receive value -> run handler function -> replace old value with current - [ ] i think figura has a shared storage thing but it's not real time, mirror values to this so newly initialized players load with correct state - [.] one library for storing configs and their default values - [.] this will insert values into the shared state using the other library - [.] potentailly rework shared state variables - [ ] rework appropriate action wheel items as ToggleAction instead of ClickAction - [.] split off large snippets of code into separate files - [.] PartsManager - [.] UVManager - [.] utility functions - [ ] cleanup tick functions, timers - [ ] cleanup armor code to make less redundant # Low priority - [ ] reimplement partial vanilla as texture swap - [x] remove partial_vanilla stuff from PartsManager - [ ] fix UVManager with matrices or something - [ ] add swap to skin texture # Done - [x] fix pings - [x] fix action wheel