Exemple #1
0
 private bool FillDrawCall(UIDrawCall dc)
 {
     if (dc != null)
     {
         dc.isDirty = false;
         int num  = 0;
         int num2 = 0;
         while (num2 < widgets.Count)
         {
             UIWidget uIWidget = widgets[num2];
             if (uIWidget == null)
             {
                 widgets.RemoveAt(num2);
             }
             else
             {
                 if (uIWidget.drawCall == dc)
                 {
                     if (uIWidget.isVisible && uIWidget.hasVertices)
                     {
                         num++;
                         if (generateNormals)
                         {
                             uIWidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, dc.norms, dc.tans);
                         }
                         else
                         {
                             uIWidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, null, null);
                         }
                         if (uIWidget.mOnRender != null)
                         {
                             if (mOnRender == null)
                             {
                                 mOnRender = uIWidget.mOnRender;
                             }
                             else
                             {
                                 mOnRender = (UIDrawCall.OnRenderCallback)Delegate.Combine(mOnRender, uIWidget.mOnRender);
                             }
                         }
                     }
                     else
                     {
                         uIWidget.drawCall = null;
                     }
                 }
                 num2++;
             }
         }
         if (dc.verts.size != 0)
         {
             dc.UpdateGeometry(num);
             dc.onRender = mOnRender;
             mOnRender   = null;
             return(true);
         }
     }
     return(false);
 }
 public bool FillDrawCall(UIDrawCall dc)
 {
     if (dc != null)
     {
         dc.isDirty = false;
         int num = 0;
         int i   = 0;
         while (i < this.widgets.Count)
         {
             UIWidget uiwidget = this.widgets[i];
             if (uiwidget == null)
             {
                 this.widgets.RemoveAt(i);
             }
             else
             {
                 if (uiwidget.drawCall == dc)
                 {
                     if (uiwidget.isVisible && uiwidget.hasVertices)
                     {
                         num++;
                         if (this.generateNormals)
                         {
                             uiwidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, dc.norms, dc.tans);
                         }
                         else
                         {
                             uiwidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, null, null);
                         }
                         if (uiwidget.mOnRender != null)
                         {
                             if (this.mOnRender == null)
                             {
                                 this.mOnRender = uiwidget.mOnRender;
                             }
                             else
                             {
                                 this.mOnRender = (UIDrawCall.OnRenderCallback)Delegate.Combine(this.mOnRender, uiwidget.mOnRender);
                             }
                         }
                     }
                     else
                     {
                         uiwidget.drawCall = null;
                     }
                 }
                 i++;
             }
         }
         if (dc.verts.size != 0)
         {
             dc.UpdateGeometry(num);
             dc.onRender    = this.mOnRender;
             this.mOnRender = null;
             return(true);
         }
     }
     return(false);
 }
    public static Delegate UIDrawCall_OnRenderCallback(LuaFunction func)
    {
        if (func == null)
        {
            UIDrawCall.OnRenderCallback fn = delegate { };
            return(fn);
        }

        UIDrawCall.OnRenderCallback d = (new UIDrawCall_OnRenderCallback_Event(func)).Call;
        return(d);
    }
 public static Delegate UIDrawCall_OnRenderCallback(LuaFunction func)
 {
     UIDrawCall.OnRenderCallback d = (param0) =>
     {
         int    top = func.BeginPCall();
         IntPtr L   = func.GetLuaState();
         LuaScriptMgr.Push(L, param0);
         func.PCall(top, 1);
         func.EndPCall(top);
     };
     return(d);
 }
Exemple #5
0
	/// <summary>
	/// Fill the geometry for the specified draw call.
	/// </summary>

	bool FillDrawCall (UIDrawCall dc)
	{
		if (dc != null)
		{
			dc.isDirty = false;
			int count = 0;

			for (int i = 0; i < widgets.Count; )
			{
				UIWidget w = widgets[i];

				if (w == null)
				{
#if UNITY_EDITOR
					Debug.LogError("This should never happen");
#endif
					widgets.RemoveAt(i);
					continue;
				}

				if (w.drawCall == dc)
				{
					if (w.isVisible && w.hasVertices)
					{
						++count;
						
						if (generateNormals) w.WriteToBuffers(dc.verts, dc.uvs, dc.cols, dc.norms, dc.tans);
						else w.WriteToBuffers(dc.verts, dc.uvs, dc.cols, null, null);

						if (w.mOnRender != null)
						{
							if (mOnRender == null) mOnRender = w.mOnRender;
							else mOnRender += w.mOnRender;
						}
					}
					else w.drawCall = null;
				}
				++i;
			}

			if (dc.verts.size != 0)
			{
				dc.UpdateGeometry(count);
				dc.onRender = mOnRender;
				mOnRender = null;
				return true;
			}
		}
		return false;
	}
