Exemplo n.º 1
0
        static internal int checkDelegate(IntPtr l, int p, out UnityEngine.EventSystems.ExecuteEvents.EventFunction <UnityEngine.EventSystems.IPointerExitHandler> ua)
        {
            int op = extractFunction(l, p);

            if (LuaDLL.lua_isnil(l, -1))
            {
                ua = null;
                return(op);
            }
            int r = LuaDLL.luaS_checkcallback(l, -1);

            if (r < 0)
            {
                LuaDLL.luaL_error(l, "expect function");
            }
            if (getCacheDelegate <UnityEngine.EventSystems.ExecuteEvents.EventFunction <UnityEngine.EventSystems.IPointerExitHandler> >(r, out ua))
            {
                return(op);
            }
            LuaDLL.lua_pop(l, 1);
            ua = (UnityEngine.EventSystems.IPointerExitHandler a1, UnityEngine.EventSystems.BaseEventData a2) =>
            {
                int error = pushTry(l);
                LuaDLL.lua_getref(l, r);

                pushValue(l, a1);
                pushValue(l, a2);
                if (LuaDLL.lua_pcall(l, 2, -1, error) != 0)
                {
                    LuaDLL.lua_pop(l, 1);
                }
                LuaDLL.lua_pop(l, 1);
            };
            cacheDelegate(r, ua);
            return(op);
        }
Exemplo n.º 2
0
 static public int noConstructor(IntPtr l)
 {
     LuaDLL.luaL_error(l, "Can't new this object");
     return(0);
 }
Exemplo n.º 3
0
        static public object checkVar(IntPtr l, int p)
        {
            LuaTypes type = LuaDLL.lua_type(l, p);

            switch (type)
            {
            case LuaTypes.LUA_TNUMBER:
            {
                return(LuaDLL.lua_tonumber(l, p));
            }

            case LuaTypes.LUA_TSTRING:
            {
                return(LuaDLL.lua_tostring(l, p));
            }

            case LuaTypes.LUA_TBOOLEAN:
            {
                return(LuaDLL.lua_toboolean(l, p));
            }

            case LuaTypes.LUA_TFUNCTION:
            {
                LuaDLL.lua_pushvalue(l, p);
                int         r = LuaDLL.luaL_ref(l, LuaIndexes.LUA_REGISTRYINDEX);
                LuaFunction v = new LuaFunction(l, r);
                return(v);
            }

            case LuaTypes.LUA_TTABLE:
            {
                if (isLuaValueType(l, p))
                {
                    if (luaTypeCheck(l, p, "Vector2"))
                    {
                        Vector2 v;
                        checkType(l, p, out v);
                        return(v);
                    }
                    else if (luaTypeCheck(l, p, "Vector3"))
                    {
                        Vector3 v;
                        checkType(l, p, out v);
                        return(v);
                    }
                    else if (luaTypeCheck(l, p, "Vector4"))
                    {
                        Vector4 v;
                        checkType(l, p, out v);
                        return(v);
                    }
                    else if (luaTypeCheck(l, p, "Quaternion"))
                    {
                        Quaternion v;
                        checkType(l, p, out v);
                        return(v);
                    }
                    else if (luaTypeCheck(l, p, "Color"))
                    {
                        Color c;
                        checkType(l, p, out c);
                        return(c);
                    }
                    LuaDLL.luaL_error(l, "unknown lua value type");
                    return(null);
                }
                else if (isLuaClass(l, p))
                {
                    return(checkObj(l, p));
                }
                else
                {
                    LuaDLL.lua_pushvalue(l, p);
                    int      r = LuaDLL.luaL_ref(l, LuaIndexes.LUA_REGISTRYINDEX);
                    LuaTable v = new LuaTable(l, r);
                    return(v);
                }
            }

            case LuaTypes.LUA_TUSERDATA:
                return(LuaObject.checkObj(l, p));

            default:
                return(null);
            }
        }