capsuleIntersect method
Implementation
OctreeData? capsuleIntersect(Capsule capsule, OctreeNode octree){
_capsule.copy(capsule);
List<Triangle> triangles = getCapsuleTriangles(_capsule, [], octree.subTrees);
bool hit = false;
for(int i = 0; i < triangles.length; i ++ ) {
OctreeData? result = triangleCapsuleIntersect(_capsule, triangles[i]);
if (result != null){
hit = true;
_capsule.translate(result.normal..scale(result.depth));
}
}
if(hit){
Vector3 collisionVector = _capsule.getCenter(Vector3.zero())..sub( capsule.getCenter(_v1));
double depth = collisionVector.length;
return OctreeData(point: Vector3.zero(), normal: collisionVector..normalize(), depth: depth);
}
return null;
}