fGizmoExC.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <tchar.h>
  4. #pragma hdrstop
  5. #include "fGizmoExC.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "GLS.BaseClasses"
  9. #pragma link "GLS.BitmapFont"
  10. #pragma link "GLS.Cadencer"
  11. #pragma link "GLS.Coordinates"
  12. #pragma link "GLS.GeomObjects"
  13. #pragma link "GLS.Graph"
  14. #pragma link "GLS.Objects"
  15. #pragma link "GLS.Scene"
  16. #pragma link "GLS.SceneViewer"
  17. #pragma link "GLS.WindowsFont"
  18. #pragma link "GLS.GizmoEx"
  19. #pragma resource "*.dfm"
  20. TForm1 *Form1;
  21. //---------------------------------------------------------------------------
  22. __fastcall TForm1::TForm1(TComponent* Owner)
  23. : TForm(Owner)
  24. {
  25. }
  26. void __fastcall TForm1::UpdateTreeView()
  27. {
  28. int I;
  29. TTreeNode *ObjectNode;
  30. TTreeNode *CurrentNode;
  31. TreeView1->Items->Clear();
  32. // -- add two root nodes --
  33. ObjectNode = TreeView1->Items->AddFirst(NULL, "RootTempObjects");
  34. // -- get the object's tree --
  35. TreeView1->Items->BeginUpdate();
  36. // -- objects (with children too) --
  37. if (RootTempObjects)
  38. {
  39. ObjectNode->Data = RootTempObjects;
  40. for (I = 0; I < RootTempObjects->Count -1; I++)
  41. {
  42. // AddNodes(ObjectNode, Children[I]);
  43. if (IsSubComponent(RootTempObjects->Children[I])) {
  44. ObjectNode = TreeView1->Selected;
  45. exit;
  46. }
  47. else {
  48. CurrentNode = TreeView1->Items->
  49. AddChildObject(ObjectNode , RootTempObjects->Children[I]->Name, RootTempObjects->Children[I]);
  50. for (I = 0; I < RootTempObjects->Children[I]->Count -1; I++)
  51. // AddNodes(ObjectNode, Children[I]);
  52. if (IsSubComponent(RootTempObjects->Children[I])) {
  53. ObjectNode = TreeView1->Selected;
  54. exit;
  55. }
  56. else {
  57. CurrentNode = TreeView1->Items->
  58. AddChildObject(ObjectNode , RootTempObjects->Children[I]->Name, RootTempObjects->Children[I]);
  59. }
  60. }
  61. ObjectNode->Expand(true);
  62. }
  63. TreeView1->Items->EndUpdate();
  64. // -- add two root nodes --
  65. ObjectNode = TreeView1->Items->AddFirst(NULL, "World");
  66. // -- get the object's tree --
  67. TreeView1->Items->BeginUpdate();
  68. // -- objects (with children too) --
  69. if (GLRootObjects)
  70. {
  71. ObjectNode->Data = GLRootObjects;
  72. for (I = 0; I < RootTempObjects->Count -1; I++)
  73. {
  74. // AddNodes(ObjectNode, Children[I]);
  75. if (IsSubComponent(RootTempObjects->Children[I])) {
  76. ObjectNode = TreeView1->Selected;
  77. exit;
  78. }
  79. else {
  80. CurrentNode = TreeView1->Items->
  81. AddChildObject(ObjectNode , RootTempObjects->Children[I]->Name, RootTempObjects->Children[I]);
  82. }
  83. }
  84. ObjectNode->Expand(true);
  85. }
  86. TreeView1->Items->EndUpdate();
  87. }
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TForm1::FormCreate(TObject *Sender)
  91. {
  92. Gizmo = new TGLGizmoEx(this);
  93. Gizmo->LabelFont = WindowsBitmapFont;
  94. Gizmo->Viewer = Viewer;
  95. Gizmo->ExcludeClassnameList->Add("TGLSphere");
  96. FCreationScenarious = -1;
  97. }
  98. //---------------------------------------------------------------------------
  99. void __fastcall TForm1::FormDestroy(TObject *Sender)
  100. {
  101. Gizmo->Free();
  102. }
  103. //---------------------------------------------------------------------------
  104. void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
  105. {
  106. Gizmo->CanAddObjToSelectionList = (Key==vkControl);
  107. Gizmo-> CanRemoveObjFromSelectionList = (Key==vkMenu);
  108. }
  109. //---------------------------------------------------------------------------
  110. void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
  111. {
  112. Gizmo->CanAddObjToSelectionList = false;
  113. Gizmo->CanRemoveObjFromSelectionList = false;
  114. }
  115. //---------------------------------------------------------------------------
  116. void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
  117. TPoint &MousePos, bool &Handled)
  118. {
  119. Camera->AdjustDistanceToTarget(Power(1.1, WheelDelta / 120));
  120. Gizmo->UpdateGizmo();
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  124. const double newTime)
  125. {
  126. Viewer->Invalidate();
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TForm1::Timer1Timer(TObject *Sender)
  130. {
  131. Panel1->Caption = Viewer->FramesPerSecondText();
  132. Viewer->ResetPerformanceMonitor();
  133. if (GLScene1->IsUpdating())
  134. UpdateTreeView();
  135. }
  136. //---------------------------------------------------------------------------