Raycast() public method

public Raycast ( System.Vector2 sp, Camera eventCamera ) : bool
sp System.Vector2
eventCamera Camera
return bool
コード例 #1
0
 static public int Raycast(IntPtr l)
 {
     try {
                     #if DEBUG
         var    method     = System.Reflection.MethodBase.GetCurrentMethod();
         string methodName = GetMethodName(method);
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.BeginSample(methodName);
                     #else
         Profiler.BeginSample(methodName);
                     #endif
                     #endif
         UnityEngine.UI.Graphic self = (UnityEngine.UI.Graphic)checkSelf(l);
         UnityEngine.Vector2    a1;
         checkType(l, 2, out a1);
         UnityEngine.Camera a2;
         checkType(l, 3, out a2);
         var ret = self.Raycast(a1, a2);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
             #if DEBUG
     finally {
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.EndSample();
                     #else
         Profiler.EndSample();
                     #endif
     }
             #endif
 }
コード例 #2
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List <Graphic> results)
        {
            IList <Graphic> graphicsForCanvas = GraphicRegistry.GetGraphicsForCanvas(canvas);

            for (int i = 0; i < graphicsForCanvas.Count; i++)
            {
                Graphic graphic = graphicsForCanvas[i];
                if (!graphic.canvasRenderer.cull)
                {
                    if (graphic.depth != -1 && graphic.raycastTarget)
                    {
                        if (RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition, eventCamera))
                        {
                            if (graphic.Raycast(pointerPosition, eventCamera))
                            {
                                GraphicRaycaster.s_SortedGraphics.Add(graphic);
                            }
                        }
                    }
                }
            }
            GraphicRaycaster.s_SortedGraphics.Sort((Graphic g1, Graphic g2) => g2.depth.CompareTo(g1.depth));
            for (int j = 0; j < GraphicRaycaster.s_SortedGraphics.Count; j++)
            {
                results.Add(GraphicRaycaster.s_SortedGraphics[j]);
            }
            GraphicRaycaster.s_SortedGraphics.Clear();
        }
コード例 #3
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, IList <Graphic> foundGraphics, List <Graphic> results)
        {
            int count = foundGraphics.Count;

            for (int i = 0; i < count; i++)
            {
                Graphic graphic = foundGraphics[i];
                if (graphic.depth != -1 && graphic.raycastTarget && !graphic.canvasRenderer.cull)
                {
                    if (RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition, eventCamera))
                    {
                        if (!(eventCamera != null) || eventCamera.WorldToScreenPoint(graphic.rectTransform.position).z <= eventCamera.farClipPlane)
                        {
                            if (graphic.Raycast(pointerPosition, eventCamera))
                            {
                                GraphicRaycaster.s_SortedGraphics.Add(graphic);
                            }
                        }
                    }
                }
            }
            GraphicRaycaster.s_SortedGraphics.Sort((Graphic g1, Graphic g2) => g2.depth.CompareTo(g1.depth));
            count = GraphicRaycaster.s_SortedGraphics.Count;
            for (int j = 0; j < count; j++)
            {
                results.Add(GraphicRaycaster.s_SortedGraphics[j]);
            }
            GraphicRaycaster.s_SortedGraphics.Clear();
        }
コード例 #4
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List <GameObject> results)
        {
            // Necessary for the event system
            var foundGraphics = GraphicRegistry.GetGraphicsForCanvas(canvas);

            s_SortedGraphics.Clear();

            for (int i = 0; i < foundGraphics.Count; ++i)
            {
                Graphic graphic = foundGraphics[i];

                // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn
                if (graphic.depth == -1)
                {
                    continue;
                }
                if (!RectTransformUtility.PointInRectangle(pointerPosition, graphic.rectTransform, eventCamera))
                {
                    continue;
                }

                if (graphic.Raycast(pointerPosition, eventCamera))
                {
                    s_SortedGraphics.Add(graphic);
                }
            }

            s_SortedGraphics.Sort((g1, g2) => g2.depth.CompareTo(g1.depth));
            for (int i = 0; i < s_SortedGraphics.Count; ++i)
            {
                results.Add(s_SortedGraphics[i].gameObject);
            }
        }
コード例 #5
0
    static int Raycast(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 3);
        UnityEngine.UI.Graphic obj = (UnityEngine.UI.Graphic)LuaScriptMgr.GetUnityObjectSelf(L, 1, "UnityEngine.UI.Graphic");
        Vector2 arg0 = LuaScriptMgr.GetVector2(L, 2);
        Camera  arg1 = (Camera)LuaScriptMgr.GetUnityObject(L, 3, typeof(Camera));
        bool    o    = obj.Raycast(arg0, arg1);

        LuaScriptMgr.Push(L, o);
        return(1);
    }
コード例 #6
0
    static int Raycast(IntPtr L)
    {
        L.ChkArgsCount(3);
        UnityEngine.UI.Graphic obj = (UnityEngine.UI.Graphic)L.ChkUnityObjectSelf(1, "UnityEngine.UI.Graphic");
        var  arg0 = L.ToVector2(2);
        var  arg1 = L.ToComponent(3, typeof(UnityEngine.Camera)) as UnityEngine.Camera;
        bool o    = obj.Raycast(arg0, arg1);

        L.PushBoolean(o);
        return(1);
    }
コード例 #7
0
 static public int Raycast(IntPtr l)
 {
     try {
         UnityEngine.UI.Graphic self = (UnityEngine.UI.Graphic)checkSelf(l);
         UnityEngine.Vector2    a1;
         checkType(l, 2, out a1);
         UnityEngine.Camera a2;
         checkType(l, 3, out a2);
         var ret = self.Raycast(a1, a2);
         pushValue(l, ret);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
コード例 #8
0
 static int QPYX_Raycast_YXQP(IntPtr L_YXQP)
 {
     try
     {
         ToLua.CheckArgsCount(L_YXQP, 3);
         UnityEngine.UI.Graphic QPYX_obj_YXQP  = (UnityEngine.UI.Graphic)ToLua.CheckObject <UnityEngine.UI.Graphic>(L_YXQP, 1);
         UnityEngine.Vector2    QPYX_arg0_YXQP = ToLua.ToVector2(L_YXQP, 2);
         UnityEngine.Camera     QPYX_arg1_YXQP = (UnityEngine.Camera)ToLua.CheckObject(L_YXQP, 3, typeof(UnityEngine.Camera));
         bool QPYX_o_YXQP = QPYX_obj_YXQP.Raycast(QPYX_arg0_YXQP, QPYX_arg1_YXQP);
         LuaDLL.lua_pushboolean(L_YXQP, QPYX_o_YXQP);
         return(1);
     }
     catch (Exception e_YXQP)                {
         return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP));
     }
 }
コード例 #9
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition,
                                    IList <Graphic> foundGraphics, List <Graphic> results)
        {
            // Debug.Log("ttt" + pointerPoision + ":::" + camera);
            // Necessary for the event system
            int totalCount = foundGraphics.Count;

            for (int i = 0; i < totalCount; ++i)
            {
                Graphic graphic = foundGraphics[i];

                // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn
                if (graphic.depth == -1 || !graphic.raycastTarget || graphic.canvasRenderer.cull)
                {
                    continue;
                }

                //判断一个点是否在一个矩形内
                if (!RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition,
                                                                       eventCamera))
                {
                    continue;
                }

                if (eventCamera != null && eventCamera.WorldToScreenPoint(graphic.rectTransform.position).z >
                    eventCamera.farClipPlane)
                {
                    continue;
                }

                if (graphic.Raycast(pointerPosition, eventCamera))
                {
                    s_SortedGraphics.Add(graphic);
                }
            }

            s_SortedGraphics.Sort((g1, g2) => g2.depth.CompareTo(g1.depth));
            //      StringBuilder cast = new StringBuilder();
            totalCount = s_SortedGraphics.Count;
            for (int i = 0; i < totalCount; ++i)
            {
                results.Add(s_SortedGraphics[i]);
            }
            //      Debug.Log (cast.ToString());

            s_SortedGraphics.Clear();
        }
コード例 #10
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, IList <Graphic> foundGraphics, List <Graphic> results)
        {
            // Necessary for the event system
            int totalCount = foundGraphics.Count;

            for (int i = 0; i < totalCount; ++i)
            {
                Graphic graphic = foundGraphics[i];

                // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn
                // depth 为 -1 说明没有被 canvas 处理(未被绘制)
                // raycastTarget 为 false 说明当前 graphic 不需要被射线检测
                // graphic.canvasRenderer.cull 为 true,忽略当前 graphic 的 CanvasRender 渲染的物体
                if (graphic.depth == -1 || !graphic.raycastTarget || graphic.canvasRenderer.cull)
                {
                    continue;
                }

                // pointer位置不在graphic中
                // 从指定的 eventCamera 计算 pointerPosition 是否在 graphic 的 Rectangle 区域内
                if (!RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition, eventCamera))
                {
                    continue;
                }

                // graph不在eventCamera的裁剪空间中
                if (eventCamera != null && eventCamera.WorldToScreenPoint(graphic.rectTransform.position).z > eventCamera.farClipPlane)
                {
                    continue;
                }

                // 执行射线检测
                if (graphic.Raycast(pointerPosition, eventCamera))
                {
                    s_SortedGraphics.Add(graphic);
                }
            }

            s_SortedGraphics.Sort((g1, g2) => g2.depth.CompareTo(g1.depth));
            totalCount = s_SortedGraphics.Count;
            for (int i = 0; i < totalCount; ++i)
            {
                results.Add(s_SortedGraphics[i]);
            }

            s_SortedGraphics.Clear();
        }
