mirror of
https://github.com/Facepunch/sbox-public.git
synced 2025-12-23 22:48:07 -05:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
90 lines
3.4 KiB
Modula-2
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 );
|
|
}
|