I was looking at implementing collision with a ChaseCamera using this class here:

https://gist.github.com/erlend-sh/4252435

I ran into some troubles casting a List to a LinkedList in the “collide” method

```
public void collide() {
LinkedList<PhysicsRayTestResult> testResults;
testResults = (LinkedList) myPhysicsSpace.rayTest(target.getWorldTranslation(), maxPos);
float hitFraction = 1f;
if(testResults != null && testResults.size() > 0) {
hitFraction = testResults.getFirst().getHitFraction();
}
targetDistance = ((float)((int)(hitFraction*100)))/100 * maxDistanceByZoom;
}
```

All that was needed to fix the problem was to use ArrayList instead of LinkedList and get the 0th index of the List when setting the hitFraction variable.

```
public void collide() {
ArrayList<PhysicsRayTestResult> testResults;
testResults = (ArrayList) myPhysicsSpace.rayTest(target.getWorldTranslation(), maxPos);
float hitFraction = 1f;
if(testResults != null && testResults.size() > 0) {
hitFraction = testResults.get(0).getHitFraction();
}
targetDistance = ((float)((int)(hitFraction*100)))/100 * maxDistanceByZoom;
}
```

Anyone have any idea why it used LinkedList in the first place?

Edit: If anyone is looking at using this, and is having troubles with the PhysicalChaseCamera just barely clipping through terrain; I changed

```
maxPos = new Vector3f(hDistance * FastMath.cos(rotation), (maxDistanceByZoom) * FastMath.sin(vRotation), hDistance * FastMath.sin(rotation));
```

to

```
maxPos = new Vector3f(hDistance * FastMath.cos(rotation), (maxDistanceByZoom) * FastMath.sin(vRotation-.3f), hDistance * FastMath.sin(rotation));
```

(The change is in the vRotation) Seems to be working much nicer now.