@AdjustBoneOrns.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /******************************************************************************/
  2. /******************************************************************************
  3. Usage of 'rotateToDir' instead of setting 'dir' and calling 'fix' gives better precision for cases when we're rotating the bone by 90 deg.
  4. /******************************************************************************/
  5. class AdjustBoneOrns : PropWin
  6. {
  7. enum HAND_MODE
  8. {
  9. HAND_SKIP,
  10. HAND_MIDDLE,
  11. HAND_AVG,
  12. HAND_PARENT,
  13. };
  14. static cchar8 *HandMode[]
  15. ;
  16. enum FOOT_MODE
  17. {
  18. FOOT_SKIP,
  19. FOOT_DEFAULT,
  20. FOOT_DOWN,
  21. FOOT_PARENT,
  22. };
  23. static cchar8 *FootMode[]
  24. ;
  25. enum ROT_SHOULDER_MODE
  26. {
  27. ROT_SHOULDER_NO,
  28. ROT_SHOULDER_SRC,
  29. ROT_SHOULDER_DEST,
  30. };
  31. static cchar8 *RotShoulder[]
  32. ;
  33. bool zero_child,
  34. one_child,
  35. multi_child,
  36. force_eye_forward,
  37. force_nose_forward,
  38. force_spine_up,
  39. force_neck_up,
  40. force_head_up,
  41. force_toe_forward,
  42. add_shoulder,
  43. reset_perp,
  44. refresh_needed;
  45. HAND_MODE hand_mode;
  46. FOOT_MODE foot_mode;
  47. ROT_SHOULDER_MODE rotate_shoulder;
  48. Button adjust;
  49. Skeleton skel;
  50. static void Changed(C Property &prop);
  51. static void Adjust(AdjustBoneOrns &abo);
  52. static bool SetTarget(SkelBone &bone, C Vec &pos);
  53. static flt BoneMeshLength(C SkelBone &bone);
  54. static Str8 UniqueName(C Skeleton &skel, C Str8 &name);
  55. void setBoneLength(Skeleton &skel, SkelBone &bone, flt min_length); // set length as Max of all children
  56. bool adjustDo(Skeleton &skel, Mesh *mesh=null); // return if mesh was changed
  57. Skeleton& getSkel();
  58. void refresh();
  59. AdjustBoneOrns& create();
  60. public:
  61. AdjustBoneOrns();
  62. };
  63. /******************************************************************************/
  64. /******************************************************************************/
  65. /******************************************************************************/