UVaryingRestitution.pas
上传用户:zkjn0718
上传日期:2021-01-01
资源大小:776k
文件大小:1k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit UVaryingRestitution;
  2. interface
  3. {$I ......SourcePhysics2D.inc}
  4. uses
  5.    UMain, UPhysics2DTypes, UPhysics2D, SysUtils;
  6. type
  7.    TVaryingRestitution = class(TTester)
  8.    public
  9.       constructor Create; override;
  10.    end;
  11. implementation
  12. { TVaryingRestitution }
  13. constructor TVaryingRestitution.Create;
  14. const
  15.    restitution: array[0..6] of Single = (0.0, 0.1, 0.3, 0.5, 0.75, 0.9, 1.0);
  16. var
  17.    i: Integer;
  18.    sd: Tb2PolygonDef;
  19.    bd: Tb2BodyDef;
  20.    ground: Tb2Body;
  21.    cd: Tb2CircleDef;
  22.    body: Tb2Body;
  23. begin
  24.    inherited;
  25.    begin
  26.      sd := Tb2PolygonDef.Create;
  27.      sd.SetAsBox(50.0, 10.0);
  28.      bd := Tb2BodyDef.Create;
  29.      {$IFDEF OP_OVERLOAD}
  30.      bd.position.SetValue(0.0, -10.0);
  31.      {$ELSE}
  32.      SetValue(bd.position, 0.0, -10.0);
  33.      {$ENDIF}
  34.      ground := m_world.CreateBody(bd);
  35.      ground.CreateShape(sd);
  36.    end;
  37.    cd := Tb2CircleDef.Create;
  38.    cd.radius := 1.0;
  39.    cd.density := 1.0;
  40.    bd := Tb2BodyDef.Create;
  41.    for i := 0 to 6 do
  42.    begin
  43.       {$IFDEF OP_OVERLOAD}
  44.       bd.position.SetValue(-10.0 + 3.0 * i, 20.0);
  45.       {$ELSE}
  46.       SetValue(bd.position, -10.0 + 3.0 * i, 20.0);
  47.       {$ENDIF}
  48.       body := m_world.CreateBody(bd, False);
  49.       cd.restitution := restitution[i];
  50.       body.CreateShape(cd, False);
  51.       body.SetMassFromShapes;
  52.    end;
  53.    cd.Free;
  54.    bd.Free;
  55. end;
  56. initialization
  57.    RegisterTestEntry('Varying Restitution', TVaryingRestitution);
  58. end.