private List <Vector3> GetRayCastPositionsOnCharacterBoundByVelocity(FRay[] insideCastRays, BoundBase characterBound, Vector3 boundMax, Vector3 boundMin, Vector3 boundOrigin) { List <Vector3> rayCastPositions = new List <Vector3>(); for (Int32 i = 0; i < insideCastRays.Length; i++) { FRay ray = insideCastRays[i]; float localIntersectionDistance = -1.0f; BoundBase.BoundType boundType = characterBound.GetBoundType(); if ((boundType & BoundBase.BoundType.AABB) == BoundBase.BoundType.AABB) { localIntersectionDistance = GeometryMath.Intersection_RayAABBExt(ray, boundMax, boundMin); } else if ((boundType & BoundBase.BoundType.OBB) == BoundBase.BoundType.OBB) { localIntersectionDistance = GeometryMath.Intersection_RayOBBExt(ray, (characterBound as OBB).GetTangetX(), (characterBound as OBB).GetTangetY(), (characterBound as OBB).GetTangetZ(), boundOrigin, (characterBound as OBB).GetExtent()); } if (localIntersectionDistance > -1.0f) { Vector3 intersectionPosition = ray.GetPositionInTime(localIntersectionDistance); rayCastPositions.Add(new Vector3(intersectionPosition)); } } return(rayCastPositions); }