# where did I leave off?
-Creating proxy geo

-Character Sets

# UI
-Need a way to save settings. This includes:
    Proxy Gen:


    Rig Gen
    -Create Single Hierarchy Settings

    Rig Rebuild:
    -All rebuild settings

Steps:



# TODO
Proxies
# BUG - after renaming a module, the UI needs to be refreshed otherwise it is still using the old name



# # # # Rig

# Spline
-missing auto volume for spline joints

# Limbs
-missing top twist joint that inherits no twist
-mid2 joint needs the same draw style as the other joints (observed in toon limb)

the scale_grp in the build_rig_grp() is not being oriented correctly.
^ scale grp is constrained in the RRM2


RRM2 line 10330

-Character Sets and selection

# # # # Rig Rebuild

# # # # Control Settings
Pose Rig
# TODO if orienting the ik or fk limb controls with the orient to world, prompt the user if they want to match fk/ik

# # # # Joint Settings


# # # # Spline
# spline_shapes.py is not used anywhere?
figure out why the controls are not aligned properly in the rrm3_legs_04 file
-fixed by putting rotate order before constraints and using parentConstraint instead of orientConstraint

# Arms + Legs- RRM2  code: 5645 lines/25784 lines -- RRM3 code: 3458 lines
# TODO create a chain for the leg/arm with extra elbow/knee for the auto-aim to follow, instead of using an aim constraint
-a bit of drift in the ball joint when rotating the ball ik control


# fk chains RRM2 code: 1667
# TODO add an option for ik to lock end joint to end control


# head RRM2 code: 321

# look-at's RRM2 code: 439

# auxiliary  RRM2 code: 267

# head
- change the eye socket to have a global follow for vertical and horizontal follow
-add groups (one for vertical, one for horizontal) that are constrained between the eye socket and the eye lookat
- use the follow group to drive each eyelid. Use the rotational value from it. Need an extra group above each eyelid
that matches the follow group. And then multiply the local eyelid control's follow values x the global's


# TODO eyes

# TODO eyebrows
Rig - template the nurbs curves, hide the macro curve
# TODO forehead joints. Use same number as eyebrows -default to follow 50% of the eyebrow. Maybe average out among all?

# TODO eyelids
-"eyelid row" joints to help fan the closed eyelid need SH Joints

# TODO Cheeks
-add settings for having the mouth corners affect their location

# TODO lips
Rig sticky lips. Working ok. May need to add more to each individual joint so that there is a sharper stickiness
Rig-mouth shape gets weird when the jaw angles. May need to have the wire joints move 50/50 along the x/z plane between
 the head and jaw
Rig - template the nurbs curves, hide the macro curve

# TODO tongue
-Tongue is good.


add inherit twist to the offsetCtrl's

# auxiliaries


# bridge
# TODO: validate that any new attachment is not a child or branch of itself and cannot attach to the mirrored one
# BUG: -joint orientations are wrong on the bridges

#TODO: add shape swapper

#TODO: curveless setup
create a popout UI, like the matching fk proxies UI
-name filtering
-add/replace/clear radio buttons
-scroll list
-each control has a row. Users can load selected face, or autofill based on face proximity. Copy/paste and select faces and select control
-face gets duplicated. if geometry is skinned, use a wrap, otherwise constrain
-button to autofill all face fields
-needs an offset slider for the duplicate face
-faces shape gets parented to the control
-need a toggle on the main control for switching between curve/mesh/both control style. If there are no faces, keep curves on
-select all faces that are loaded
-select faces loaded more than once
-colors? -probably just use the same colors as the controls

--------------------------------------------------
Selector UI

# TODO: reset button color

# tabs --
# TODO: Change order of tabs

# TODO: Add a red border around the ui when in edit mode, and to the toggle button to broadcast to the user which mode they are in

# TODO: When adding buttons to a tab, prompt user if the buttons already exist
# TODO: Figure out why multiple tabs are not loading buttons

# ######################
# differences

toonArms/toonLegs now called toonLimb
rotating the hip proxy will rotate the foot proxy
-for the start toon rotation, use the hip/shoulder proxy, so the user can aim the toon arm the way they like.
this will have to have the offset be different. For shoulder, horizontal. For hips, down.

-missing extra attributes on spline proxies

* Proxy changes *
-icons in the UI make for easier usage with creating the different modules
-editing proxy modules is much more intuitive
-saving and loading proxies is in its own tab

* Rig changes *
-mirrored behaviour on controls for both translation and rotation
-updated shapes to be more clear what direction they are oriented
-single hierarchy options are now in the pre-build settings, rather than a post-build setting

* General improvements *
-completely scripted in Python, leveraging Object Oriented Programming to reduce the code base and speed up iterations
-an incomplete rig build caused by an error is generally recoverable when deleting the rig after,
rather than unnecessary nodes cluttering up the scene and causing name clashing


# support more units

##########
Every module type has the following:
name, mirror

    eyes and look-ats have a direction

    arms and legs are the same, except for the foot

# proxies can have multiple attach points, but cannot be attached to other proxies

# every proxy set should start with the top of the hierarchy



Change prefixes from "RRM_" to "RRM3_"


############## UI CHANGE! ##########################
All options for generating a new proxy rig are in the prompt window

The UI has a reset button next to create to reset settings
No more scroll list for module types. Click on the icon of the module you want to create to have those options
be immediately available.

Editing modules now has a drop-down list of all the modules, or the user can select and load the module they wish to edit,
instead of scrolling


Scaling proxies and then attaching modules to them creates scaling problems
    -also scaling one side will affect child modules that are mirrored to the other side
    -remove inherits transforms from the top group. Only use scale constraints. Should fix it


#####
# TODO: Save and Load Rig Layout to File menu
# TODO: Move Create, Delete Rename Tabs to a Tabs menu
# TODO: Move Show/Hide Buttons to a Show Buttons menu

#####
Selector BUGS
-retaking a snapshot does not delete the old buttons
-issue with toggling edit/selection mode after retaking snapshot
-issue with border not being set correctly after resizing ui
-issue with splines on fk chains not rotating with their parent
-mirroring face does not work with one face
-hidden buttons don't stay hidden when the ui is reloaded



Stats:
MEL
Total: 25777
UI Code: 24299 to 25772 = 1473
Proxy Code: 38 to 9646 = 9,608

Python
Total: 5903