public static bool SetHierarchical(this LuaOnStackUserData ud, string key, object val) { if (ud == null || ud.L == IntPtr.Zero) { return(false); } var l = ud.L; using (var lr = new LuaStateRecover(l)) { if (ud.PushToLua()) { return(SetHierarchical(l, -1, key, val)); } return(false); } }
public static BaseLua CreateUserDataAndExpandExFields(this CapsUnityLuaBehav behav) { using (var lr = GlobalLua.CreateStackRecover()) { var l = GlobalLua.L; var ud = new LuaOnStackUserData(l, behav); ud.PushToLua(); l.pushvalue(-1); var refid = l.refer(); l.newtable(); l.SetField(-2, "___ex"); foreach (var kvp in behav.ExpandExVal()) { if (!(kvp.Value is CapsUnityLuaBehav.NotAvailableExVal)) { ud.SetHierarchical("___ex." + kvp.Key, kvp.Value); } } return(new BaseLua(l, refid)); } }