static void GenRegisterInfo(string nameSpace, StringBuilder sb, List <DelegateType> delegateList, List <DelegateType> wrappedDelegatesCache) { for (int i = 0; i < allTypes.Count; i++) { Type dt = CustomSettings.dynamicList.Find((p) => { return(allTypes[i].type == p); }); if (dt == null && allTypes[i].nameSpace == nameSpace) { string str = "\t\t" + allTypes[i].wrapName + "Wrap.Register(L);\r\n"; sb.Append(str); allTypes.RemoveAt(i--); } } string funcName = null; for (int i = 0; i < delegateList.Count; i++) { DelegateType dt = delegateList[i]; Type type = dt.type; string typeSpace = ToLuaDevExport.GetNameSpace(type, out funcName); if (typeSpace == nameSpace) { funcName = ToLuaDevExport.ConvertToLibSign(funcName); string abr = dt.abr; abr = abr == null ? funcName : abr; sb.AppendFormat("\t\tL.RegFunction(\"{0}\", {1});\r\n", abr, dt.name); wrappedDelegatesCache.Add(dt); } } }
static void GenLuaDelegates() { if (!beAutoGen && EditorApplication.isCompiling) { EditorUtility.DisplayDialog("警告", "请等待编辑器完成编译再执行此功能", "确定"); return; } ToLuaDevExport.Clear(); List <DelegateType> list = new List <DelegateType>(); list.AddRange(CustomSettings.customDelegateList); HashSet <Type> set = GetCustomTypeDelegates(); foreach (Type t in set) { if (null == list.Find((p) => { return(p.type == t); })) { list.Add(new DelegateType(t)); } } ToLuaDevExport.GenDelegates(list.ToArray()); set.Clear(); ToLuaDevExport.Clear(); AssetDatabase.Refresh(); Debug.Log("Create lua delegate over"); }
static void GenerateClassWraps() { if (!beAutoGen && EditorApplication.isCompiling) { EditorUtility.DisplayDialog("警告", "请等待编辑器完成编译再执行此功能", "确定"); return; } // 测试 if (!Directory.Exists(Application.dataPath + "/ToLuaDev/quickxlib/system_api/")) { Directory.CreateDirectory(Application.dataPath + "/ToLuaDev/quickxlib/system_api/"); } allTypes.Clear(); BindType[] typeList = CustomSettings.customTypeList; BindType[] list = GenBindTypes(typeList); ToLuaDevExport.allTypes.AddRange(baseType); for (int i = 0; i < list.Length; i++) { ToLuaDevExport.allTypes.Add(list[i].type); } for (int i = 0; i < list.Length; i++) { ToLuaDevExport.Clear(); ToLuaDevExport.className = list[i].name; ToLuaDevExport.type = list[i].type; ToLuaDevExport.isStaticClass = list[i].IsStatic; ToLuaDevExport.baseType = list[i].baseType; ToLuaDevExport.wrapClassName = list[i].wrapName; ToLuaDevExport.libClassName = list[i].libName; ToLuaDevExport.extendList = list[i].extendList; ToLuaDevExport.Generate(Application.dataPath + "/ToLuaDev/quickxlib/system_api/"); } Debug.Log("Generate lua binding files over"); ToLuaDevExport.allTypes.Clear(); allTypes.Clear(); AssetDatabase.Refresh(); }
static ToLuaTree <string> InitTree() { ToLuaTree <string> tree = new ToLuaTree <string>(); ToLuaNode <string> root = tree.GetRoot(); BindType[] list = GenBindTypes(CustomSettings.customTypeList); for (int i = 0; i < list.Length; i++) { string space = list[i].nameSpace; AddSpaceNameToTree(tree, root, space); } DelegateType[] dts = CustomSettings.customDelegateList; string str = null; for (int i = 0; i < dts.Length; i++) { string space = ToLuaDevExport.GetNameSpace(dts[i].type, out str); AddSpaceNameToTree(tree, root, space); } return(tree); }
static HashSet <Type> GetCustomTypeDelegates() { BindType[] list = CustomSettings.customTypeList; HashSet <Type> set = new HashSet <Type>(); BindingFlags binding = BindingFlags.Public | BindingFlags.Static | BindingFlags.IgnoreCase | BindingFlags.Instance; for (int i = 0; i < list.Length; i++) { Type type = list[i].type; FieldInfo[] fields = type.GetFields(BindingFlags.GetField | BindingFlags.SetField | binding); PropertyInfo[] props = type.GetProperties(BindingFlags.GetProperty | BindingFlags.SetProperty | binding); MethodInfo[] methods = null; if (type.IsInterface) { methods = type.GetMethods(); } else { methods = type.GetMethods(BindingFlags.Instance | binding); } for (int j = 0; j < fields.Length; j++) { Type t = fields[j].FieldType; if (ToLuaDevExport.IsDelegateType(t)) { set.Add(t); } } for (int j = 0; j < props.Length; j++) { Type t = props[j].PropertyType; if (ToLuaDevExport.IsDelegateType(t)) { set.Add(t); } } for (int j = 0; j < methods.Length; j++) { MethodInfo m = methods[j]; if (m.IsGenericMethod) { continue; } ParameterInfo[] pifs = m.GetParameters(); for (int k = 0; k < pifs.Length; k++) { Type t = pifs[k].ParameterType; if (t.IsByRef) { t = t.GetElementType(); } if (ToLuaDevExport.IsDelegateType(t)) { set.Add(t); } } } } return(set); }