Exemplo n.º 1
0
        static int GetClassType(IntPtr L)
        {
            int reference = LuaDLL.tolua_getmetatableref(L, -1);

            if (reference > 0)
            {
                Type t = LuaStatic.GetClassType(L, reference);
                Push(L, t);
            }
            else
            {
                LuaValueType ret = LuaDLL.tolua_getvaluetype(L, -1);

                switch (ret)
                {
                case LuaValueType.Vector3:
                    Push(L, typeof(Vector3));
                    break;

                case LuaValueType.Quaternion:
                    Push(L, typeof(Quaternion));
                    break;

                case LuaValueType.Vector4:
                    Push(L, typeof(Vector4));
                    break;

                case LuaValueType.Color:
                    Push(L, typeof(Color));
                    break;

                case LuaValueType.Ray:
                    Push(L, typeof(Ray));
                    break;

                case LuaValueType.Bounds:
                    Push(L, typeof(Bounds));
                    break;

                case LuaValueType.Vector2:
                    Push(L, typeof(Vector2));
                    break;

                case LuaValueType.LayerMask:
                    Push(L, typeof(LayerMask));
                    break;

                case LuaValueType.RaycastHit:
                    Push(L, typeof(RaycastHit));
                    break;

                default:
                    Debugger.LogError("type not register to lua");
                    LuaDLL.lua_pushnil(L);
                    break;
                }
            }

            return(1);
        }
Exemplo n.º 2
0
        static bool lua_isusertable(IntPtr L, Type t, int pos)
        {
            if (t.IsArray)
            {
                return(true);
            }
            else if (t == typeof(LuaTable))
            {
                return(true);
            }
            else if (t.IsValueType)
            {
                LuaValueType vt = LuaDLL.tolua_getvaluetype(L, pos);

                switch (vt)
                {
                case LuaValueType.Vector3:
                    return(typeof(Vector3) == t);

                case LuaValueType.Quaternion:
                    return(typeof(Quaternion) == t);

                case LuaValueType.Color:
                    return(typeof(Color) == t);

                case LuaValueType.Ray:
                    return(typeof(Ray) == t);

                case LuaValueType.Bounds:
                    return(typeof(Bounds) == t);

                case LuaValueType.Vector2:
                    return(typeof(Vector2) == t);

                case LuaValueType.Vector4:
                    return(typeof(Vector4) == t);

                case LuaValueType.Touch:
                    return(typeof(Touch) == t);

                case LuaValueType.LayerMask:
                    return(typeof(LayerMask) == t);

                case LuaValueType.RaycastHit:
                    return(typeof(RaycastHit) == t);

                default:
                    break;
                }
            }
            else if (LuaDLL.tolua_isvptrtable(L, pos))
            {
                return(IsMatchUserData(L, t, pos));
            }

            return(false);
        }
Exemplo n.º 3
0
        public static object ToVarTable(IntPtr L, int stackPos)
        {
            stackPos = LuaDLL.abs_index(L, stackPos);
            LuaValueType ret = LuaDLL.tolua_getvaluetype(L, stackPos);

            switch (ret)
            {
            case LuaValueType.Vector3:
                return(ToVector3(L, stackPos));

            case LuaValueType.Quaternion:
                return(ToQuaternion(L, stackPos));

            case LuaValueType.Vector4:
                return(ToVector4(L, stackPos));

            case LuaValueType.Color:
                return(ToColor(L, stackPos));

            case LuaValueType.Ray:
                return(ToRay(L, stackPos));

            case LuaValueType.Bounds:
                return(ToBounds(L, stackPos));

            case LuaValueType.Vector2:
                return(ToVector2(L, stackPos));

            case LuaValueType.LayerMask:
                return(ToLayerMask(L, stackPos));

            default:
                LuaState state = LuaState.Get(L);
                LuaDLL.lua_pushvalue(L, stackPos);
                int reference = LuaDLL.toluaL_ref(L);
                return(state.GetTable(reference));
            }
        }