Пример #1
0
 public void AddStaticRegisterData(LuaStaticRegisterData data)
 {
     if (data != null)
     {
         if (!staticRegisterDic.ContainsKey(data.registerType))
         {
             staticRegisterDic.Add(data.registerType, data);
         }
     }
 }
Пример #2
0
        public int GetRegisterRef(Type type, bool isAutoRegister = true)
        {
            LuaStaticRegisterData staticRegData = null;

            if (!IsIngoreStaticRegister(type) && staticRegisterDic.TryGetValue(type, out staticRegData))
            {
                return(staticRegData.luaRef);
            }
            LuaClass dynamicRegData = null;

            if (dynamicRegisterDic.TryGetValue(type, out dynamicRegData))
            {
                return(dynamicRegData.typeRef);
            }

            if (isAutoRegister)
            {
                return(RegisterToLua(type));
            }

            return(LuaAPI.LUA_REFNIL);
        }
Пример #3
0
        public int RegisterToLua(Type type)
        {
            LuaStaticRegisterData staticRegData = null;

            if (!IsIngoreStaticRegister(type) && staticRegisterDic.TryGetValue(type, out staticRegData))
            {
                if (staticRegData.luaRef == LuaAPI.LUA_REFNIL)
                {
                    staticRegData.luaRef = staticRegData.registerFun(luaState);

                    return(staticRegData.luaRef);
                }
                else
                {
                    return(staticRegData.luaRef);
                }
            }
            else
            {
                LuaClass dynamicRegData = null;
                if (!dynamicRegisterDic.TryGetValue(type, out dynamicRegData))
                {
                    dynamicRegData = new LuaClass(luaState, type, registerIndex++);
                    dynamicRegisterDic.Add(type, dynamicRegData);
                    dynamicRegisterList.Add(dynamicRegData);

                    dynamicRegData.RegisterClass();

                    return(dynamicRegData.typeRef);
                }
                else
                {
                    return(dynamicRegData.typeRef);
                }
            }
        }