📄 oxnewtonvehicle4wheels.pas
字号:
mdStatic: SetMaterialSurface( True, 0.05, 0.4, 1.0, 1.0 );
end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelsMaterialSurfaceMode( const Mode: TOXMaterialSurfaceMode );
begin
case Mode of
mdNone: SetWheelsMaterialSurface( True, 0.0, 0.0, 0.0, 0.0 );
mdDefault: SetWheelsMaterialSurface( True, 0.05, 0.4, 1.0, 0.5 );
mdHard: SetWheelsMaterialSurface( True, 1.0, 0.5, 1.0, 0.5 );
mdSoft: SetWheelsMaterialSurface( True, 0.01, 0.2, 1.0, 0.5 );
mdSlide: SetWheelsMaterialSurface( True, 0.05, 0.4, 0.25, 0.25 );
mdStatic: SetWheelsMaterialSurface( True, 0.05, 0.4, 1.0, 1.0 );
end;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.SetMaterialSurface( Custom: boolean; Softness,
Elasticity, StaticFriction, KineticFriction: Float );
begin
FMaterialCustom:= Custom;
FMaterialSoftness:= Softness;
FMaterialElasticity:= Elasticity;
FMaterialStaticFriction:= StaticFriction;
FMaterialKineticFriction:= KineticFriction;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.SetWheelsMaterialSurface( Custom: boolean; Softness,
Elasticity, StaticFriction, KineticFriction: Float );
begin
FWheelsMaterialCustom:= Custom;
FWheelsMaterialSoftness:= Softness;
FWheelsMaterialElasticity:= Elasticity;
FWheelsMaterialStaticFriction:= StaticFriction;
FWheelsMaterialKineticFriction:= KineticFriction;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
function TOXNewtonVehicle.GetGeom: PNewtonCollision;
begin
result:= FCollision;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
function TOXNewtonVehicle.GetBody: PNewtonBody;
begin
result:= FBody;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.SetPin( val: TGLCoordinates );
begin
FPin.SetVector( val.DirectX, val.DirectY, val.DirectZ );
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
function TOXNewtonVehicle.GetTire( Index: Integer ): TOXVehicleTire;
begin
// Only allow valid index values
if ( Index >= 0 ) and ( Index <= 3 )
then Result:= FTire[Index]
else Result:= nil;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFrom3DS( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromSMD( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromLWO( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromOBJ( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromSTL( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromMS3D( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromMD5( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromMD3( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromMD2( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 1;
LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromMesh( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 2;
MeshObjects.LoadFromFile( Vehicle );
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleLoadFromVHC( Vehicle: string;
Wheela,Wheelb,Wheelc,Wheeld: string );
begin
FMeshModel:= 3;
VehicleStreamDec(self,Vehicle,MaterialLibrary);
FWheelaMeshName:= Wheela;
FWheelbMeshName:= Wheelb;
FWheelcMeshName:= Wheelc;
FWheeldMeshName:= Wheeld;
end;
{******************************************************************************}
// [15-9-2007]: TOXNewtonVehicle last change by Dave Gravel. //
{******************************************************************************}
procedure TOXNewtonVehicle.VehicleAutoConfig( const cName: ShortString; var Vhc: TOXNewtonVehicle );
var
TmpStr1, TmpStr2: TMemoryStream;
StrList: TStringList;
begin
StrList:= TStringList.Create;
TmpStr1:= TMemoryStream.Create;
TmpStr2:= TMemoryStream.Create;
try
TmpStr1.LoadFromFile( cName );
with Vhc do begin
StrList.LoadFromStream( TmpStr1 );
AutoFreeze:= False;
ContinuousCollisionMode:= False;
Position.SetPoint( StrToFloat( StrList.Strings[0] ),
StrToFloat( StrList.Strings[1] ),
StrToFloat( StrList.Strings[2] ) );
// Vehicle wheel
WheelaPos.X:= StrToFloat( StrList.Strings[3] );
WheelaPos.Y:= StrToFloat( StrList.Strings[4] );
WheelaPos.Z:= StrToFloat( StrList.Strings[5] );
// Vehicle wheel
WheelbPos.X:= StrToFloat( StrList.Strings[6] );
WheelbPos.Y:= StrToFloat( StrList.Strings[7] );
WheelbPos.Z:= StrToFloat( StrList.Strings[8] );
// Vehicle wheel
WheelcPos.X:= StrToFloat( StrList.Strings[9] );
WheelcPos.Y:= StrToFloat( StrList.Strings[10] );
WheelcPos.Z:= StrToFloat( StrList.Strings[11] );
// Vehicle wheel
WheeldPos.X:= StrToFloat( StrList.Strings[12] );
WheeldPos.Y:= StrToFloat( StrList.Strings[13] );
WheeldPos.Z:= StrToFloat( StrList.Strings[14] );
Direction.X:= StrToFloat( StrList.Strings[61] );
Direction.Y:= StrToFloat( StrList.Strings[62] );
Direction.Z:= StrToFloat( StrList.Strings[63] );
Up.X:= StrToFloat( StrList.Strings[64] );
Up.Y:= StrToFloat( StrList.Strings[65] );
Up.Z:= StrToFloat( StrList.Strings[66] );
// Wheel Radius
WheelaRadius:= StrToFloat( StrList.Strings[18] );
// Wheel Radius
WheelbRadius:= StrToFloat( StrList.Strings[19] );
// Wheel Radius
WheelcRadius:= StrToFloat( StrList.Strings[20] );
// Wheel Radius
WheeldRadius:= StrToFloat( StrList.Strings[21] );
// Wheel Width
WheelaWidth:= StrToFloat( StrList.Strings[22] );
// Wheel Width
WheelbWidth:= StrToFloat( StrList.Strings[23] );
// Wheel Width
WheelcWidth:= StrToFloat( StrList.Strings[24] );
// Wheel Width
WheeldWidth:= StrToFloat( StrList.Strings[25] );
// Vehicle Mass
Mass:= StrToFloat( StrList.Strings[26] );
// Wheels Mass
WheelMass:= StrToFloat( StrList.Strings[27] );
// Vehicle Mass Center
MassCenterX:= StrToFloat( StrList.Strings[28] );
MassCenterY:= StrToFloat( StrList.Strings[29] );
MassCenterZ:= StrToFloat( StrList.Strings[30] );
// Vehicle Mass Regulation
MassRegulation:= StrToFloat( StrList.Strings[31] );
// Vehicle Mesh Name
// StrToFloat( StrList.Strings[32] );
// StrToFloat( StrList.Strings[33] );
// StrToFloat( StrList.Strings[34] );
// StrToFloat( StrList.Strings[35] );
// StrToFloat( StrList.Strings[36] );
//
// Vehicle Wheels Traction
if StrList.Strings[37] = 'Front' then Traction:= mdFront else
if StrList.Strings[37] = 'Rear' then Traction:= mdRear else
if S
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -