@MeshParts.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /******************************************************************************/
  2. /******************************************************************************/
  3. class MeshParts : Window
  4. {
  5. class RenamePart : ClosableWindow
  6. {
  7. int index; // number of elements before this one with similar name
  8. Str name;
  9. TextLine textline;
  10. static void Hide(RenamePart &rp);
  11. void create();
  12. void activate(int part);
  13. virtual void update(C GuiPC &gpc)override;
  14. public:
  15. RenamePart();
  16. };
  17. class Part
  18. {
  19. bool removed;
  20. Color color;
  21. int index;
  22. Button remove;
  23. void setColor();
  24. public:
  25. Part();
  26. };
  27. class WeldVtxPos : ClosableWindow
  28. {
  29. Text text;
  30. TextLine textline;
  31. void create();
  32. virtual void update(C GuiPC &gpc)override;
  33. };
  34. static Str Removed(C Part &p);
  35. static Str Name (C Part &p);
  36. static Str Vtxs (C Part &p);
  37. static Str Tris (C Part &p);
  38. static Str Mtrl (C Part &p);
  39. static Str VtxsN (C Part &p);
  40. static Str TrisN (C Part &p);
  41. static void Refresh (MeshParts &parts);
  42. static void Locate (MeshParts &parts);
  43. static void ListChanging(MeshParts &parts);
  44. static void ListChanged (MeshParts &parts);
  45. static void EditChanged (MeshParts &parts);
  46. static void HiddenToggle(Part &p);
  47. static void Rename();
  48. void renamePart(int index, C Str &old_name, C Str &new_name);
  49. static void Erase();
  50. static void Remove();
  51. static void Restore();
  52. static void Hide();
  53. static void Focus();
  54. static void Duplicate();
  55. static void CopyMem();
  56. static void NewLod();
  57. static void Merge();
  58. MemberDesc md_vtxs, md_tris;
  59. Memx<Part> data;
  60. List<Part> list;
  61. Region region;
  62. Button show_removed, edit_selected, locate;
  63. Menu menu;
  64. RenamePart rename;
  65. WeldVtxPos weld_vtx;
  66. ComboBox add;
  67. virtual Rect sizeLimit()C override;
  68. C Rect& rect();
  69. virtual MeshParts& rect(C Rect &rect)override;
  70. // PART is the same as ABS
  71. bool partSel (int part)C; // if part is selected
  72. bool partOp (int part)C; // if part should be operated on
  73. int visToPart (int vis )C;
  74. int partToVis (int part)C;
  75. void highlight (int part);
  76. void clicked (int part);
  77. void erasedPart(int part);
  78. void addedPart(int part);
  79. void selParts(C MemPtr<int>&parts);
  80. void newMesh ();
  81. void modeChanged();
  82. void skinChanged();
  83. void showMenu(C Vec2 &pos);
  84. static void AddBox();
  85. static void AddBall();
  86. static void AddBall2();
  87. static void AddBallIco();
  88. static void AddCapsule();
  89. static void AddTube();
  90. static void AddCone();
  91. static void AddTorus();
  92. static void AddMemory();
  93. MeshParts& create();
  94. void refresh();
  95. virtual void update(C GuiPC &gpc)override;
  96. void drag(Memc<UID> &elms, GuiObj *focus_obj, C Vec2 &screen_pos);
  97. };
  98. /******************************************************************************/
  99. /******************************************************************************/
  100. /******************************************************************************/