Unit1.cpp 4.6 KB

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