示例#1
0
        internal static IEnumerable <RectHitResult> HitTest(GLPanel3D viewport, RectF rectInWpf, RectHitTestMode hitTestMode)
        {
            var results = new List <RectHitResult>();

            if (!viewport.Camera.TotalTransformReverse.HasValue)
            {
                return(results);
            }

            var isFullContain = hitTestMode == RectHitTestMode.FullContain;

            foreach (var visusl in viewport.Visuals.Where(v => v.IsVisible && v.IsHitTestVisible && v.Model != null))
            {
                _HitTest(viewport, rectInWpf, visusl.Model, results, isFullContain);
            }

            return(results);
        }
示例#2
0
        public static IEnumerable <RectHitResult> HitTest(GLPanel3D viewport, IEnumerable <IHitTestSource> models, RectF rectInWpf, RectHitTestMode hitTestMode)
        {
            var results = new List <RectHitResult>();

            if (!viewport.Camera.TotalTransformReverse.HasValue)
            {
                return(results);
            }

            var isFullContain = hitTestMode == RectHitTestMode.FullContain;

            foreach (var model in models)
            {
                _HitTest(viewport, rectInWpf, model, results, isFullContain);
            }

            return(results);
        }