Exemple #6
0
	static int get_onRender(IntPtr L)
	{
		object o = null;

		try
		{
			o = ToLua.ToObject(L, 1);
			UIWidget obj = (UIWidget)o;
			UIDrawCall.OnRenderCallback ret = obj.onRender;
			ToLua.Push(L, ret);
			return 1;
		}
		catch(Exception e)
		{
			return LuaDLL.toluaL_exception(L, e, o, "attempt to index onRender on a nil value");
		}
	}
Exemple #7
0
	static int set_onRender(IntPtr L)
	{
		object o = null;

		try
		{
			o = ToLua.ToObject(L, 1);
			UIWidget obj = (UIWidget)o;
			UIDrawCall.OnRenderCallback arg0 = (UIDrawCall.OnRenderCallback)ToLua.CheckDelegate<UIDrawCall.OnRenderCallback>(L, 2);
			obj.onRender = arg0;
			return 0;
		}
		catch(Exception e)
		{
			return LuaDLL.toluaL_exception(L, e, o, "attempt to index onRender on a nil value");
		}
	}
Exemple #8
0
    public UIDrawCall.OnRenderCallback UIDrawCall_OnRenderCallback(LuaFunction func, LuaTable self, bool flag)
    {
        if (func == null)
        {
            UIDrawCall.OnRenderCallback fn = delegate(UnityEngine.Material param0) { };
            return(fn);
        }

        if (!flag)
        {
            UIDrawCall_OnRenderCallback_Event target = new UIDrawCall_OnRenderCallback_Event(func);
            UIDrawCall.OnRenderCallback       d      = target.Call;
            target.method = d.Method;
            return(d);
        }
        else
        {
            UIDrawCall_OnRenderCallback_Event target = new UIDrawCall_OnRenderCallback_Event(func, self);
            UIDrawCall.OnRenderCallback       d      = target.CallWithSelf;
            target.method = d.Method;
            return(d);
        }
    }
Exemple #9
0
        static internal int checkDelegate(IntPtr l, int p, out UIDrawCall.OnRenderCallback ua)
        {
            int op = extractFunction(l, p);

            if (LuaDLL.lua_isnil(l, p))
            {
                ua = null;
                return(op);
            }
            else if (LuaDLL.lua_isuserdata(l, p) == 1)
            {
                ua = (UIDrawCall.OnRenderCallback)checkObj(l, p);
                return(op);
            }
            LuaDelegate ld;

            checkType(l, -1, out ld);
            if (ld.d != null)
            {
                ua = (UIDrawCall.OnRenderCallback)ld.d;
                return(op);
            }
            LuaDLL.lua_pop(l, 1);

            l  = LuaState.get(l).L;
            ua = (UnityEngine.Material a1) =>
            {
                int error = pushTry(l);

                pushValue(l, a1);
                ld.pcall(1, error);
                LuaDLL.lua_settop(l, error - 1);
            };
            ld.d = ua;
            return(op);
        }
Exemple #10
0
	/// <summary>
	/// Fill the geometry for the specified draw call.
	/// </summary>

	bool FillDrawCall (UIDrawCall dc)
	{
		if (dc != null)
		{
			dc.isDirty = false;
			int count = 0;

			for (int i = 0; i < widgets.Count; )
			{
				UIWidget w = widgets[i];

				if (w == null)
				{
#if UNITY_EDITOR
					Debug.LogError("This should never happen");
#endif
					widgets.RemoveAt(i);
					continue;
				}

				if (w.drawCall == dc)
				{
					if (w.isVisible && w.hasVertices)
					{
						++count;
						
						if (generateNormals) w.WriteToBuffers(dc.verts, dc.uvs, dc.cols, dc.norms, dc.tans);
						else w.WriteToBuffers(dc.verts, dc.uvs, dc.cols, null, null);

						if (w.mOnRender != null)
						{
							if (mOnRender == null) mOnRender = w.mOnRender;
							else mOnRender += w.mOnRender;
						}
					}
					else w.drawCall = null;
				}
				++i;
			}

			if (dc.verts.size != 0)
			{
				dc.UpdateGeometry(count);
				dc.onRender = mOnRender;
				mOnRender = null;
				return true;
			}
		}
		return false;
	}
