⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oxnewtonvehicle4wheels.pas

📁 Newton Game Dynamic 1.52 Delphi下基于GLScene的OpenGL游戏开发控件。功能非常强大和易于使用。 Advanced physics engine for re
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{******************************************************************************}
procedure TOXNewtonVehicle.SetContinuousCollision( const val: boolean );
begin
  if FContinuousCollisionMode <> val then begin
    FContinuousCollisionMode:= val;
    if FActived then begin
      if FContinuousCollisionMode then
        NewtonBodySetContinuousCollisionMode( FBody, 1 ) else
        NewtonBodySetContinuousCollisionMode( FBody, 0 );
    end;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.Notification(AComponent: TComponent; Operation: TOperation);
begin

   inherited;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.UpdateTransformation( poweroff: boolean );
var
  halt: TOXVector3;
begin
  if FActived then begin
    NewtonBodySetAutoFreeze( FBody, 0 );
    NewtonWorldUnfreezeBody( FManager.World, FBody );
    if poweroff then begin
      halt:= oxV3Make( 0, 0, 0);
      NewtonBodySetForce( FBody, @halt[0] );
      NewtonBodySetVelocity( FBody, @halt[0] );
      NewtonBodySetOmega( FBody, @halt[0] );
      NewtonBodySetTorque( FBody, @halt[0] );
    end;
    oxPSetInitTransform( FBody, Self );
    if FAutoFreeze then
      NewtonBodySetAutoFreeze( FBody, 1 );
  end;    
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetMassValues;
begin
  if FActived then if Assigned( FOnCustomMass ) then
      FOnCustomMass( FMass, FOriginX, FOriginY, FOriginZ,
                            FInertiaX, FInertiaY, FInertiaZ )
    else
      oxVehicleSetMass( FBody, FMass, FInertiaX, FInertiaY, FInertiaZ,
                                      FOriginX, FOriginY, FOriginZ,
                                      FConcretX, FConcretY, FConcretZ );
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetSteeringForce( val: Float );
begin
  if FSteeringForce<>val then FSteeringForce:= val;
  if FActived then begin
    Tire[0].SteeringForce:= FSteeringForce;
    Tire[1].SteeringForce:= FSteeringForce;
    Tire[2].SteeringForce:= FSteeringForce;
    Tire[3].SteeringForce:= FSteeringForce;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelRotation( val: Float );
begin
  if FWheelRotation<>val then FWheelRotation:= val;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetSideSleepCoeficient( val: Float );
begin
  if FWheelSideSleepCoeficient<>val then FWheelSideSleepCoeficient:= val;
  if FActived then begin
    Tire[0].TireSideSleepCoeficient:= FWheelSideSleepCoeficient;
    Tire[1].TireSideSleepCoeficient:= FWheelSideSleepCoeficient;
    Tire[2].TireSideSleepCoeficient:= FWheelSideSleepCoeficient;
    Tire[3].TireSideSleepCoeficient:= FWheelSideSleepCoeficient;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetSideSleepSpeed( val: Float );
begin
  if FWheelMaxSideSleepSpeed<>val then FWheelMaxSideSleepSpeed:= val;
  if FActived then begin
    Tire[0].TireMaxSideSleepSpeed:= FWheelMaxSideSleepSpeed;
    Tire[1].TireMaxSideSleepSpeed:= FWheelMaxSideSleepSpeed;
    Tire[2].TireMaxSideSleepSpeed:= FWheelMaxSideSleepSpeed;
    Tire[3].TireMaxSideSleepSpeed:= FWheelMaxSideSleepSpeed;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelaBrakeForce( val: Float );
begin
  if FWheelaBrakeForce<>val then FWheelaBrakeForce:= val;
  if FActived then Tire[0].TireBrakeForce:= FWheelaBrakeForce;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelbBrakeForce( val: Float );
