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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit UChain;
  2. interface
  3. {$I ......SourcePhysics2D.inc}
  4. uses
  5.    UMain, UPhysics2DTypes, UPhysics2D, SysUtils;
  6. type
  7.    TChain = class(TTester)
  8.    public
  9.       constructor Create; override;
  10.    end;
  11. implementation
  12. { TChain }
  13. constructor TChain.Create;
  14. var
  15.    i: Integer;
  16.    ground, prevBody, body: Tb2Body;
  17.    bd: Tb2BodyDef;
  18.    sd: Tb2PolygonDef;
  19.    jd: Tb2RevoluteJointDef;
  20. begin
  21.    inherited;
  22.    begin
  23.      bd := Tb2BodyDef.Create;
  24.      {$IFDEF OP_OVERLOAD}
  25.      bd.position.SetValue(0.0, -10.0);
  26.      {$ELSE}
  27.      SetValue(bd.position, 0.0, -10.0);
  28.      {$ENDIF}
  29.      ground := m_world.CreateBody(bd);
  30.      sd := Tb2PolygonDef.Create;
  31.      sd.SetAsBox(50.0, 10.0);
  32.      ground.CreateShape(sd);
  33.    end;
  34.    begin
  35.       sd := Tb2PolygonDef.Create;
  36.       sd.SetAsBox(0.6, 0.125);
  37.       sd.density := 20.0;
  38.       sd.friction := 0.2;
  39.       jd := Tb2RevoluteJointDef.Create;
  40.       jd.collideConnected := False;
  41.       prevBody := ground;
  42.       bd := Tb2BodyDef.Create;
  43.       for i := 0 to 29 do
  44.       begin
  45.          {$IFDEF OP_OVERLOAD}
  46.          bd.position.SetValue(0.5 + i, 25.0);
  47.          {$ELSE}
  48.          SetValue(bd.position, 0.5 + i, 25.0);
  49.          {$ENDIF}
  50.          body := m_world.CreateBody(bd, False);
  51.          body.CreateShape(sd, False);
  52.          body.SetMassFromShapes;
  53.          jd.Initialize(prevBody, body, MakeVector(i, 25.0));
  54.          m_world.CreateJoint(jd, False);
  55.          prevBody := body;
  56.       end;
  57.       bd.Free;
  58.       sd.Free;
  59.       jd.Free;
  60.    end;
  61. end;
  62. initialization
  63.    RegisterTestEntry('Chain', TChain);
  64. end.