Exemple #11
0
 void Push_UIDrawCall_OnRenderCallback(IntPtr L, UIDrawCall.OnRenderCallback o)
 {
     ToLua.Push(L, o);
 }
Exemple #12
0
    private void FillAllDrawCalls()
    {
        for (int i = 0; i < drawCalls.Count; i++)
        {
            UIDrawCall.Destroy(drawCalls[i]);
        }
        drawCalls.Clear();
        Material   material   = null;
        Texture    texture    = null;
        Shader     shader     = null;
        UIDrawCall uIDrawCall = null;
        int        num        = 0;

        if (mSortWidgets)
        {
            SortWidgets();
        }
        for (int j = 0; j < widgets.Count; j++)
        {
            UIWidget uIWidget = widgets[j];
            if (uIWidget.isVisible && uIWidget.hasVertices)
            {
                Material material2   = uIWidget.material;
                Texture  mainTexture = uIWidget.mainTexture;
                Shader   shader2     = uIWidget.shader;
                if (material != material2 || texture != mainTexture || shader != shader2)
                {
                    if (uIDrawCall != null && uIDrawCall.verts.size != 0)
                    {
                        drawCalls.Add(uIDrawCall);
                        uIDrawCall.UpdateGeometry(num);
                        uIDrawCall.onRender = mOnRender;
                        mOnRender           = null;
                        num        = 0;
                        uIDrawCall = null;
                    }
                    material = material2;
                    texture  = mainTexture;
                    shader   = shader2;
                }
                if (material != null || shader != null || texture != null)
                {
                    if (uIDrawCall == null)
                    {
                        uIDrawCall            = UIDrawCall.Create(this, material, texture, shader);
                        uIDrawCall.depthStart = uIWidget.depth;
                        uIDrawCall.depthEnd   = uIDrawCall.depthStart;
                        uIDrawCall.panel      = this;
                    }
                    else
                    {
                        int depth = uIWidget.depth;
                        if (depth < uIDrawCall.depthStart)
                        {
                            uIDrawCall.depthStart = depth;
                        }
                        if (depth > uIDrawCall.depthEnd)
                        {
                            uIDrawCall.depthEnd = depth;
                        }
                    }
                    uIWidget.drawCall = uIDrawCall;
                    num++;
                    if (generateNormals)
                    {
                        uIWidget.WriteToBuffers(uIDrawCall.verts, uIDrawCall.uvs, uIDrawCall.cols, uIDrawCall.norms, uIDrawCall.tans);
                    }
                    else
                    {
                        uIWidget.WriteToBuffers(uIDrawCall.verts, uIDrawCall.uvs, uIDrawCall.cols, null, null);
                    }
                    if (uIWidget.mOnRender != null)
                    {
                        if (mOnRender == null)
                        {
                            mOnRender = uIWidget.mOnRender;
                        }
                        else
                        {
                            mOnRender = (UIDrawCall.OnRenderCallback)Delegate.Combine(mOnRender, uIWidget.mOnRender);
                        }
                    }
                }
            }
            else
            {
                uIWidget.drawCall = null;
            }
        }
        if (uIDrawCall != null && uIDrawCall.verts.size != 0)
        {
            drawCalls.Add(uIDrawCall);
            uIDrawCall.UpdateGeometry(num);
            uIDrawCall.onRender = mOnRender;
            mOnRender           = null;
        }
    }
Exemple #13
0
 private bool FillDrawCall(UIDrawCall dc)
 {
     if (dc != null)
     {
         dc.isDirty = false;
         int num = 0;
         int i = 0;
         while (i < this.widgets.Count)
         {
             UIWidget uIWidget = this.widgets[i];
             if (uIWidget == null)
             {
                 this.widgets.RemoveAt(i);
             }
             else
             {
                 if (uIWidget.drawCall == dc)
                 {
                     if (uIWidget.isVisible && uIWidget.hasVertices)
                     {
                         num++;
                         if (this.generateNormals)
                         {
                             uIWidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, dc.norms, dc.tans);
                         }
                         else
                         {
                             uIWidget.WriteToBuffers(dc.verts, dc.uvs, dc.cols, null, null);
                         }
                         if (uIWidget.mOnRender != null)
                         {
                             if (this.mOnRender == null)
                             {
                                 this.mOnRender = uIWidget.mOnRender;
                             }
                             else
                             {
                                 this.mOnRender = (UIDrawCall.OnRenderCallback)Delegate.Combine(this.mOnRender, uIWidget.mOnRender);
                             }
                         }
                     }
                     else
                     {
                         uIWidget.drawCall = null;
                     }
                 }
                 i++;
             }
         }
         if (dc.verts.size != 0)
         {
             dc.UpdateGeometry(num);
             dc.onRender = this.mOnRender;
             this.mOnRender = null;
             return true;
         }
     }
     return false;
 }
Exemple #14
0
 private void FillAllDrawCalls()
 {
     for (int i = 0; i < this.drawCalls.Count; i++)
     {
         UIDrawCall.Destroy(this.drawCalls[i]);
     }
     this.drawCalls.Clear();
     Material material = null;
     Texture texture = null;
     Shader shader = null;
     UIDrawCall uIDrawCall = null;
     int num = 0;
     if (this.mSortWidgets)
     {
         this.SortWidgets();
     }
     for (int j = 0; j < this.widgets.Count; j++)
     {
         UIWidget uIWidget = this.widgets[j];
         if (uIWidget.isVisible && uIWidget.hasVertices)
         {
             Material material2 = uIWidget.material;
             Texture mainTexture = uIWidget.mainTexture;
             Shader shader2 = uIWidget.shader;
             if (material != material2 || texture != mainTexture || shader != shader2)
             {
                 if (uIDrawCall != null && uIDrawCall.verts.size != 0)
                 {
                     this.drawCalls.Add(uIDrawCall);
                     uIDrawCall.UpdateGeometry(num);
                     uIDrawCall.onRender = this.mOnRender;
                     this.mOnRender = null;
                     num = 0;
                     uIDrawCall = null;
                 }
                 material = material2;
                 texture = mainTexture;
                 shader = shader2;
             }
             if (material != null || shader != null || texture != null)
             {
                 if (uIDrawCall == null)
                 {
                     uIDrawCall = UIDrawCall.Create(this, material, texture, shader);
                     uIDrawCall.depthStart = uIWidget.depth;
                     uIDrawCall.depthEnd = uIDrawCall.depthStart;
                     uIDrawCall.panel = this;
                 }
                 else
                 {
                     int depth = uIWidget.depth;
                     if (depth < uIDrawCall.depthStart)
                     {
                         uIDrawCall.depthStart = depth;
                     }
                     if (depth > uIDrawCall.depthEnd)
                     {
                         uIDrawCall.depthEnd = depth;
                     }
                 }
                 uIWidget.drawCall = uIDrawCall;
                 num++;
                 if (this.generateNormals)
                 {
                     uIWidget.WriteToBuffers(uIDrawCall.verts, uIDrawCall.uvs, uIDrawCall.cols, uIDrawCall.norms, uIDrawCall.tans);
                 }
                 else
                 {
                     uIWidget.WriteToBuffers(uIDrawCall.verts, uIDrawCall.uvs, uIDrawCall.cols, null, null);
                 }
                 if (uIWidget.mOnRender != null)
                 {
                     if (this.mOnRender == null)
                     {
                         this.mOnRender = uIWidget.mOnRender;
                     }
                     else
                     {
                         this.mOnRender = (UIDrawCall.OnRenderCallback)Delegate.Combine(this.mOnRender, uIWidget.mOnRender);
                     }
                 }
             }
         }
         else
         {
             uIWidget.drawCall = null;
         }
     }
     if (uIDrawCall != null && uIDrawCall.verts.size != 0)
     {
         this.drawCalls.Add(uIDrawCall);
         uIDrawCall.UpdateGeometry(num);
         uIDrawCall.onRender = this.mOnRender;
         this.mOnRender = null;
     }
 }