Files
sbox-public/engine/Definitions/common/Physics/IPhysicsWorld.def
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

90 lines
3.4 KiB
Modula-2

#include "vphysics2/iphysicsbody.h"
native enum JointMotion_t is Sandbox.JointMotion;
native enum PhysicsBodyType_t is Sandbox.PhysicsBodyType;
native enum PhysicsJointType_t is Sandbox.PhysicsJointType;
native enum PhysicsShapeType_t is Sandbox.PhysicsShapeType;
native enum PhysicsSimulation_t is Sandbox.PhysicsSimulationMode;
native enum VPhysicsMotionType_t is Sandbox.PhysicsMotionType;
delegate ProcessIntersectionsDelegate_t;
delegate DebugDrawDelegate_t;
[Handle:Sandbox.PhysicsWorld]
native class IPhysicsWorld
{
// Bodies
IPhysicsBody AddBody();
void RemoveBody( IPhysicsBody pBody );
IPhysicsBody GetWorldReferenceBody();
void SetWorldReferenceBody( IPhysicsBody pBody );
// Joints
void RemoveJoint( IPhysicsJoint pJoint );
void SetGravity( Vector3 gravity );
Vector3 GetGravity();
void SetSimulation( PhysicsSimulationMode simulation );
PhysicsSimulationMode GetSimulation();
// Sleeping
void EnableSleeping();
void DisableSleeping();
bool IsSleepingEnabled();
void SetMaximumLinearSpeed( float flSpeed );
IPhysicsJoint AddWeldJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
IPhysicsJoint AddSpringJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
IPhysicsJoint AddRevoluteJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
IPhysicsJoint AddPrismaticJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
IPhysicsJoint AddSphericalJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
IPhysicsJoint AddMotorJoint( IPhysicsBody pBody1, IPhysicsBody pBody2, Transform localFrame1, Transform localFrame2 );
//
// Sets the collision rules using a json serialized Sandbox.Internal.CollisionRules
//
void SetCollisionRulesFromJson( string rules );
inline void StepSimulation( float flTimestep, int nNumSteps )
{
g_pPhysicsSystem->StepSimulation( &self, 1, flTimestep, nNumSteps );
}
void ProcessIntersections( ProcessIntersectionsDelegate_t f );
void DestroyAggregateInstance( IPhysAggregateInstance pAggregate );
inline IPhysAggregateInstance CreateAggregateInstance( string resourceName, Transform tmStart, ulong nGSNHandle, PhysicsMotionType nMotionType )
{
HPhysAggregateData_Internal hPhysicsData = g_pResourceSystem->FindExistingResourceByName< RESOURCE_TYPE_PHYSICSDATA_INTERNAL >( CResourceName( resourceName ) );
IPhysAggregateInstance *pInstance = nullptr;
if ( !hPhysicsData.HasData() )
return pInstance;
pInstance = self->CreateAggregateInstance( hPhysicsData, tmStart, nGSNHandle, nMotionType );
return pInstance;
}
inline IPhysAggregateInstance CreateAggregateInstance( IModel model, Transform tmStart, ulong nGSNHandle, PhysicsMotionType nMotionType )
{
return self->CreateAggregateInstance( model->GetPhysicsContainer(), tmStart, nGSNHandle, nMotionType );
}
void SetDebugScene( ISceneWorld world );
ISceneWorld GetDebugScene();
void Draw( DebugDrawDelegate_t debugDrawFcn );
inline IPhysicsWorld ManagedObject()
{
return self;
}
void Query( cref CQueryResult result, Vector3 vCenter, float flRadius, CastTo[RnQueryObjectSet] ushort nObjectSetMask );
void Query( cref CQueryResult result, AABB_t bounds, CastTo[RnQueryObjectSet] ushort nObjectSetMask );
void Query( cref CQueryResult result, CastTo[Vector*] void* pPoints, int nPoints, CastTo[RnQueryObjectSet] ushort nObjectSetMask );
}