> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksrigidbody.md).

# Class ksRigidBody

Namespace: [KS.Reactor.Server](/reactor/api-reference/ks.reactor.server.md)\
Assembly: KSReactor.dll

A 3D rigid body. When attached to entities, it allows the entity to be controlled by the physics simulation with its properties such as mass, drag, and velocity. If isKinematic is enabled, forces, collisions or joints will not affect the rigidbody, but it will push regular dynamic actors out of the way when moved.

```csharp
public class ksRigidBody : ksBaseRigidBody, ksScript<ksIServerEntity, ksServerEntityScript>.IInternals, ksIRigidBody
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† ksScript\<ksIServerEntity, ksServerEntityScript> â† [ksServerEntityScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md) â† [ksBaseRigidBody](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md) â† [ksRigidBody](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksrigidbody.md)

#### Implements

ksScript\<ksIServerEntity, ksServerEntityScript>.IInternals, ksIRigidBody

#### Inherited Members

[ksBaseRigidBody.DefaultMode](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_DefaultMode), [ksBaseRigidBody.m\_kinematicMotionBodies](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_m_kinematicMotionBodies), [ksBaseRigidBody.m\_inKinematicList](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_m_inKinematicList), [ksBaseRigidBody.Attached()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Attached), [ksBaseRigidBody.Detached()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Detached), [ksBaseRigidBody.PhysXRigidBody](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_PhysXRigidBody), [ksBaseRigidBody.Mass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Mass), [ksBaseRigidBody.Drag](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Drag), [ksBaseRigidBody.AngularDrag](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AngularDrag), [ksBaseRigidBody.AddForceAtPosition(ksVector3, ksVector3, ksForceMode)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AddForceAtPosition_KS_Reactor_ksVector3_KS_Reactor_ksVector3_KS_Reactor_ksForceMode_), [ksBaseRigidBody.AddExplosiveForce(ksVector3, float, float, ksMath.Interpolation, float, ksForceMode, List\<ksCollider>)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AddExplosiveForce_KS_Reactor_ksVector3_System_Single_System_Single_KS_Reactor_ksMath_Interpolation_System_Single_KS_Reactor_ksForceMode_System_Collections_Generic_List_KS_Reactor_Server_ksCollider__), [ksBaseRigidBody.ClearForce()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ClearForce), [ksBaseRigidBody.ClearTorque()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ClearTorque), [ksBaseRigidBody.IsKinematic](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_IsKinematic), [ksBaseRigidBody.UseGravity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_UseGravity), [ksBaseRigidBody.CollisionDetectionMode](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CollisionDetectionMode), [ksBaseRigidBody.Constraints](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Constraints), [ksBaseRigidBody.MaxLinearSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxLinearSpeed), [ksBaseRigidBody.MaxAngularSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxAngularSpeed), [ksBaseRigidBody.MaxDepenetrationSpeed](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MaxDepenetrationSpeed), [ksBaseRigidBody.SleepThreshold](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SleepThreshold), [ksBaseRigidBody.SolverIterations](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SolverIterations), [ksBaseRigidBody.SolverVelocityIterations](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_SolverVelocityIterations), [ksBaseRigidBody.IsSleeping](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_IsSleeping), [ksBaseRigidBody.Sleep()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Sleep), [ksBaseRigidBody.WakeUp()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_WakeUp), [ksBaseRigidBody.AutoCalculateInertiaTensor](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AutoCalculateInertiaTensor), [ksBaseRigidBody.InertiaTensor](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensor), [ksBaseRigidBody.InertiaTensorRotation](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensorRotation), [ksBaseRigidBody.AutoCalculateCenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_AutoCalculateCenterOfMass), [ksBaseRigidBody.CenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CenterOfMass), [ksBaseRigidBody.WorldCenterOfMass](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_WorldCenterOfMass), [ksBaseRigidBody.InertiaTensorDirty](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_InertiaTensorDirty), [ksBaseRigidBody.CenterOfMassDirty](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_CenterOfMassDirty), [ksBaseRigidBody.MarkMassPropertiesDirty(bool, bool)](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_MarkMassPropertiesDirty_System_Boolean_System_Boolean_), [ksBaseRigidBody.BuildMassProperties()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_BuildMassProperties), [ksBaseRigidBody.Clone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_Clone), [ksBaseRigidBody.ApplyKinematicMotion()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaserigidbody.md#KS_Reactor_Server_ksBaseRigidBody_ApplyKinematicMotion), [ksServerEntityScript.Entity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Entity), [ksServerEntityScript.Room](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Room), [ksServerEntityScript.Time](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Time), [ksServerEntityScript.Physics](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Physics), [ksServerEntityScript.Properties](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Properties), [ksServerEntityScript.Transform](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Transform), [ksServerEntityScript.Transform2D](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md#KS_Reactor_Server_ksServerEntityScript_Transform2D), ksScript\<ksIServerEntity, ksServerEntityScript>.InstanceType, ksScript\<ksIServerEntity, ksServerEntityScript>.IsAttached, ksScript\<ksIServerEntity, ksServerEntityScript>.Scripts, ksScript\<ksIServerEntity, ksServerEntityScript>.Assets, ksScript\<ksIServerEntity, ksServerEntityScript>.Attached(), ksScript\<ksIServerEntity, ksServerEntityScript>.Initialize(), ksScript\<ksIServerEntity, ksServerEntityScript>.Detached(), ksScript\<ksIServerEntity, ksServerEntityScript>.Clone(), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Properties

### AngularVelocity <a href="#ks_reactor_server_ksrigidbody_angularvelocity" id="ks_reactor_server_ksrigidbody_angularvelocity"></a>

Angular velocity in degrees.

```csharp
public ksVector3 AngularVelocity { get; set; }
```

#### Property Value

ksVector3

### KinematicMovement <a href="#ks_reactor_server_ksrigidbody_kinematicmovement" id="ks_reactor_server_ksrigidbody_kinematicmovement"></a>

Amount of movement that will be applied to a kinematic rigid body entity during the next physics simulation step. After the simulation step this value will be reset to [Zero](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md#KS_Reactor_ksVector3_Zero).

```csharp
public ksVector3 KinematicMovement { get; set; }
```

#### Property Value

ksVector3

### KinematicRotation <a href="#ks_reactor_server_ksrigidbody_kinematicrotation" id="ks_reactor_server_ksrigidbody_kinematicrotation"></a>

Amount of rotation that will be applied to a kinematic rigid body entity during the next physics simulation step. After the simulation step this value will be reset to [Identity](/reactor/api-reference/ks.reactor/ks.reactor.ksquaternion.md#KS_Reactor_ksQuaternion_Identity).

```csharp
public ksQuaternion KinematicRotation { get; set; }
```

#### Property Value

ksQuaternion

### Velocity <a href="#ks_reactor_server_ksrigidbody_velocity" id="ks_reactor_server_ksrigidbody_velocity"></a>

Velocity.

```csharp
public ksVector3 Velocity { get; set; }
```

#### Property Value

ksVector3

## Methods

### AddForce(ksVector3, ksForceMode) <a href="#ks_reactor_server_ksrigidbody_addforce_ks_reactor_ksvector3_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody_addforce_ks_reactor_ksvector3_ks_reactor_ksforcemode"></a>

Adds a force to the rigidbody.

```csharp
public void AddForce(ksVector3 force, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`force` ksVector3

Force to add.

`mode` ksForceMode

Determines how the force is applied.

### AddForceRelative(ksVector3, ksForceMode) <a href="#ks_reactor_server_ksrigidbody_addforcerelative_ks_reactor_ksvector3_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody_addforcerelative_ks_reactor_ksvector3_ks_reactor_ksforcemode"></a>

Adds a force to the rigidbody relative to the entity's rotation.

```csharp
public void AddForceRelative(ksVector3 force, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`force` ksVector3

Force to add.

`mode` ksForceMode

Determines how the force is applied.

### AddTorque(ksVector3, ksForceMode) <a href="#ks_reactor_server_ksrigidbody_addtorque_ks_reactor_ksvector3_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody_addtorque_ks_reactor_ksvector3_ks_reactor_ksforcemode"></a>

Adds a torque to the rigidbody.

```csharp
public void AddTorque(ksVector3 torque, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`torque` ksVector3

Torque to add.

`mode` ksForceMode

Determines how the torque is applied.

### AddTorqueRelative(ksVector3, ksForceMode) <a href="#ks_reactor_server_ksrigidbody_addtorquerelative_ks_reactor_ksvector3_ks_reactor_ksforcemode" id="ks_reactor_server_ksrigidbody_addtorquerelative_ks_reactor_ksvector3_ks_reactor_ksforcemode"></a>

Adds a torque to the rigidbody relative to the entity's rotation.

```csharp
public void AddTorqueRelative(ksVector3 torque, ksForceMode mode = ksForceMode.FORCE)
```

#### Parameters

`torque` ksVector3

Torque to add.

`mode` ksForceMode

Determines how the torque is applied.

### ApplyKinematicMotion() <a href="#ks_reactor_server_ksrigidbody_applykinematicmotion" id="ks_reactor_server_ksrigidbody_applykinematicmotion"></a>

Applies kinematic motion.

```csharp
protected override void ApplyKinematicMotion()
```

### Attached() <a href="#ks_reactor_server_ksrigidbody_attached" id="ks_reactor_server_ksrigidbody_attached"></a>

Initializes the rigid body.

```csharp
public override void Attached()
```

### ClearKinematicMotion() <a href="#ks_reactor_server_ksrigidbody_clearkinematicmotion" id="ks_reactor_server_ksrigidbody_clearkinematicmotion"></a>

Clear the Kinematic movement and rotation values.

```csharp
public void ClearKinematicMotion()
```

### Detached() <a href="#ks_reactor_server_ksrigidbody_detached" id="ks_reactor_server_ksrigidbody_detached"></a>

Performs clean up.

```csharp
public override void Detached()
```
