fNewtonMaterial.pas 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. unit fNewtonMaterial;
  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. GLS.SimpleNavigation,
  12. GLS.Scene,
  13. GLS.Coordinates,
  14. Physics.NGDManager,
  15. GLS.BitmapFont,
  16. GLS.WindowsFont,
  17. GLS.Cadencer,
  18. GLS.SceneViewer,
  19. GLS.BaseClasses,
  20. GLS.Objects;
  21. type
  22. TFormNewtonMaterial = class(TForm)
  23. GLScene1: TGLScene;
  24. GLSceneViewer1: TGLSceneViewer;
  25. GLCadencer1: TGLCadencer;
  26. GLCamera1: TGLCamera;
  27. GLLightSource1: TGLLightSource;
  28. GLSimpleNavigation1: TGLSimpleNavigation;
  29. Trampoline: TGLCube;
  30. GLCube1: TGLCube;
  31. GLSphere1: TGLSphere;
  32. GLSphere2: TGLSphere;
  33. GLDummyCube1: TGLDummyCube;
  34. GLDummyCube2: TGLDummyCube;
  35. GLCube2: TGLCube;
  36. Friction: TGLCube;
  37. GLCube3: TGLCube;
  38. GLCube4: TGLCube;
  39. GLDummyCube3: TGLDummyCube;
  40. GLNGDManager1: TGLNGDManager;
  41. procedure GLCadencer1Progress(Sender: TObject;
  42. const deltaTime, newTime: Double);
  43. procedure FormCreate(Sender: TObject);
  44. private
  45. public
  46. end;
  47. var
  48. FormNewtonMaterial: TFormNewtonMaterial;
  49. implementation
  50. {$R *.dfm}
  51. procedure TFormNewtonMaterial.FormCreate(Sender: TObject);
  52. var
  53. SurfaceTrampoline, SurfaceFriction: TGLNGDSurfaceItem;
  54. SurfaceCube2, SurfaceCube3, SurfaceCube4: TGLNGDSurfaceItem;
  55. SurfaceSphere1_Sphere2_Cube1: TGLNGDSurfaceItem;
  56. ObjectOnTrampoline: TGLNGDSurfacePair;
  57. FrictionOnCube2, FrictionOnCube3, FrictionOnCube4: TGLNGDSurfacePair;
  58. begin
  59. // Get each SurfaceItem
  60. SurfaceTrampoline := GLNGDManager1.NewtonSurfaceItem.Items[0]
  61. as TGLNGDSurfaceItem;
  62. SurfaceFriction := GLNGDManager1.NewtonSurfaceItem.Items[1]
  63. as TGLNGDSurfaceItem;
  64. SurfaceCube2 := GLNGDManager1.NewtonSurfaceItem.Items[2] as TGLNGDSurfaceItem;
  65. SurfaceCube3 := GLNGDManager1.NewtonSurfaceItem.Items[3] as TGLNGDSurfaceItem;
  66. SurfaceCube4 := GLNGDManager1.NewtonSurfaceItem.Items[4] as TGLNGDSurfaceItem;
  67. SurfaceSphere1_Sphere2_Cube1 := GLNGDManager1.NewtonSurfaceItem.Items[5]
  68. as TGLNGDSurfaceItem;
  69. // Set them to Behaviours
  70. GetNGDStatic(Trampoline).NGDSurfaceItem := SurfaceTrampoline;
  71. GetNGDStatic(Friction).NGDSurfaceItem := SurfaceFriction;
  72. GetNGDDynamic(GLCube2).NGDSurfaceItem := SurfaceCube2;
  73. GetNGDDynamic(GLCube3).NGDSurfaceItem := SurfaceCube3;
  74. GetNGDDynamic(GLCube4).NGDSurfaceItem := SurfaceCube4;
  75. GetNGDDynamic(GLCube1).NGDSurfaceItem := SurfaceSphere1_Sphere2_Cube1;
  76. GetNGDDynamic(GLSphere1).NGDSurfaceItem := SurfaceSphere1_Sphere2_Cube1;
  77. GetNGDDynamic(GLSphere2).NGDSurfaceItem := SurfaceSphere1_Sphere2_Cube1;
  78. // Get each SurfacePair
  79. ObjectOnTrampoline := GLNGDManager1.NewtonSurfacePair.Items[0]
  80. as TGLNGDSurfacePair;
  81. FrictionOnCube2 := GLNGDManager1.NewtonSurfacePair.Items[1]
  82. as TGLNGDSurfacePair;
  83. FrictionOnCube3 := GLNGDManager1.NewtonSurfacePair.Items[2]
  84. as TGLNGDSurfacePair;
  85. FrictionOnCube4 := GLNGDManager1.NewtonSurfacePair.Items[3]
  86. as TGLNGDSurfacePair;
  87. // Set SurfaceItems to SurfacePair
  88. ObjectOnTrampoline.SetMaterialItems(SurfaceTrampoline,
  89. SurfaceSphere1_Sphere2_Cube1);
  90. FrictionOnCube2.SetMaterialItems(SurfaceFriction, SurfaceCube2);
  91. FrictionOnCube3.SetMaterialItems(SurfaceFriction, SurfaceCube3);
  92. FrictionOnCube4.SetMaterialItems(SurfaceFriction, SurfaceCube4);
  93. end;
  94. procedure TFormNewtonMaterial.GLCadencer1Progress(Sender: TObject;
  95. const deltaTime, newTime: Double);
  96. begin
  97. GLNGDManager1.Step(deltaTime);
  98. end;
  99. end.