diff --git a/vphysics-physx/main.cpp b/vphysics-physx/main.cpp
index b042e142..6bb3ef8a 100644
--- a/vphysics-physx/main.cpp
+++ b/vphysics-physx/main.cpp
@@ -127,9 +127,6 @@ InitReturnVal_t CPhysicsInterface::Init()
 
 	MathLib_Init( 2.2f, 2.2f, 0.0f, 2.0f, false, false, false, false );
 
-	PxTolerancesScale scale;
-	scale.length = g_PhysicsUnits.unitScaleMetersInv; // typical length of an object
-
 	gPxFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, gPxAllocatorCallback, gPxErrorCallback);
 
 	if( !gPxFoundation )
@@ -145,6 +142,11 @@ InitReturnVal_t CPhysicsInterface::Init()
 
 	gPxPvd->connect(*transport,PxPvdInstrumentationFlag::eALL);
 
+	PxTolerancesScale scale;
+
+	scale.length = g_PhysicsUnits.unitScaleMetersInv;
+	scale.speed *= g_PhysicsUnits.unitScaleMetersInv;
+
 	gPxPhysics = PxCreatePhysics(PX_PHYSICS_VERSION, *gPxFoundation, scale, recordMemoryAllocations, gPxPvd);
 
 	if( !gPxPhysics )
@@ -153,7 +155,7 @@ InitReturnVal_t CPhysicsInterface::Init()
 		return INIT_FAILED;
 	}
 
-	gPxCooking = PxCreateCooking(PX_PHYSICS_VERSION, *gPxFoundation	, PxCookingParams(scale));
+	gPxCooking = PxCreateCooking(PX_PHYSICS_VERSION, *gPxFoundation, PxCookingParams(scale));
 	return INIT_OK;
 }
 
diff --git a/vphysics-physx/physics_environment.cpp b/vphysics-physx/physics_environment.cpp
index e80ddc3b..48537ae5 100644
--- a/vphysics-physx/physics_environment.cpp
+++ b/vphysics-physx/physics_environment.cpp
@@ -1117,7 +1117,7 @@ CPhysicsEnvironment::CPhysicsEnvironment( void )
 	// PHYSX_BEGIN
 
 	PxSceneDesc sceneDesc(gPxPhysics->getTolerancesScale());
-	sceneDesc.gravity = physx::PxVec3(0.0f, -9.81f, 0.0f);
+	sceneDesc.gravity = physx::PxVec3(0.0f, 0.0f, -50.f);
 
 	m_pPxDispatcher = PxDefaultCpuDispatcherCreate(2);
 	sceneDesc.cpuDispatcher	= m_pPxDispatcher;
diff --git a/vphysics-physx/physics_object.cpp b/vphysics-physx/physics_object.cpp
index 26cc869b..e6921700 100644
--- a/vphysics-physx/physics_object.cpp
+++ b/vphysics-physx/physics_object.cpp
@@ -1016,6 +1016,45 @@ static void InitObjectTemplate( IVP_Template_Real_Object &objectTemplate, int ma
 	objectTemplate.auto_check_rot_inertia = pParams->rotInertiaLimit;
 }
 
+static PxRigidActor *CreatePxActor(PxTransform &transform, PxShape *shape, int materialIndex, objectparams_t *pParams, bool isStatic )
+{
+	PxRigidActor *actor;
+	if( isStatic )
+		actor = gPxPhysics->createRigidStatic(transform);
+	else
+		actor = gPxPhysics->createRigidDynamic(transform);
+
+	while( shape )
+	{
+		actor->attachShape( *shape );
+		shape = (PxShape*)shape->userData;
+	}
+
+	if( !isStatic )
+		PxRigidBodyExt::setMassAndUpdateInertia( *(PxRigidDynamic*)actor, 0.05 );
+
+	return actor;
+
+//	objectTemplate.mass = clamp( pParams->mass, VPHYSICS_MIN_MASS, VPHYSICS_MAX_MASS );
+//	if ( materialIndex >= 0 )
+//	{
+//		objectTemplate.material = physprops->GetIVPMaterial( materialIndex );
+//	}
+//	else
+//	{
+//		materialIndex = physprops->GetSurfaceIndex( "default" );
+//		objectTemplate.material = physprops->GetIVPMaterial( materialIndex );
+//	}
+
+
+
+//	objectTemplate.rot_inertia.set(inertia, inertia, inertia);
+//	objectTemplate.rot_speed_damp_factor.set(pParams->rotdamping, pParams->rotdamping, pParams->rotdamping);
+//	objectTemplate.speed_damp_factor = pParams->damping;
+//	objectTemplate.auto_check_rot_inertia = pParams->rotInertiaLimit;
+}
+
+
 CPhysicsObject *CreatePhysicsObject( CPhysicsEnvironment *pEnvironment, const CPhysCollide *pCollisionModel, int materialIndex, const Vector &position, const QAngle& angles, objectparams_t *pParams, bool isStatic )
 {
 	if ( materialIndex < 0 )
@@ -1089,14 +1128,7 @@ CPhysicsObject *CreatePhysicsObject( CPhysicsEnvironment *pEnvironment, const CP
 		PxQuat q( qw.x, qw.y, qw.z, qw.w );
 
 		PxTransform t(PxVec3(position.x, position.y, position.z), q);
-		PxRigidStatic* body = gPxPhysics->createRigidStatic(t);
-
-		while( shape )
-		{
-			body->attachShape( *shape );
-			shape = (PxShape*)shape->userData;
-		}
-
+		PxRigidActor *body = CreatePxActor( t, shape, materialIndex, pParams, isStatic );
 		scene->addActor(*body);
 	}
 #if 0