Example #1
0
        private void DetectPoint(Vector3 center, Collider cld)
        {
            var pos = m_DetectClosest
                ? cld.ClosestPoint(center)
                : cld.transform.position;

            if (IsVisiblePoint(center, pos, out NormalizedPoint point))
            {
                var item = Result.NewDetectionDataItem();
                item.AdditionalDetectionData = new DetectedCollider
                {
                    Position = pos,
                    Collider = cld
                };
                item.Tag = cld.tag;
                item.AddPoint(point);
                Result.AddDetectionDataItem(item);
                m_VisiblePointCount++;
            }
            m_TotalPointCount++;
        }
Example #2
0
        private void DetectShape(Vector3 center, Collider cld)
        {
            var pos = cld.ClosestPoint(center);

            if (IsVisiblePoint(center, pos, out NormalizedPoint point))
            {
                // Should always be true. We want at least the
                // closest point's coords, even if all scanned
                // points happen to be outside the field of view.
                var item = Result.NewDetectionDataItem();
                item.AdditionalDetectionData = new DetectedCollider
                {
                    Position = pos,
                    Collider = cld
                };
                item.Tag = cld.tag;
                item.AddPoint(point);
                m_VisiblePointCount++;
                m_TotalPointCount++;

                if (!s_SharedColliderShapeCache.TryGetValue(cld, out ColliderShape shape))
                {
                    shape = new ColliderShape(cld);
                    shape.Scan(m_ScanResolution, m_ScanExtent);
                    s_SharedColliderShapeCache.Add(cld, shape);
                }

                var shapePoints = shape.GetWorldPoints();
                foreach (Vector3 p in shapePoints)
                {
                    if (IsVisiblePoint(center, p, out point))
                    {
                        item.AddPoint(point);
                        m_VisiblePointCount++;
                    }
                }
                Result.AddDetectionDataItem(item);
                m_TotalPointCount += shape.NumPoints;
            }
        }