Exemplo n.º 1
0
        int UnityEngineTransform_m_Translate(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;


            UnityEngine.Transform gen_to_be_invoked = (UnityEngine.Transform)translator.FastGetCSObj(L, 1);

            if (gen_param_count == 4 && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4))
            {
                float _x = (float)LuaAPI.lua_tonumber(L, 2);
                float _y = (float)LuaAPI.lua_tonumber(L, 3);
                float _z = (float)LuaAPI.lua_tonumber(L, 4);

                gen_to_be_invoked.Translate(_x, _y, _z);



                return(0);
            }
            if (gen_param_count == 2 && translator.Assignable <UnityEngine.Vector3>(L, 2))
            {
                UnityEngine.Vector3 _translation; translator.Get(L, 2, out _translation);

                gen_to_be_invoked.Translate(_translation);



                return(0);
            }
            if (gen_param_count == 5 && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4) && translator.Assignable <UnityEngine.Space>(L, 5))
            {
                float             _x = (float)LuaAPI.lua_tonumber(L, 2);
                float             _y = (float)LuaAPI.lua_tonumber(L, 3);
                float             _z = (float)LuaAPI.lua_tonumber(L, 4);
                UnityEngine.Space _relativeTo; translator.Get(L, 5, out _relativeTo);

                gen_to_be_invoked.Translate(_x, _y, _z, _relativeTo);



                return(0);
            }
            if (gen_param_count == 5 && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4) && translator.Assignable <UnityEngine.Transform>(L, 5))
            {
                float _x = (float)LuaAPI.lua_tonumber(L, 2);
                float _y = (float)LuaAPI.lua_tonumber(L, 3);
                float _z = (float)LuaAPI.lua_tonumber(L, 4);
                UnityEngine.Transform _relativeTo = (UnityEngine.Transform)translator.GetObject(L, 5, typeof(UnityEngine.Transform));

                gen_to_be_invoked.Translate(_x, _y, _z, _relativeTo);



                return(0);
            }
            if (gen_param_count == 3 && translator.Assignable <UnityEngine.Vector3>(L, 2) && translator.Assignable <UnityEngine.Space>(L, 3))
            {
                UnityEngine.Vector3 _translation; translator.Get(L, 2, out _translation);
                UnityEngine.Space   _relativeTo; translator.Get(L, 3, out _relativeTo);

                gen_to_be_invoked.Translate(_translation, _relativeTo);



                return(0);
            }
            if (gen_param_count == 3 && translator.Assignable <UnityEngine.Vector3>(L, 2) && translator.Assignable <UnityEngine.Transform>(L, 3))
            {
                UnityEngine.Vector3   _translation; translator.Get(L, 2, out _translation);
                UnityEngine.Transform _relativeTo = (UnityEngine.Transform)translator.GetObject(L, 3, typeof(UnityEngine.Transform));

                gen_to_be_invoked.Translate(_translation, _relativeTo);



                return(0);
            }


            return(LuaAPI.luaL_error(L, "invalid arguments to UnityEngine.Transform.Translate!"));
        }
Exemplo n.º 2
0
        public static int XLuaAccess(RealStatePtr L)
        {
            try
            {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Type             type       = getType(L, translator, 1);
                object           obj        = null;
                if (type == null && LuaAPI.lua_type(L, 1) == LuaTypes.LUA_TUSERDATA)
                {
                    obj = translator.SafeGetCSObj(L, 1);
                    if (obj == null)
                    {
                        return(LuaAPI.luaL_error(L, "xlua.access, #1 parameter must a type/c# object/string"));
                    }
                    type = obj.GetType();
                }

                if (type == null)
                {
                    return(LuaAPI.luaL_error(L, "xlua.access, can not find c# type"));
                }

                string fieldName = LuaAPI.lua_tostring(L, 2);

                BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;

                if (LuaAPI.lua_gettop(L) > 2) // set
                {
                    var field = type.GetField(fieldName, bindingFlags);
                    if (field != null)
                    {
                        field.SetValue(obj, translator.GetObject(L, 3, field.FieldType));
                        return(0);
                    }
                    var prop = type.GetProperty(fieldName, bindingFlags);
                    if (prop != null)
                    {
                        prop.SetValue(obj, translator.GetObject(L, 3, prop.PropertyType), null);
                        return(0);
                    }
                }
                else
                {
                    var field = type.GetField(fieldName, bindingFlags);
                    if (field != null)
                    {
                        translator.PushAny(L, field.GetValue(obj));
                        return(1);
                    }
                    var prop = type.GetProperty(fieldName, bindingFlags);
                    if (prop != null)
                    {
                        translator.PushAny(L, prop.GetValue(obj, null));
                        return(1);
                    }
                }
                return(LuaAPI.luaL_error(L, "xlua.access, no field " + fieldName));
            }
            catch (Exception e)
            {
                return(LuaAPI.luaL_error(L, "c# exception in xlua.access: " + e));
            }
        }
