/// <summary> /// Sets a field in the inner Lua table. /// </summary> /// <param name="key">A double, string or bool value.</param> /// <returns>A double, string, bool, LuaDataContainer or LuaDataProvider.</returns> internal object this[object key] { set { // Dewraps the value if its a container or provider. var v = _dataFactory.GetNativeValueFromValue(value); // Sets the field. _luaState.SafeSetField(_luaTable, key, v); } }
private IList <object> ExecuteCore(params object[] args) { // Conforms the parameters: wrappers from the Data layer // are converted to their native equivalents. // The self table is added if it is specified. List <LuaValue> parameters = new List <LuaValue>(); if (_selfTable != null) { parameters.Add(_selfTable); } foreach (var item in args) { parameters.Add(_dataFactory.GetNativeValueFromValue(item)); } // Runs the provider and gets the list of objects. IList <object> retValues; try { retValues = _luaState.SafeCallRaw(_luaFunction, parameters.ToArray()); } catch (Exception e) { throw new InvalidOperationException("An exception occured while executing the provider.", e); } // Converts the different values to types from the data layer. List <object> ret = new List <object>(); foreach (var item in retValues) { if (item is LuaValue) { ret.Add(_dataFactory.GetValueFromNativeValue((LuaValue)item)); } else { ret.Add(item); } } // Returns the list. return(ret); }