コード例 #1
0
ファイル: WidgetAdapter3D.cs プロジェクト: klenin/Citrus
        internal protected override bool PartialHitTest(ref HitTestArgs args)
        {
            if (Widget == null)
            {
                return(false);
            }
            var plane    = GetPlane();
            var ray      = args.Ray;
            var distance = ray.Intersects(plane);

            if (distance.HasValue && distance <= args.Distance)
            {
                var oldPoint = args.Point;
                try {
                    args.Point = (Vector2)GlobalTransform.CalcInverted().TransformVector(ray.Position + ray.Direction * distance.Value) * new Vector2(1, -1);
                    Widget.RenderChainBuilder?.AddToRenderChain(renderChain);
                    if (renderChain.HitTest(ref args))
                    {
                        args.Distance = distance.Value;
                        return(true);
                    }
                } finally {
                    args.Point = oldPoint;
                    renderChain.Clear();
                }
            }
            return(false);
        }
コード例 #2
0
ファイル: SceneView.cs プロジェクト: x5f3759df/Citrus
            public bool PartialHitTest(Node node, ref HitTestArgs args)
            {
                var w = (Widget)node;
                var p = args.Point;

                try {
                    content.RenderChainBuilder?.AddToRenderChain(renderChain);
                    args.Point = w.LocalToWorldTransform.CalcInversed().TransformVector(args.Point);
                    return(renderChain.HitTest(ref args));
                } finally {
                    args.Point = p;
                    renderChain.Clear();
                }
            }
コード例 #3
0
ファイル: SyncPresenters.cs プロジェクト: x5f3759df/Citrus
 public override bool PartialHitTest(Node node, ref HitTestArgs args)
 {
     return(hitTest != null && hitTest((T)node, ref args));
 }
コード例 #4
0
ファイル: SyncPresenters.cs プロジェクト: x5f3759df/Citrus
 public virtual bool PartialHitTest(Node node, ref HitTestArgs args) => false;
コード例 #5
0
ファイル: DockManager.cs プロジェクト: kutselabskii/Citrus
 protected override bool InternalPartialHitTest(Widget node, ref HitTestArgs args)
 {
     return(node.BoundingRectHitTest(args.Point));
 }