📄 oxnewtonvehicle4wheels.pas
字号:
{******************************************************************************}
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 + -