示例#1
0
        public static void CastRay(Vector3D from, Vector3D to, List <HitInfo> toList, int raycastFilterLayer = 0)
        {
            m_resultWorlds.Clear();
            Clusters.CastRay(from, to, m_resultWorlds);

            toList.Clear();

            foreach (var world in m_resultWorlds)
            {
                Vector3 fromF = from - world.AABB.Center;
                Vector3 toF   = to - world.AABB.Center;

                m_resultHits.Clear();
                ((HkWorld)world.UserData).CastRay(fromF, toF, m_resultHits, raycastFilterLayer);

                foreach (var hit in m_resultHits)
                {
                    toList.Add(new HitInfo()
                    {
                        HkHitInfo = hit,
                        Position  = hit.Position + world.AABB.Center
                    }
                               );
                }
            }

            m_resultWorlds.Clear();
        }