fNewtonSimple.pas 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. unit fNewtonSimple;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Variants,
  6. System.Classes,
  7. Vcl.Graphics,
  8. Vcl.Controls,
  9. Vcl.Forms,
  10. Vcl.Dialogs,
  11. Vcl.StdCtrls,
  12. Vcl.ExtCtrls,
  13. GLS.Scene,
  14. GLS.Objects,
  15. GLS.Coordinates,
  16. GLS.SimpleNavigation,
  17. GLS.Cadencer,
  18. GLS.SceneViewer,
  19. GLS.Color,
  20. GLS.BaseClasses,
  21. Physics.NGDManager,
  22. GLS.GeomObjects,
  23. GLS.BitmapFont,
  24. GLS.WindowsFont,
  25. GLS.HUDObjects;
  26. type
  27. TFormNewtonSimple = class(TForm)
  28. GLScene1: TGLScene;
  29. GLSceneViewer1: TGLSceneViewer;
  30. GLCadencer1: TGLCadencer;
  31. GLSimpleNavigation1: TGLSimpleNavigation;
  32. GLCamera1: TGLCamera;
  33. GLLightSource1: TGLLightSource;
  34. Floor: TGLCube;
  35. GLDummyCube1: TGLDummyCube;
  36. GLNGDManager1: TGLNGDManager;
  37. GLResolutionIndependantHUDText1: TGLResolutionIndependantHUDText;
  38. Panel1: TPanel;
  39. btnAddCube: TButton;
  40. btnAddSphere: TButton;
  41. btnAddCone: TButton;
  42. btnAddCylinder: TButton;
  43. btnAddCapsule: TButton;
  44. btnRemoveAll: TButton;
  45. procedure GLCadencer1Progress(Sender: TObject;
  46. const deltaTime, newTime: Double);
  47. procedure btnAddCubeClick(Sender: TObject);
  48. procedure btnAddSphereClick(Sender: TObject);
  49. procedure btnAddConeClick(Sender: TObject);
  50. procedure btnAddCylinderClick(Sender: TObject);
  51. procedure btnAddCapsuleClick(Sender: TObject);
  52. procedure btnRemoveAllClick(Sender: TObject);
  53. private
  54. public
  55. end;
  56. var
  57. FormNewtonSimple: TFormNewtonSimple;
  58. implementation
  59. {$R *.dfm}
  60. procedure TFormNewtonSimple.btnAddCubeClick(Sender: TObject);
  61. var
  62. GLCube1: TGLCube;
  63. DynNGDBehav: TGLNGDDynamic;
  64. begin
  65. GLCube1 := TGLCube.CreateAsChild(GLDummyCube1);
  66. GLCube1.Material.FrontProperties.Diffuse.RandomColor;
  67. DynNGDBehav := GLCube1.GetOrCreateBehaviour(TGLNGDDynamic) as TGLNGDDynamic;
  68. DynNGDBehav.Manager := GLNGDManager1;
  69. end;
  70. procedure TFormNewtonSimple.btnAddSphereClick(Sender: TObject);
  71. var
  72. GLSphere1: TGLSphere;
  73. DynNGDBehav: TGLNGDDynamic;
  74. begin
  75. GLSphere1 := TGLSphere.CreateAsChild(GLDummyCube1);
  76. GLSphere1.Material.FrontProperties.Diffuse.RandomColor;
  77. DynNGDBehav := GLSphere1.GetOrCreateBehaviour(TGLNGDDynamic) as TGLNGDDynamic;
  78. DynNGDBehav.Manager := GLNGDManager1;
  79. end;
  80. procedure TFormNewtonSimple.btnAddConeClick(Sender: TObject);
  81. var
  82. GLCone1: TGLCone;
  83. DynNGDBehav: TGLNGDDynamic;
  84. begin
  85. GLCone1 := TGLCone.CreateAsChild(GLDummyCube1);
  86. GLCone1.Material.FrontProperties.Diffuse.RandomColor;
  87. DynNGDBehav := GLCone1.GetOrCreateBehaviour(TGLNGDDynamic) as TGLNGDDynamic;
  88. DynNGDBehav.Manager := GLNGDManager1;
  89. end;
  90. procedure TFormNewtonSimple.btnAddCylinderClick(Sender: TObject);
  91. var
  92. GLCylinder1: TGLCylinder;
  93. DynNGDBehav: TGLNGDDynamic;
  94. begin
  95. GLCylinder1 := TGLCylinder.CreateAsChild(GLDummyCube1);
  96. GLCylinder1.Material.FrontProperties.Diffuse.RandomColor;
  97. DynNGDBehav := GLCylinder1.GetOrCreateBehaviour(TGLNGDDynamic)
  98. as TGLNGDDynamic;
  99. DynNGDBehav.Manager := GLNGDManager1;
  100. end;
  101. procedure TFormNewtonSimple.btnAddCapsuleClick(Sender: TObject);
  102. var
  103. GLCapsule1: TGLCapsule;
  104. DynNGDBehav: TGLNGDDynamic;
  105. begin
  106. GLCapsule1 := TGLCapsule.CreateAsChild(GLDummyCube1);
  107. GLCapsule1.Material.FrontProperties.Diffuse.RandomColor;
  108. DynNGDBehav := GLCapsule1.GetOrCreateBehaviour(TGLNGDDynamic)
  109. as TGLNGDDynamic;
  110. DynNGDBehav.Manager := GLNGDManager1;
  111. end;
  112. procedure TFormNewtonSimple.btnRemoveAllClick(Sender: TObject);
  113. begin
  114. GLDummyCube1.DeleteChildren;
  115. GLSceneViewer1.Invalidate;
  116. end;
  117. procedure TFormNewtonSimple.GLCadencer1Progress(Sender: TObject;
  118. const deltaTime, newTime: Double);
  119. begin
  120. GLNGDManager1.Step(deltaTime);
  121. GLResolutionIndependantHUDText1.Text := 'Bodycount:=' + inttostr
  122. (GLNGDManager1.NewtonBodyCount);
  123. end;
  124. end.