> 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.ksshapecollider.md).

# Class ksShapeCollider

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

The base class of all shape colliders.

```csharp
public abstract class ksShapeCollider : ksCollider, ksScript<ksIServerEntity, ksServerEntityScript>.IInternals, ksICollider
```

#### 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) â† [ksCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md) â† [ksShapeCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksshapecollider.md)

#### Derived

[ksBoxCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksboxcollider.md), [ksCapsuleCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscapsulecollider.md), [ksConvexMeshCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksconvexmeshcollider.md), [ksHeightFieldCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksheightfieldcollider.md), [ksPlaneCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksplanecollider.md), [ksSphereCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksspherecollider.md), [ksTriangleMeshCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kstrianglemeshcollider.md)

#### Implements

ksScript\<ksIServerEntity, ksServerEntityScript>.IInternals, ksICollider

#### Inherited Members

[ksCollider.m\_scale](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_scale), [ksCollider.m\_position](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_position), [ksCollider.m\_rotation](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_rotation), [ksCollider.m\_enabled](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_enabled), [ksCollider.m\_useEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_m_useEntityCollisionFilter), [ksCollider.UseEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_UseEntityCollisionFilter), [ksCollider.IsQueryCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsQueryCollider), [ksCollider.IsSimulationCollider](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsSimulationCollider), [ksCollider.IsTrigger](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsTrigger), [ksCollider.CollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_CollisionFilter), [ksCollider.Bounds](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Bounds), [ksCollider.IsEnabled](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_IsEnabled), [ksCollider.ContactOffset](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ContactOffset), [ksCollider.Offset](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Offset), [ksCollider.ScaleGeometry()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ScaleGeometry), [ksCollider.Clone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_Clone), [ksCollider.ConstructClone()](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_ConstructClone), [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

### Bounds <a href="#ks_reactor_server_ksshapecollider_bounds" id="ks_reactor_server_ksshapecollider_bounds"></a>

Get the bounds of a collider at the position of its attached entity or at the origin if the collider is not attached to an entity.

```csharp
public override ksBounds Bounds { get; }
```

#### Property Value

ksBounds

### CollisionFilter <a href="#ks_reactor_server_ksshapecollider_collisionfilter" id="ks_reactor_server_ksshapecollider_collisionfilter"></a>

Gets/Sets the collider's collision filter which determines which entities to collide with and notify of collision/overlap events. If you set this to null, it will set it to [CollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md#KS_Reactor_Server_ksIServerEntity_CollisionFilter) and set [UseEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_UseEntityCollisionFilter) to true. If you set it to anything but null, it will set [UseEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_UseEntityCollisionFilter) to false.

```csharp
public override ksCollisionFilter CollisionFilter { get; set; }
```

#### Property Value

ksCollisionFilter

### ContactOffset <a href="#ks_reactor_server_ksshapecollider_contactoffset" id="ks_reactor_server_ksshapecollider_contactoffset"></a>

Gets/Sets the contact offset of the collider. Colliders whose distance is less than the sum of their contact offset values will generate contacts.

```csharp
public override float ContactOffset { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### IsEnabled <a href="#ks_reactor_server_ksshapecollider_isenabled" id="ks_reactor_server_ksshapecollider_isenabled"></a>

Gets/Sets the enabled state of the collider. If false, the collider won't collide with other colliders.

```csharp
public override bool IsEnabled { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsQueryCollider <a href="#ks_reactor_server_ksshapecollider_isquerycollider" id="ks_reactor_server_ksshapecollider_isquerycollider"></a>

If true, the collider will partake in scene queries.

```csharp
public override bool IsQueryCollider { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsSimulationCollider <a href="#ks_reactor_server_ksshapecollider_issimulationcollider" id="ks_reactor_server_ksshapecollider_issimulationcollider"></a>

If true, the collider will partake in collisions in the physical simulation.

```csharp
public override bool IsSimulationCollider { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsTrigger <a href="#ks_reactor_server_ksshapecollider_istrigger" id="ks_reactor_server_ksshapecollider_istrigger"></a>

If true, the collider will not partake in collisions in the physical simulation. Instead, it raises [OnOverlapStart](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md#KS_Reactor_Server_ksIServerEntity_OnOverlapStart) and [OnOverlapEnd](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md#KS_Reactor_Server_ksIServerEntity_OnOverlapEnd) events. The [CollisionFilter](#KS_Reactor_Server_ksShapeCollider_CollisionFilter)'s Collide flag will be ignored if this is true.

```csharp
public override bool IsTrigger { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### Material <a href="#ks_reactor_server_ksshapecollider_material" id="ks_reactor_server_ksshapecollider_material"></a>

The physics material that determines the friction and restitution of the collider for collisions. If you set this to null, it will set it to [PhysicsMaterial](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md#KS_Reactor_Server_ksIServerEntity_PhysicsMaterial) and set [UseEntityPhysicsMaterial](#KS_Reactor_Server_ksShapeCollider_UseEntityPhysicsMaterial) to true. If you set it to anything but null, it will set [UseEntityPhysicsMaterial](#KS_Reactor_Server_ksShapeCollider_UseEntityPhysicsMaterial) to false.

```csharp
public ksPhysicsMaterial Material { get; set; }
```

#### Property Value

[ksPhysicsMaterial](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksphysicsmaterial.md)

### MinTorsionalPatchRadius <a href="#ks_reactor_server_ksshapecollider_mintorsionalpatchradius" id="ks_reactor_server_ksshapecollider_mintorsionalpatchradius"></a>

Gets/Sets minimum torsional patch radius. This defines the minimum radius of the contact patch used to apply torsional friction. If the radius is 0, the amount of torsional friction that will be applied will be entirely dependent on the value of [TorsionalPatchRadius](#KS_Reactor_Server_ksShapeCollider_TorsionalPatchRadius). If the radius is > 0, the physics engine will ensure that the contact patch used to apply torsional friction is at least this radius.

```csharp
public float MinTorsionalPatchRadius { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### Offset <a href="#ks_reactor_server_ksshapecollider_offset" id="ks_reactor_server_ksshapecollider_offset"></a>

Gets/Sets the offset from the entity position.

```csharp
public override ksVector3 Offset { get; set; }
```

#### Property Value

ksVector3

### PhysXShape <a href="#ks_reactor_server_ksshapecollider_physxshape" id="ks_reactor_server_ksshapecollider_physxshape"></a>

PhysX shape.

```csharp
public pxShape PhysXShape { get; }
```

#### Property Value

[pxShape](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxshape.md)

### RestOffset <a href="#ks_reactor_server_ksshapecollider_restoffset" id="ks_reactor_server_ksshapecollider_restoffset"></a>

Gets/Sets the rest offset of the collider. Two shapes will come to rest at a distance equal to the sum of their restOffset values. If the restOffset is 0, they should converge to touching exactly.

```csharp
public float RestOffset { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### Rotation <a href="#ks_reactor_server_ksshapecollider_rotation" id="ks_reactor_server_ksshapecollider_rotation"></a>

Gets/Sets the rotation.

```csharp
public virtual ksQuaternion Rotation { get; set; }
```

#### Property Value

ksQuaternion

### ScaledOffset <a href="#ks_reactor_server_ksshapecollider_scaledoffset" id="ks_reactor_server_ksshapecollider_scaledoffset"></a>

Gets the scaled offset from the entity position.

```csharp
public ksVector3 ScaledOffset { get; }
```

#### Property Value

ksVector3

### ShapeType <a href="#ks_reactor_server_ksshapecollider_shapetype" id="ks_reactor_server_ksshapecollider_shapetype"></a>

Gets the shape type.

```csharp
public ksShape.ShapeTypes ShapeType { get; }
```

#### Property Value

ksShape.ShapeTypes

### TorsionalPatchRadius <a href="#ks_reactor_server_ksshapecollider_torsionalpatchradius" id="ks_reactor_server_ksshapecollider_torsionalpatchradius"></a>

Gets/Sets torsional patch radius. This defines the radius of the contact patch used to apply torsional friction. If the radius is 0, no torsional friction will be applied. If the radius is > 0, some torsional friction will be applied.

```csharp
public float TorsionalPatchRadius { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### UseEntityPhysicsMaterial <a href="#ks_reactor_server_ksshapecollider_useentityphysicsmaterial" id="ks_reactor_server_ksshapecollider_useentityphysicsmaterial"></a>

Does this collider use the entity's physics material? Changing the entity's [PhysicsMaterial](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md#KS_Reactor_Server_ksIServerEntity_PhysicsMaterial) when this is true will change the collider's [Material](#KS_Reactor_Server_ksShapeCollider_Material). Setting this to true will set the collider's material to the entity's.

```csharp
public bool UseEntityPhysicsMaterial { get; set; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

## Methods

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

Initializes the collider.

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

### Clone() <a href="#ks_reactor_server_ksshapecollider_clone" id="ks_reactor_server_ksshapecollider_clone"></a>

Creates a copy of the collider.

```csharp
public override ksServerEntityScript Clone()
```

#### Returns

[ksServerEntityScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md)

Cloned collider.

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

Cleans up the collider.

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

### MarkMassPropertiesDirty() <a href="#ks_reactor_server_ksshapecollider_markmasspropertiesdirty" id="ks_reactor_server_ksshapecollider_markmasspropertiesdirty"></a>

Looks for a rigid body to mark dirty so its inertia tensor and center of mass are recalculated before the next physics update.

```csharp
protected void MarkMassPropertiesDirty()
```

### UpdateInertiaTensor() <a href="#ks_reactor_server_ksshapecollider_updateinertiatensor" id="ks_reactor_server_ksshapecollider_updateinertiatensor"></a>

Updates the interia tensor on the attached actor.

```csharp
protected void UpdateInertiaTensor()
```
