Exemple #1
0
        /// <summary>
        /// Gets a value off the Lua stack as a Vector3.
        /// </summary>
        /// <param name="result">The value.</param>
        /// <param name="lua">The Lua state.</param>
        /// <param name="index">The stack index.</param>
        /// <returns>The Lua result code.</returns>
        private static int LuaToVector3(out BoxedVector3 result, lua_State lua, int index)
        {
            var obj = lua_touserdata(lua, index);

            if (obj == null || lua_getmetatable(lua, index) == 0)
            {
                result = null;
                return(0);
            }

            LuaGetRegistryValue(lua, Vector3RegistryKey);
            if (lua_rawequal(lua, -1, -2) == 0)
            {
                obj = null;
            }

            lua_settop(lua, -3);
            if (obj != null)
            {
                result = obj as BoxedVector3;
                return(1);
            }

            result = null;
            return(0);
        }
Exemple #2
0
        /// <summary>
        /// Get the value of a Vector3.
        /// </summary>
        /// <param name="result">
        /// The result.
        /// </param>
        /// <param name="lua">
        /// The Lua state.
        /// </param>
        /// <param name="index">
        /// The Lua stack index.
        /// </param>
        /// <returns>
        /// The Lua return value..
        /// </returns>
        private static int GetXyz(out BoxedVector3 result, lua_State lua, int index)
        {
            var arg = lua_touserdata(lua, index);

            if (arg == null || lua_getmetatable(lua, index) == 0)
            {
                luaL_typerror(lua, index, Vector3RegistryKey);
                result = null;
                return(0);
            }

            lua_getfield(lua, LUA_REGISTRYINDEX, Vector3RegistryKey);
            if (lua_rawequal(lua, -1, -2) == 0)
            {
                arg = null;
            }

            lua_pop(lua, 2);
            if (arg == null)
            {
                result = null;
                return(0);
            }

            result = arg as BoxedVector3;
            return(1);
        }