Esempio n. 1
0
    public void FindObjects()
    {
        instance = this;

        frontLink   = null;
        objectCount = 0;

        Transform[] objs = GameObject.FindObjectsOfType(typeof(Transform)) as Transform[];
        ObjectArrayLink <ObjectBase> old = new ObjectArrayLink <ObjectBase>();

        ObjectBase[] bases;

        for (int i = 0; i < objs.Length; ++i)
        {
            bases = objs[i].GetComponents <ObjectBase>() as ObjectBase[];

            if (bases.Length > 0)
            {
                ObjectArrayLink <ObjectBase> link = new ObjectArrayLink <ObjectBase>(bases);
                for (int j = 0; j < bases.Length; ++j)
                {
                    bases[j].Initialize();
                }
                if (frontLink == null)
                {
                    frontLink = link;
                }
                else
                {
                    old.back = link;
                }
                old = link;

                ++objectCount;
            }
            bases = null;
        }
    }
Esempio n. 2
0
    public override void Progress(float deltaTime = 0f)
    {
        ObjectArrayLink <ObjectBase> link   = frontLink;
        ObjectArrayLink <ObjectBase> _front = link;

        if (link == null)
        {
            return;
        }

        while (true)
        {
            int c = link.me.Length;

            for (int i = 0; i < c; ++i)
            {
                if (!link.me[i].gameObject.activeInHierarchy)
                {
                    continue;
                }

                if (link.me[i].ProgressCheck())
                {
                    link.me[i].Progress(this.deltaTime);
                }

                if (link.me[i].IsDestroy())
                {
                    GameObject save = link.me[0].gameObject;
                    if (_front != null)
                    {
                        _front.back = link.back;
                    }
                    if (frontLink == link)
                    {
                        frontLink = link.back;
                    }
                    for (int j = 0; j < c; ++j)
                    {
                        link.me[j].Release();
                        GameObject.Destroy(link.me[j]);
                    }
                    link.me = null;
                    link    = link.back;
                    GameObject.Destroy(save);

                    --objectCount;
                    break;
                }
            }

            if (link != null)
            {
                if (link.back == null)
                {
                    break;
                }
                _front = link;
                link   = link.back;
            }
            else
            {
                break;
            }
        }
    }
 public ObjectArrayLink(T[] m, ObjectArrayLink <T> b = null)
 {
     me   = m;
     back = b;
 }