Deprecated!! Use the physenv functions.
Here is the modifed physics.lua file to work with the physenv functions.
local MaxVelocity = CreateConVar( "phys_maxvelocity", "4000", FCVAR_NOTIFY | FCVAR_ARCHIVE | FCVAR_GAMEDLL );
local MaxAngularVelocity = CreateConVar( "phys_maxangularvelocity", "3600", FCVAR_NOTIFY | FCVAR_ARCHIVE | FCVAR_GAMEDLL );
local GravityX = CreateConVar( "phys_gravity_x", "0", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local GravityY = CreateConVar( "phys_gravity_y", "0", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local GravityZ = CreateConVar( "phys_gravity_z", "-600", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local CollisionsPerObjectPerTimestep = CreateConVar( "phys_collisions_object_timestep", "10", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local CollisionsPerTimestep = CreateConVar( "phys_collisions_timestep", "250", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local MinFrictionMass = CreateConVar( "phys_minfrictionmass", "10", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local MaxFrictionMass = CreateConVar( "phys_maxfrictionmass", "2500", FCVAR_NOTIFY | FCVAR_GAMEDLL );
local AirDensity = CreateConVar( "phys_airdensity", "2", FCVAR_NOTIFY | FCVAR_GAMEDLL );
/*------------------------------------
UpdatePerformanceSettings()
------------------------------------*/
local function UpdatePerformanceSettings()
local settings = physenv.GetPerformanceSettings();
settings.MaxVelocity = MaxVelocity:GetFloat();
settings.MaxAngularVelocity = MaxAngularVelocity:GetFloat();
settings.MinFrictionMass = MinFrictionMass:GetFloat();
settings.MaxFrictionMass = MaxFrictionMass:GetFloat();
settings.MaxCollisionsPerObjectPerTimestep = CollisionsPerObjectPerTimestep:GetInt();
settings.MaxCollisionChecksPerTimestep = CollisionsPerTimestep:GetInt();
physenv.SetPerformanceSettings( settings );
end
/*------------------------------------
UpdateGravity()
------------------------------------*/
local function UpdateGravity()
physenv.SetGravity( Vector( GravityX:GetFloat(), GravityY:GetFloat(), GravityZ:GetFloat() ) );
end
/*------------------------------------
UpdateAirDensity()
------------------------------------*/
local function UpdateAirDensity()
physenv.SetAirDensity( AirDensity:GetFloat() );
end
/*------------------------------------
InitPostEntity()
------------------------------------*/
local function InitPostEntity()
UpdatePerformanceSettings();
UpdateGravity();
UpdateAirDensity();
end
hook.Add( "InitPostEntity", "PhysicsSettingsStartup", InitPostEntity );
// watch for changes on these convars
cvars.AddChangeCallback( "phys_maxvelocity", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_maxangularvelocity", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_collisions_object_timestep", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_collisions_timestep", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_minfrictionmass", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_maxfrictionmass", UpdatePerformanceSettings );
cvars.AddChangeCallback( "phys_gravity_x", UpdateGravity );
cvars.AddChangeCallback( "phys_gravity_y", UpdateGravity );
cvars.AddChangeCallback( "phys_gravity_z", UpdateGravity );
cvars.AddChangeCallback( "phys_airdensity", UpdateAirDensity );
Alright, this will let you increase the maximum velocity of physics objects, currently 2000 in/s or 113mph, among other things. I wrote this a while ago, was going to add more stuff to it, but chose to remove it and release it as a simple performance/settings module. Here is a list of extra ConVars this adds.
ConVars:- phys_maxvelocity
- phys_maxangularvelocity
- phys_collisions_object_timestep
- Default: 10
- Description: Objects may collide this many times before they are frozen for performance reasons.
- phys_collisions_timestep
- Default: 250
- Description: Same as phys_collisions_object_timestep, but against the world.
- phys_minfrictionmass
- phys_maxfrictionmass
- phys_gravity_x
- phys_gravity_y
- phys_gravity_z
- Description: Changes gravity for physics objects on any combination of axes.
- phys_airdensity
- Description: Changes the density of air in the physics simulation ( Doesn't require cheats ).
Module:- physics.GetPerformanceSettings()
- physics.SetPerformanceSettings( [table] settings )
- physics.GetGravity()
- physics.SetGravity( [vector] gravity )
- physics.GetAirDensity()
- physics.SetAirDensity( [float] density )
For a list of the fields SetPerformanceSettings uses, check physics.lua.
Download:
http://cdbarrett.com/dump/releases/gmsv_vphysics.zip
http://cdbarrett.com/dump/releases/g...hysics_src.zip
Download:
