예제 #1
0
    static int get_onClick(IntPtr L)
    {
        TestEventListener obj = (TestEventListener)ToLua.ToObject(L, 1);

        TestEventListener.OnClick ret = null;

        try
        {
            ret = obj.onClick;
        }
        catch (Exception e)
        {
            if (obj == null)
            {
                LuaDLL.luaL_error(L, "attempt to index onClick on a nil value");
            }
            else
            {
                LuaDLL.luaL_error(L, e.Message);
            }
            return(0);
        }

        ToLua.Push(L, ret);
        return(1);
    }
    static int set_onClick(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TestEventListener         obj  = (TestEventListener)o;
            TestEventListener.OnClick arg0 = (TestEventListener.OnClick)ToLua.CheckDelegate <TestEventListener.OnClick>(L, 2);

            if (!object.ReferenceEquals(obj.onClick, arg0))
            {
                if (obj.onClick != null)
                {
                    obj.onClick.SubRef();
                }
                obj.onClick = arg0;
            }

            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index onClick on a nil value"));
        }
    }
예제 #3
0
    static int set_onClickEvent(IntPtr L)
    {
        try
        {
            TestEventListener obj  = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
            EventObject       arg0 = null;

            if (LuaDLL.lua_isuserdata(L, 2) != 0)
            {
                arg0 = (EventObject)ToLua.ToObject(L, 2);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "The event 'TestEventListener.onClickEvent' can only appear on the left hand side of += or -= when used outside of the type 'TestEventListener'"));
            }

            if (arg0.op == EventOp.Add)
            {
                TestEventListener.OnClick ev = (TestEventListener.OnClick)arg0.func;
                obj.onClickEvent += ev;
            }
            else if (arg0.op == EventOp.Sub)
            {
                TestEventListener.OnClick ev = (TestEventListener.OnClick)arg0.func;
                obj.onClickEvent -= ev;
            }

            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
    static int SetOnFinished(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes <TestEventListener.VoidDelegate>(L, 2))
            {
                TestEventListener obj = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
                TestEventListener.VoidDelegate arg0 = (TestEventListener.VoidDelegate)ToLua.ToObject(L, 2);
                obj.SetOnFinished(arg0);
                return(0);
            }
            else if (count == 2 && TypeChecker.CheckTypes <TestEventListener.OnClick>(L, 2))
            {
                TestEventListener         obj  = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
                TestEventListener.OnClick arg0 = (TestEventListener.OnClick)ToLua.ToObject(L, 2);
                obj.SetOnFinished(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: TestEventListener.SetOnFinished"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #5
0
    static int set_onClick(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TestEventListener         obj  = (TestEventListener)o;
            TestEventListener.OnClick arg0 = null;
            LuaTypes funcType2             = LuaDLL.lua_type(L, 2);

            if (funcType2 != LuaTypes.LUA_TFUNCTION)
            {
                arg0 = (TestEventListener.OnClick)ToLua.CheckObject(L, 2, typeof(TestEventListener.OnClick));
            }
            else
            {
                LuaFunction func = ToLua.ToLuaFunction(L, 2);
                arg0 = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(func);
            }

            obj.onClick = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index onClick on a nil value" : e.Message));
        }
    }
예제 #6
0
    static int set_onClick(IntPtr L)
    {
        TestEventListener obj = (TestEventListener)ToLua.ToObject(L, 1);

        TestEventListener.OnClick arg0 = null;
        LuaTypes funcType2             = LuaDLL.lua_type(L, 2);

        if (funcType2 != LuaTypes.LUA_TFUNCTION)
        {
            arg0 = (TestEventListener.OnClick)ToLua.CheckObject(L, 2, typeof(TestEventListener.OnClick));
        }
        else
        {
            LuaFunction func = ToLua.ToLuaFunction(L, 2);
            arg0 = DelegateFactory.CreateDelegate(L, typeof(TestEventListener.OnClick), func) as TestEventListener.OnClick;
        }

        try
        {
            obj.onClick = arg0;
        }
        catch (Exception e)
        {
            return(LuaDLL.luaL_error(L, obj == null ? "attempt to index onClick on a nil value" : e.Message));
        }

        return(0);
    }
예제 #7
0
    static int SetOnFinished(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes <TestEventListener.VoidDelegate>(L, 2))
            {
                TestEventListener obj = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
                TestEventListener.VoidDelegate arg0 = null;
                LuaTypes funcType2 = LuaDLL.lua_type(L, 2);

                if (funcType2 != LuaTypes.LUA_TFUNCTION)
                {
                    arg0 = (TestEventListener.VoidDelegate)ToLua.ToObject(L, 2);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 2);
                    arg0 = (TestEventListener.VoidDelegate) DelegateTraits <TestEventListener.VoidDelegate> .Create(func);
                }

                obj.SetOnFinished(arg0);
                return(0);
            }
            else if (count == 2 && TypeChecker.CheckTypes <TestEventListener.OnClick>(L, 2))
            {
                TestEventListener         obj  = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
                TestEventListener.OnClick arg0 = null;
                LuaTypes funcType2             = LuaDLL.lua_type(L, 2);

                if (funcType2 != LuaTypes.LUA_TFUNCTION)
                {
                    arg0 = (TestEventListener.OnClick)ToLua.ToObject(L, 2);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 2);
                    arg0 = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(func);
                }

                obj.SetOnFinished(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: TestEventListener.SetOnFinished"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #8
0
    public static Delegate TestEventListener_OnClick(LuaFunction func)
    {
        if (func == null)
        {
            TestEventListener.OnClick fn = delegate { };
            return(fn);
        }

        TestEventListener.OnClick d = (new TestEventListener_OnClick_Event(func)).Call;
        return(d);
    }
    static int SetOnFinished(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && ToLua.CheckTypes(L, 1, typeof(TestEventListener), typeof(TestEventListener.VoidDelegate)))
            {
                TestEventListener obj = (TestEventListener)ToLua.ToObject(L, 1);
                TestEventListener.VoidDelegate arg0 = null;
                LuaTypes funcType2 = LuaDLL.lua_type(L, 2);

                if (funcType2 != LuaTypes.LUA_TFUNCTION)
                {
                    arg0 = (TestEventListener.VoidDelegate)ToLua.ToObject(L, 2);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 2);
                    arg0 = DelegateFactory.CreateDelegate(typeof(TestEventListener.VoidDelegate), func) as TestEventListener.VoidDelegate;
                }

                obj.SetOnFinished(arg0);
                return(0);
            }
            else if (count == 2 && ToLua.CheckTypes(L, 1, typeof(TestEventListener), typeof(TestEventListener.OnClick)))
            {
                TestEventListener         obj  = (TestEventListener)ToLua.ToObject(L, 1);
                TestEventListener.OnClick arg0 = null;
                LuaTypes funcType2             = LuaDLL.lua_type(L, 2);

                if (funcType2 != LuaTypes.LUA_TFUNCTION)
                {
                    arg0 = (TestEventListener.OnClick)ToLua.ToObject(L, 2);
                }
                else
                {
                    LuaFunction func = ToLua.ToLuaFunction(L, 2);
                    arg0 = DelegateFactory.CreateDelegate(typeof(TestEventListener.OnClick), func) as TestEventListener.OnClick;
                }

                obj.SetOnFinished(arg0);
                return(0);
            }
            else
            {
                return(LuaDLL.tolua_error(L, "invalid arguments to method: TestEventListener.SetOnFinished"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #10
0
 public static Delegate TestEventListener_OnClick(LuaFunction func, LuaTable self, bool flag)
 {
     if (func == null)
     {
         return(new TestEventListener.OnClick(delegate
         {
         }));
     }
     TestDelegate.TestEventListener_OnClick_Event testEventListener_OnClick_Event = new TestDelegate.TestEventListener_OnClick_Event(func);
     TestEventListener.OnClick onClick = new TestEventListener.OnClick(testEventListener_OnClick_Event.Call);
     testEventListener_OnClick_Event.method = onClick.Method;
     return(onClick);
 }
    static int set_onClickEvent(IntPtr L)
    {
        try
        {
            TestEventListener obj  = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
            EventObject       arg0 = null;

            if (LuaDLL.lua_isuserdata(L, 2) != 0)
            {
                arg0 = (EventObject)ToLua.ToObject(L, 2);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "The event 'TestEventListener.onClickEvent' can only appear on the left hand side of += or -= when used outside of the type 'TestEventListener'"));
            }

            if (arg0.op == EventOp.Add)
            {
                TestEventListener.OnClick ev = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(arg0.func);

                obj.onClickEvent += ev;
            }
            else if (arg0.op == EventOp.Sub)
            {
                TestEventListener.OnClick ev = (TestEventListener.OnClick)LuaMisc.GetEventHandler(obj, typeof(TestEventListener), "onClickEvent");
                Delegate[] ds    = ev.GetInvocationList();
                LuaState   state = LuaState.Get(L);

                for (int i = 0; i < ds.Length; i++)
                {
                    ev = (TestEventListener.OnClick)ds[i];
                    LuaDelegate ld = ev.Target as LuaDelegate;

                    if (ld != null && ld.func == arg0.func)
                    {
                        obj.onClickEvent -= ev;
                        state.DelayDispose(ld.func);
                        break;
                    }
                }

                arg0.func.Dispose();
            }

            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #12
0
    public static TestEventListener.OnClick TestEventListener_OnClick(LuaFunction func, LuaTable self, bool flag)
    {
        if (func == null)
        {
            TestEventListener.OnClick fn = delegate { };
            return(fn);
        }

        TestEventListener_OnClick_Event target = new TestEventListener_OnClick_Event(func);

        TestEventListener.OnClick d = target.Call;
        target.method = d.Method;
        return(d);
    }
    static int get_onClick(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TestEventListener         obj = (TestEventListener)o;
            TestEventListener.OnClick ret = obj.onClick;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index onClick on a nil value"));
        }
    }
    static int set_onClick(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            TestEventListener         obj  = (TestEventListener)o;
            TestEventListener.OnClick arg0 = (TestEventListener.OnClick)ToLua.CheckDelegate <TestEventListener.OnClick>(L, 2);
            obj.onClick = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index onClick on a nil value"));
        }
    }
    private static int set_onClickEvent(IntPtr L)
    {
        int result;

        try
        {
            TestEventListener testEventListener = (TestEventListener)ToLua.CheckObject(L, 1, typeof(TestEventListener));
            if (LuaDLL.lua_isuserdata(L, 2) != 0)
            {
                EventObject eventObject = (EventObject)ToLua.ToObject(L, 2);
                if (eventObject.op == EventOp.Add)
                {
                    TestEventListener.OnClick value = (TestEventListener.OnClick)DelegateFactory.CreateDelegate(typeof(TestEventListener.OnClick), eventObject.func);
                    testEventListener.onClickEvent += value;
                }
                else if (eventObject.op == EventOp.Sub)
                {
                    TestEventListener.OnClick onClick = (TestEventListener.OnClick)LuaMisc.GetEventHandler(testEventListener, typeof(TestEventListener), "onClickEvent");
                    Delegate[] invocationList         = onClick.GetInvocationList();
                    LuaState   luaState = LuaState.Get(L);
                    for (int i = 0; i < invocationList.Length; i++)
                    {
                        onClick = (TestEventListener.OnClick)invocationList[i];
                        LuaDelegate luaDelegate = onClick.Target as LuaDelegate;
                        if (luaDelegate != null && luaDelegate.func == eventObject.func)
                        {
                            testEventListener.onClickEvent -= onClick;
                            luaState.DelayDispose(luaDelegate.func);
                            break;
                        }
                    }
                    eventObject.func.Dispose();
                }
                result = 0;
            }
            else
            {
                result = LuaDLL.luaL_throw(L, "The event 'TestEventListener.onClickEvent' can only appear on the left hand side of += or -= when used outside of the type 'TestEventListener'");
            }
        }
        catch (Exception e)
        {
            result = LuaDLL.toluaL_exception(L, e, null);
        }
        return(result);
    }
예제 #16
0
    static int get_onClick(IntPtr L)
    {
        object obj = null;

        try
        {
            obj = ToLua.ToObject(L, 1);
            TestEventListener         listener = (TestEventListener)obj;
            TestEventListener.OnClick click    = listener.onClick;
            ToLua.Push(L, click);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, obj, "attempt to index onClick on a nil value"));
        }
    }
    private static int get_onClick(IntPtr L)
    {
        object obj = null;
        int    result;

        try
        {
            obj = ToLua.ToObject(L, 1);
            TestEventListener         testEventListener = (TestEventListener)obj;
            TestEventListener.OnClick onClick           = testEventListener.onClick;
            ToLua.Push(L, onClick);
            result = 1;
        }
        catch (Exception ex)
        {
            result = LuaDLL.toluaL_exception(L, ex, (obj != null) ? ex.Message : "attempt to index onClick on a nil value");
        }
        return(result);
    }
예제 #18
0
    public TestEventListener.OnClick TestEventListener_OnClick(LuaFunction func, LuaTable self, bool flag)
    {
        if (func == null)
        {
            TestEventListener.OnClick fn = delegate(UnityEngine.GameObject param0) { };
            return(fn);
        }

        if (!flag)
        {
            TestEventListener_OnClick_Event target = new TestEventListener_OnClick_Event(func);
            TestEventListener.OnClick       d      = target.Call;
            target.method = d.Method;
            return(d);
        }
        else
        {
            TestEventListener_OnClick_Event target = new TestEventListener_OnClick_Event(func, self);
            TestEventListener.OnClick       d      = target.CallWithSelf;
            target.method = d.Method;
            return(d);
        }
    }
예제 #19
0
 public void SetOnFinished(TestEventListener.OnClick click)
 {
     Debugger.Log("SetOnFinished OnClick");
 }
예제 #20
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 120, 40), " = OnClick1"))
        {
            CallLuaFunction(SetClick1);
        }
        else if (GUI.Button(new Rect(10, 60, 120, 40), " + Click1"))
        {
            CallLuaFunction(AddClick1);
        }
        else if (GUI.Button(new Rect(10, 160, 120, 40), " - Click1"))
        {
            CallLuaFunction(RemoveClick1);
        }
        else if (GUI.Button(new Rect(10, 260, 120, 40), "+ Click1 in C#"))
        {
            LuaFunction func = state.GetFunction("DoClick1");
            TestEventListener.OnClick onClick = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(func);

            listener.onClick += onClick;
        }
        else if (GUI.Button(new Rect(10, 310, 120, 40), " - Click1 in C#"))
        {
            LuaFunction func = state.GetFunction("DoClick1");
            listener.onClick = (TestEventListener.OnClick)DelegateFactory.RemoveDelegate(listener.onClick, func);
            func.Dispose();
            func = null;
        }
        else if (GUI.Button(new Rect(10, 360, 120, 40), "OnClick"))
        {
            if (listener.onClick != null)
            {
                listener.onClick(gameObject);
            }
            else
            {
                Debug.Log("empty delegate!!");
            }
        }
        else if (GUI.Button(new Rect(10, 410, 120, 40), "Override"))
        {
            CallLuaFunction(TestOverride);
        }
        else if (GUI.Button(new Rect(10, 510, 120, 40), "event +"))
        {
            CallLuaFunction(AddEvent);
        }
        else if (GUI.Button(new Rect(10, 560, 120, 40), "event -"))
        {
            CallLuaFunction(RemoveEvent);
        }
        else if (GUI.Button(new Rect(10, 610, 120, 40), "event call"))
        {
            listener.OnClickEvent(gameObject);
        }
        else if (GUI.Button(new Rect(200, 10, 120, 40), "+self call"))
        {
            CallLuaFunction(AddSelfClick);
        }
        else if (GUI.Button(new Rect(200, 60, 120, 40), "-self call"))
        {
            CallLuaFunction(RemoveSelfClick);
        }
    }
예제 #21
0
 private void OnGUI()
 {
     if (GUI.Button(new Rect(10f, 10f, 120f, 40f), " = OnClick1"))
     {
         this.CallLuaFunction(this.SetClick1);
     }
     else if (GUI.Button(new Rect(10f, 60f, 120f, 40f), " + Click1"))
     {
         this.CallLuaFunction(this.AddClick1);
     }
     else if (GUI.Button(new Rect(10f, 110f, 120f, 40f), " + Click2"))
     {
         this.CallLuaFunction(this.AddClick2);
     }
     else if (GUI.Button(new Rect(10f, 160f, 120f, 40f), " - Click1"))
     {
         this.CallLuaFunction(this.RemoveClick1);
     }
     else if (GUI.Button(new Rect(10f, 210f, 120f, 40f), " - Click2"))
     {
         this.CallLuaFunction(this.RemoveClick2);
     }
     else if (GUI.Button(new Rect(10f, 260f, 120f, 40f), "+ Click1 in C#"))
     {
         LuaFunction function               = this.state.GetFunction("DoClick1", true);
         TestEventListener.OnClick b        = (TestEventListener.OnClick)DelegateFactory.CreateDelegate(typeof(TestEventListener.OnClick), function);
         TestEventListener         expr_173 = this.listener;
         expr_173.onClick = (TestEventListener.OnClick)Delegate.Combine(expr_173.onClick, b);
     }
     else if (GUI.Button(new Rect(10f, 310f, 120f, 40f), " - Click1 in C#"))
     {
         LuaFunction function2 = this.state.GetFunction("DoClick1", true);
         this.listener.onClick = (TestEventListener.OnClick)DelegateFactory.RemoveDelegate(this.listener.onClick, function2);
         function2.Dispose();
     }
     else if (GUI.Button(new Rect(10f, 360f, 120f, 40f), "OnClick"))
     {
         if (this.listener.onClick != null)
         {
             this.listener.onClick(base.gameObject);
         }
         else
         {
             Debug.Log("empty delegate!!");
         }
     }
     else if (GUI.Button(new Rect(10f, 410f, 120f, 40f), "Override"))
     {
         this.CallLuaFunction(this.TestOverride);
     }
     else if (GUI.Button(new Rect(10f, 460f, 120f, 40f), "Force GC"))
     {
         this.state.LuaGC(LuaGCOptions.LUA_GCCOLLECT, 0);
         GC.Collect();
     }
     else if (GUI.Button(new Rect(10f, 510f, 120f, 40f), "event +"))
     {
         this.CallLuaFunction(this.AddEvent);
     }
     else if (GUI.Button(new Rect(10f, 560f, 120f, 40f), "event -"))
     {
         this.CallLuaFunction(this.RemoveEvent);
     }
     else if (GUI.Button(new Rect(10f, 610f, 120f, 40f), "event call"))
     {
         this.listener.OnClickEvent(base.gameObject);
     }
     else if (GUI.Button(new Rect(200f, 10f, 120f, 40f), "+self call"))
     {
         this.CallLuaFunction(this.AddSelfClick);
     }
     else if (GUI.Button(new Rect(200f, 60f, 120f, 40f), "-self call"))
     {
         this.CallLuaFunction(this.RemoveSelfClick);
     }
 }
예제 #22
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 240, 80), " = OnClick1"))
        {
            CallLuaFunction(setClick1);
        }
        else if (GUI.Button(new Rect(10, 90, 240, 80), " + Click1"))
        {
            CallLuaFunction(addClick1);
        }
        else if (GUI.Button(new Rect(10, 170, 240, 80), " + Click2"))
        {
            CallLuaFunction(addClick2);
        }
        else if (GUI.Button(new Rect(10, 260, 240, 80), " - Click1"))
        {
            CallLuaFunction(removeClick1);
        }
        else if (GUI.Button(new Rect(10, 350, 240, 80), " - Click2"))
        {
            CallLuaFunction(removeClick2);
        }
        else if (GUI.Button(new Rect(10, 440, 240, 80), "+ Click1 in C#"))
        {
            LuaFunction func = luaState.GetFunction("DoClick1");
            TestEventListener.OnClick onClick = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(func);

            listener.onClick += onClick;
        }
        else if (GUI.Button(new Rect(10, 530, 240, 80), " - Click1 in C#"))
        {
            LuaFunction func = luaState.GetFunction("DoClick1");
            listener.onClick = (TestEventListener.OnClick)DelegateFactory.RemoveDelegate(listener.onClick, func);
            func.Dispose();
            func = null;
        }
        else if (GUI.Button(new Rect(10, 620, 240, 80), "OnClick"))
        {
            if (listener.onClick != null)
            {
                listener.onClick(gameObject);
            }
            else
            {
                Debug.Log("empty delegate!!");
            }
        }
        else if (GUI.Button(new Rect(10, 710, 240, 80), "Override"))
        {
            CallLuaFunction(testOverride);
        }
        else if (GUI.Button(new Rect(10, 810, 240, 80), "Force GC"))
        {
            //自动gc log: collect lua reference name , id xxx in thread
            luaState.LuaGC(LuaGCOptions.LUA_GCCOLLECT, 0);
            GC.Collect();
        }
        else if (GUI.Button(new Rect(10, 900, 240, 80), "event +"))
        {
            CallLuaFunction(addEvent);
        }
        else if (GUI.Button(new Rect(10, 990, 240, 80), "event -"))
        {
            CallLuaFunction(removeEvent);
        }
        else if (GUI.Button(new Rect(260, 10, 240, 80), "event call"))
        {
            listener.OnClickEvent(gameObject);
        }
        else if (GUI.Button(new Rect(260, 90, 240, 80), "+self call"))
        {
            CallLuaFunction(addSelfClick);
        }
        else if (GUI.Button(new Rect(260, 170, 240, 80), "-self call"))
        {
            CallLuaFunction(removeSelfClick);
        }
        else if (GUI.Button(new Rect(260, 250, 240, 80), "call onclick"))
        {
            CallLuaFunction(callOnClick);
            //listener.onAct();
        }
    }
예제 #23
0
    void OnGUI()
    {
        GUI.Label(new Rect(Screen.width / 2 - 300, Screen.height / 2 - 200, 600, 400), tips);

        if (GUI.Button(new Rect(10, 10, 120, 40), " = OnClick1"))
        {
            CallLuaFunction(SetClick1);
        }
        else if (GUI.Button(new Rect(10, 60, 120, 40), " + Click1"))
        {
            CallLuaFunction(AddClick1);
        }
        else if (GUI.Button(new Rect(10, 110, 120, 40), " + Click2"))
        {
            CallLuaFunction(AddClick2);
        }
        else if (GUI.Button(new Rect(10, 160, 120, 40), " - Click1"))
        {
            CallLuaFunction(RemoveClick1);
        }
        else if (GUI.Button(new Rect(10, 210, 120, 40), " - Click2"))
        {
            CallLuaFunction(RemoveClick2);
        }
        else if (GUI.Button(new Rect(10, 260, 120, 40), "+ Click1 in C#"))
        {
            tips = "";
            LuaFunction func = state.GetFunction("DoClick1");
            TestEventListener.OnClick onClick = (TestEventListener.OnClick) DelegateTraits <TestEventListener.OnClick> .Create(func);

            listener.onClick += onClick;
        }
        else if (GUI.Button(new Rect(10, 310, 120, 40), " - Click1 in C#"))
        {
            tips = "";
            LuaFunction func = state.GetFunction("DoClick1");
            listener.onClick = (TestEventListener.OnClick)DelegateFactory.RemoveDelegate(listener.onClick, func);
            func.Dispose();
            func = null;
        }
        else if (GUI.Button(new Rect(10, 360, 120, 40), "OnClick"))
        {
            if (listener.onClick != null)
            {
                listener.onClick(gameObject);
            }
            else
            {
                Debug.Log("empty delegate!!");
            }
        }
        else if (GUI.Button(new Rect(10, 410, 120, 40), "Override"))
        {
            CallLuaFunction(TestOverride);
        }
        else if (GUI.Button(new Rect(10, 460, 120, 40), "Force GC"))
        {
            //自动gc log: collect lua reference name , id xxx in thread
            state.LuaGC(LuaGCOptions.LUA_GCCOLLECT, 0);
            GC.Collect();
        }
        else if (GUI.Button(new Rect(10, 510, 120, 40), "event +"))
        {
            CallLuaFunction(AddEvent);
        }
        else if (GUI.Button(new Rect(10, 560, 120, 40), "event -"))
        {
            CallLuaFunction(RemoveEvent);
        }
        else if (GUI.Button(new Rect(10, 610, 120, 40), "event call"))
        {
            listener.OnClickEvent(gameObject);
        }
        else if (GUI.Button(new Rect(200, 10, 120, 40), "+self call"))
        {
            CallLuaFunction(AddSelfClick);
        }
        else if (GUI.Button(new Rect(200, 60, 120, 40), "-self call"))
        {
            CallLuaFunction(RemoveSelfClick);
        }
    }
예제 #24
0
 void Push_TestEventListener_OnClick(IntPtr L, TestEventListener.OnClick o)
 {
     ToLua.Push(L, o);
 }