#### Previous topic

19.1. The Character Object

#### Next topic

19.3. The Constraint Object

# 19.2. The CollisionObject Object¶

A CollisionObject object represents an static or kinematic body against which rigid bodies can collide.

## 19.2.1. Constructor¶

A CollisionObject object can be constructed with PhysicsDevice.createCollisionObject.

## 19.2.2. Methods¶

### 19.2.2.1. calculateTransform¶

Summary

Calculates the world matrix of the collision object.

Syntax

```var transform = mathDevice.m43BuildIdentity();
var n, collisionObject, node;
for (n = 0; n < numNodes; n += 1)
{
collisionObject = collisionObjects[n];
node = nodes[n];

collisionObject.calculateTransform(transform, node.origin);

drawNode(node, transform);
}
```

The transform parameter should be a Matrix43 object and it will be set to the world matrix of the collision object.

The optional origin parameter can be used to offset the world matrix.

### 19.2.2.2. calculateExtents¶

Summary

Calculates the world extents of the collision object.

Syntax

```var extents = [];
collisionObject.calculateExtents(extents);
```
extents
The world extents of the collision object.

### 19.2.2.3. clone¶

Summary

Clones the collision object.

Syntax

```var clonedCollisionObject = collisionObject.clone();
```

Returns a new collision object identical to the original and located at the same position.

## 19.2.3. Properties¶

### 19.2.3.1. transform¶

Summary

The Matrix43 representing the rotation and location of the collision object.

Changing the transform could be an expensive operation because the internal acceleration structures may need updating. Also, it should only be done for kinematic objects once the object is in the physics world.

Syntax

```// Get the current location
var matrix = collisionObject.transform;

// Move it to the origin
collisionObject.transform = mathDevice.m43BuildIdentity();
```

Note

This property is implemented using getters and setters. Setting the property copies the vector values to the CollisionObject’s internal storage, and querieng the property generates a new vector and copies the values from the CollisionObject’s internal storage.

```// THIS WILL NOT WORK!!!
collisionObject.transform = 4;

// THIS WILL NOT WORK!!!
VMath.m43Copy(newTransform, collisionObject.transform);
```

### 19.2.3.2. shape¶

Summary

The Shape object assigned to the collision object.

Syntax

```var shape = collisionObject.shape;
```

Note

### 19.2.3.3. group¶

Summary

The collision group number assigned to the collision object.

Syntax

```var collisionGroup = collisionObject.group;
```

Note

Summary

The collision mask number assigned to the collision object.

Syntax

```var collisionMask = collisionObject.mask;
```

Note

### 19.2.3.5. userData¶

Summary

The user object associated with the collision object.

Syntax

```// Get current user object
var sceneOwner = collisionObject.userData;

// Set a new one
collisionObject.userData = doorEntity;
```

### 19.2.3.6. friction¶

Summary

The friction value of the collision object.

Syntax

```// Get current friction
var friction = collisionObject.friction;

// Double it
collisionObject.friction = (2.0 * friction);
```

### 19.2.3.7. restitution¶

Summary

The restitution value of the collision object.

Syntax

```// Get current restitution
var restitution = collisionObject.restitution;

// Half it
collisionObject.restitution = (0.5 * restitution);
```

### 19.2.3.8. kinematic¶

Summary

True if the collision object was created as kinematic, false otherwise.

Syntax

```var isKinematic = collisionObject.kinematic;
```

Note