begin
  if FWheelbBrakeForce<>val then FWheelbBrakeForce:= val;
  if FActived then Tire[1].TireBrakeForce:= FWheelbBrakeForce;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelcBrakeForce( val: Float );
begin
  if FWheelcBrakeForce<>val then FWheelcBrakeForce:= val;
  if FActived then Tire[2].TireBrakeForce:= FWheelcBrakeForce;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheeldBrakeForce( val: Float );
begin
  if FWheeldBrakeForce<>val then FWheeldBrakeForce:= val;
  if FActived then Tire[3].TireBrakeForce:= FWheeldBrakeForce;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetConcretX( const val: Float );
begin
  if FConcretX <> val then begin FConcretX:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetConcretY( const val: Float );
begin
  if FConcretY <> val then begin FConcretY:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetConcretZ( const val: Float );
begin
  if FConcretZ <> val then begin FConcretZ:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetInertiaX( const val: Float );
begin
  if FInertiaX <> val then begin FInertiaX:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetInertiaY( const val: Float );
begin
  if FInertiaY <> val then begin FInertiaY:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetInertiaZ( const val: Float );
begin
  if FInertiaZ <> val then begin FInertiaZ:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetOriginX( const val: Float );
begin
  if FOriginX <> val then begin FOriginX:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetOriginY( const val: Float );
begin
  if FOriginY <> val then begin FOriginY:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetOriginZ( const val: Float );
begin
  if FOriginZ <> val then begin FOriginZ:= val;
    if FActived then SetMassValues;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetAutoFreeze( const val: boolean );
begin
  FAutoFreeze:= val;
  if FActived then begin
    if FAutoFreeze then begin
      NewtonBodySetAutoFreeze( FBody, 1 );
    end else begin
      NewtonBodySetAutoFreeze( FBody, 0 );
      NewtonWorldUnfreezeBody( FManager.World, FBody );
    end;
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetAngularDampingX( const val: Float );
var DamVec: TOXVector3;
begin
  if FAngularDampingX <> val then begin FAngularDampingX:= val;
    DamVec:= oxV3Make( FAngularDampingX, FAngularDampingY, FAngularDampingZ );
    if FActived then
      NewtonBodySetAngularDamping( FBody, @DamVec[0] );
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetAngularDampingY( const val: Float );
var DamVec: TOXVector3;
begin
  if FAngularDampingY <> val then begin FAngularDampingY:= val;
    DamVec:= oxV3Make( FAngularDampingX, FAngularDampingY, FAngularDampingZ );
    if FActived then
      NewtonBodySetAngularDamping( FBody, @DamVec[0] );
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetAngularDampingZ( const val: Float );
var DamVec: TOXVector3;
begin
  if FAngularDampingZ <> val then begin FAngularDampingZ:= val;
    DamVec:= oxV3Make( FAngularDampingX, FAngularDampingY, FAngularDampingZ );
    if FActived then
      NewtonBodySetAngularDamping( FBody, @DamVec[0] );
  end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetLinearDamping( const val: Float );
begin
  if FLinearDamping <> val then begin FLinearDamping:= val;
    if FActived then
      NewtonBodySetLinearDamping( FBody, FLinearDamping );
  end;   
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.BuildList( var rci: TRenderContextInfo );
begin
  if FOXVisual then
    inherited else
  exit;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel.                 //
{******************************************************************************}
procedure TOXNewtonVehicle.SetMaterialSurfaceMode( const Mode: TOXMaterialSurfaceMode );
begin
  case Mode of
    mdNone: SetMaterialSurface( True, 0.0, 0.0, 0.0, 0.0 );
    mdDefault: SetMaterialSurface( True, 0.05, 0.4, 1.0, 0.5 );
    mdHard: SetMaterialSurface( True, 1.0, 0.5, 1.0, 0.5 );
    mdSoft: SetMaterialSurface( True, 0.01, 0.2, 1.0, 0.5 );
    mdSlide: SetMaterialSurface( True, 0.05, 0.4, 0.25, 0.25 );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -