Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }