123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System.Collections.Generic;
- using UnityEngine;
- namespace FairyGUI
- {
-
-
-
- public class CompositeMesh : IMeshFactory, IHitTest
- {
-
-
-
- public readonly List<IMeshFactory> elements;
-
-
-
- public int activeIndex;
- public CompositeMesh()
- {
- elements = new List<IMeshFactory>();
- activeIndex = -1;
- }
- public void OnPopulateMesh(VertexBuffer vb)
- {
- int cnt = elements.Count;
- if (cnt == 1)
- elements[0].OnPopulateMesh(vb);
- else
- {
- VertexBuffer vb2 = VertexBuffer.Begin(vb);
- for (int i = 0; i < cnt; i++)
- {
- if (activeIndex == -1 || i == activeIndex)
- {
- vb2.Clear();
- elements[i].OnPopulateMesh(vb2);
- vb.Append(vb2);
- }
- }
- vb2.End();
- }
- }
- public bool HitTest(Rect contentRect, Vector2 point)
- {
- if (!contentRect.Contains(point))
- return false;
- bool flag = false;
- int cnt = elements.Count;
- for (int i = 0; i < cnt; i++)
- {
- if (activeIndex == -1 || i == activeIndex)
- {
- IHitTest ht = elements[i] as IHitTest;
- if (ht != null)
- {
- if (ht.HitTest(contentRect, point))
- return true;
- }
- else
- flag = true;
- }
- }
- return flag;
- }
- }
- }
|