ScriptTable ParseTable(CodeTable table) { ScriptContext context = new ScriptContext(m_script, null, this, Executable_Block.None); ScriptTable ret = m_script.CreateTable(); foreach (ScriptScriptFunction func in table.Functions) { func.SetTable(ret); ret.SetValue(func.Name, func); context.SetVariableForce(func.Name, func); } foreach (CodeTable.TableVariable variable in table.Variables) { ScriptObject value = context.ResolveOperand(variable.value); if (value is ScriptScriptFunction) { ScriptScriptFunction func = (ScriptScriptFunction)value; if (func.IsStaticFunction) { func.SetTable(ret); } } ret.SetValue(variable.key, value); context.SetVariableForce(variable.key.ToString(), value); } return(ret); }
private ScriptTable ParseTable(CodeTable table) { ScriptContext context = new ScriptContext(this.m_script, null, this, Executable_Block.None); ScriptTable table2 = this.m_script.CreateTable(); //todo //table2.Name = table.StackInfo.Breviary.Substring(table.StackInfo.Breviary.LastIndexOf('/')+1); //UnityEngine.Debug.Log(table2.Name); foreach (ScriptScriptFunction function in table.Functions) { table2.SetValue(function.Name, function); context.SetVariableForce(function.Name, function); } foreach (CodeTable.TableVariable variable in table.Variables) { ScriptObject obj2 = context.ResolveOperand(variable.value); table2.SetValue(variable.key, obj2); context.SetVariableForce(variable.key.ToString(), obj2); } return(table2); }