Exemplo n.º 3
0
        public System.Collections.IEnumerator __Gen_Delegate_Imp5(object p0, object p1, object p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.PushAny(L, p0);
            translator.PushAny(L, p1);
            translator.PushAny(L, p2);

            int __gen_error = LuaAPI.lua_pcall(L, 3, 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            System.Collections.IEnumerator __gen_ret = (System.Collections.IEnumerator)translator.GetObject(L, err_func + 1, typeof(System.Collections.IEnumerator));
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Exemplo n.º 4
0
        public Cinemachine.CinemachineFreeLook __Gen_Delegate_Imp44(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int errFunc    = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
            ObjectTranslator translator = luaEnv.translator;
            translator.PushAny(L, p0);

            PCall(L, 1, 1, errFunc);


            Cinemachine.CinemachineFreeLook __gen_ret = (Cinemachine.CinemachineFreeLook)translator.GetObject(L, errFunc + 1, typeof(Cinemachine.CinemachineFreeLook));
            LuaAPI.lua_settop(L, errFunc - 1);
            return(__gen_ret);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
        int __CreateInstanceUnityEngineEventSystemsPointerEventData(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;

            if (gen_param_count == 2 && translator.Assignable <UnityEngine.EventSystems.EventSystem>(L, 2))
            {
                UnityEngine.EventSystems.EventSystem _eventSystem = (UnityEngine.EventSystems.EventSystem)translator.GetObject(L, 2, typeof(UnityEngine.EventSystems.EventSystem));

                UnityEngine.EventSystems.PointerEventData gen_ret = new UnityEngine.EventSystems.PointerEventData(_eventSystem);
                translator.Push(L, gen_ret);

                return(1);
            }


            return(LuaAPI.luaL_error(L, "invalid arguments to UnityEngine.EventSystems.PointerEventData constructor!"));
        }
        int UnityEngineEventSystemsPointerEventData_s_set_hovered(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;

            UnityEngine.EventSystems.PointerEventData gen_to_be_invoked = (UnityEngine.EventSystems.PointerEventData)translator.FastGetCSObj(L, 1);
            gen_to_be_invoked.hovered = (System.Collections.Generic.List <UnityEngine.GameObject>)translator.GetObject(L, 2, typeof(System.Collections.Generic.List <UnityEngine.GameObject>));

            return(0);
        }
        public LuaCSFunction GetEventWrap(Type type, string eventName)
        {
            if (!methodsCache.ContainsKey(type))
            {
                methodsCache[type] = new Dictionary <string, LuaCSFunction>();
            }

            var methodsOfType = methodsCache[type];

            if (!methodsOfType.ContainsKey(eventName))
            {
                {
                    EventInfo eventInfo = type.GetEvent(eventName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Static);
                    if (eventInfo == null)
                    {
                        throw new Exception(type.Name + " has no event named: " + eventName);
                    }
                    int start_idx = 0;

                    MethodInfo add    = eventInfo.GetAddMethod();
                    MethodInfo remove = eventInfo.GetRemoveMethod();

                    bool is_static = add != null ? add.IsStatic : remove.IsStatic;
                    if (!is_static)
                    {
                        start_idx = 1;
                    }

                    methodsOfType[eventName] = (L) =>
                    {
                        object obj = null;

                        if (!is_static)
                        {
                            obj = translator.GetObject(L, 1, type);
                            if (obj == null)
                            {
                                return(LuaAPI.luaL_error(L, "invalid #1, needed:" + type));
                            }
                        }

                        try
                        {
                            Delegate handlerDelegate = translator.CreateDelegateBridge(L, eventInfo.EventHandlerType, start_idx + 2);
                            if (handlerDelegate == null)
                            {
                                return(LuaAPI.luaL_error(L, "invalid #" + (start_idx + 2) + ", needed:" + eventInfo.EventHandlerType));
                            }
                            switch (LuaAPI.lua_tostring(L, start_idx + 1))
                            {
                            case "+":
                                if (add == null)
                                {
                                    return(LuaAPI.luaL_error(L, "no add for event " + eventName));
                                }
                                add.Invoke(obj, new object[] { handlerDelegate });
                                break;

                            case "-":
                                if (remove == null)
                                {
                                    return(LuaAPI.luaL_error(L, "no remove for event " + eventName));
                                }
                                remove.Invoke(obj, new object[] { handlerDelegate });
                                break;

                            default:
                                return(LuaAPI.luaL_error(L, "invalid #" + (start_idx + 1) + ", needed: '+' or '-'" + eventInfo.EventHandlerType));
                            }
                        }
                        catch (System.Exception e)
                        {
                            return(LuaAPI.luaL_error(L, "c# exception:" + e + ",stack:" + e.StackTrace));
                        }

                        return(0);
                    };
                }
            }
            return(methodsOfType[eventName]);
        }