コード例 #11
0
 static int Raycast(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 3);
         UnityEngine.UI.Graphic obj  = (UnityEngine.UI.Graphic)ToLua.CheckObject <UnityEngine.UI.Graphic>(L, 1);
         UnityEngine.Vector2    arg0 = ToLua.ToVector2(L, 2);
         UnityEngine.Camera     arg1 = (UnityEngine.Camera)ToLua.CheckObject(L, 3, typeof(UnityEngine.Camera));
         bool o = obj.Raycast(arg0, arg1);
         LuaDLL.lua_pushboolean(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
コード例 #12
0
 static public int Raycast(IntPtr l)
 {
     try{
         UnityEngine.UI.Graphic self = (UnityEngine.UI.Graphic)checkSelf(l);
         UnityEngine.Vector2    a1;
         checkType(l, 2, out a1);
         UnityEngine.Camera a2;
         checkType(l, 3, out a2);
         System.Boolean ret = self.Raycast(a1, a2);
         pushValue(l, ret);
         return(1);
     }
     catch (Exception e) {
         LuaDLL.luaL_error(l, e.ToString());
         return(0);
     }
 }
コード例 #13
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List <Graphic> results)
        {
            // Debug.Log("ttt" + pointerPoision + ":::" + camera);
            // Necessary for the event system
            var foundGraphics = GraphicRegistry.GetGraphicsForCanvas(canvas);

            for (int i = 0; i < foundGraphics.Count; ++i)
            {
                Graphic graphic = foundGraphics[i];

                if (graphic.canvasRenderer.cull)
                {
                    continue;
                }

                // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn
                if (graphic.depth == -1 || !graphic.raycastTarget)
                {
                    continue;
                }

                if (!RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition, eventCamera))
                {
                    continue;
                }

                if (graphic.Raycast(pointerPosition, eventCamera))
                {
                    s_SortedGraphics.Add(graphic);
                }
            }

            s_SortedGraphics.Sort((g1, g2) => g2.depth.CompareTo(g1.depth));
            //      StringBuilder cast = new StringBuilder();
            for (int i = 0; i < s_SortedGraphics.Count; ++i)
            {
                results.Add(s_SortedGraphics[i]);
            }
            //      Debug.Log (cast.ToString());

            s_SortedGraphics.Clear();
        }
コード例 #14
0
    static int Raycast(IntPtr L)
    {
#if UNITY_EDITOR
        ToluaProfiler.AddCallRecord("UnityEngine.UI.Graphic.Raycast");
#endif
        try
        {
            ToLua.CheckArgsCount(L, 3);
            UnityEngine.UI.Graphic obj  = (UnityEngine.UI.Graphic)ToLua.CheckObject <UnityEngine.UI.Graphic>(L, 1);
            UnityEngine.Vector2    arg0 = ToLua.ToVector2(L, 2);
            UnityEngine.Camera     arg1 = (UnityEngine.Camera)ToLua.CheckObject(L, 3, typeof(UnityEngine.Camera));
            bool o = obj.Raycast(arg0, arg1);
            LuaDLL.lua_pushboolean(L, o);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
コード例 #15
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List <Graphic> results)
        {
            IList <Graphic> graphicsForCanvas = GraphicRegistry.GetGraphicsForCanvas(canvas);

            for (int index = 0; index < graphicsForCanvas.Count; ++index)
            {
                Graphic graphic = graphicsForCanvas[index];
                if (graphic.depth != -1 && graphic.raycastTarget && (RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, pointerPosition, eventCamera) && graphic.Raycast(pointerPosition, eventCamera)))
                {
                    GraphicRaycaster.s_SortedGraphics.Add(graphic);
                }
            }
            GraphicRaycaster.s_SortedGraphics.Sort((Comparison <Graphic>)((g1, g2) => g2.depth.CompareTo(g1.depth)));
            for (int index = 0; index < GraphicRaycaster.s_SortedGraphics.Count; ++index)
            {
                results.Add(GraphicRaycaster.s_SortedGraphics[index]);
            }
            GraphicRaycaster.s_SortedGraphics.Clear();
        }
コード例 #16
0
        private static void Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List <Graphic> results)
        {
            IList <Graphic> graphicsForCanvas = GraphicRegistry.GetGraphicsForCanvas(canvas);

            s_SortedGraphics.Clear();
            for (int i = 0; i < graphicsForCanvas.Count; i++)
            {
                Graphic item = graphicsForCanvas[i];
                if (((item.depth != -1) && item.raycastTarget) && (RectTransformUtility.RectangleContainsScreenPoint(item.rectTransform, pointerPosition, eventCamera) && item.Raycast(pointerPosition, eventCamera)))
                {
                    s_SortedGraphics.Add(item);
                }
            }
            if (< > f__am$cache6 == null)
            {