Exemple #1
0
    public void OnObjectTriggerEnter(GameObject obj)
    {
        BalanceSpawner component = obj.GetComponent <BalanceSpawner>();

        if (component == null)
        {
            DebugUtils.Assert(DebugUtils.AssertType.Info);
            return;
        }
        if (component.IsAttachmentSpawner())
        {
            this.OnBalanceAttachmentSpawnerEnter(obj, obj.GetComponent <BalanceAttachmentSpawner>());
        }
        else
        {
            this.OnBalanceSpawnerEnter(obj, component);
        }
    }
Exemple #2
0
    public void OnCreateConstruction(Construction con)
    {
        Renderer[] componentsDeepChild = General.GetComponentsDeepChild <Renderer>(con.gameObject);
        Bounds     bounds = new Bounds(con.transform.position, Vector3.zero);

        foreach (Renderer renderer in componentsDeepChild)
        {
            bounds.Encapsulate(renderer.bounds);
        }
        int num = Physics.OverlapBoxNonAlloc(bounds.center, bounds.extents, BalanceSystem20.s_OverlapCollidersTmp, Quaternion.identity, int.MinValue);

        for (int j = 0; j < num; j++)
        {
            BalanceSpawner component = BalanceSystem20.s_OverlapCollidersTmp[j].GetComponent <BalanceSpawner>();
            if (component && !component.IsAttachmentSpawner())
            {
                this.m_DisabledSpawnersQuadTree.InsertObject(component);
            }
        }
    }
Exemple #3
0
    public void OnObjectTriggerEnter(GameObject obj)
    {
        BalanceSpawner component = obj.GetComponent <BalanceSpawner>();

        if (component == null)
        {
            DebugUtils.Assert(DebugUtils.AssertType.Info);
            return;
        }
        if (component.IsAttachmentSpawner())
        {
            this.OnBalanceAttachmentSpawnerEnter(obj, obj.GetComponent <BalanceAttachmentSpawner>());
        }
        else
        {
            this.OnBalanceSpawnerEnter(obj, component);
        }
        this.UpdateLists();
        if (!this.IsDeserializingNetworkData() && !this.m_CurrentTriggers.Contains(obj))
        {
            this.m_CurrentTriggers.Add(obj);
        }
    }
Exemple #4
0
    private void ItemDestroyed(string group, GameObject go)
    {
        int i = 0;

        while (i < this.m_ObjectsInArea[group].Count)
        {
            BalanceSystemObject balanceSystemObject = this.m_ObjectsInArea[group][i];
            GameObject          gameObject          = balanceSystemObject.m_GameObject;
            if (gameObject == go)
            {
                if (balanceSystemObject.m_BalanceSpawner != null)
                {
                    BalanceSpawner component = balanceSystemObject.m_BalanceSpawner.GetComponent <BalanceSpawner>();
                    bool           flag      = component.IsAttachmentSpawner();
                    if (flag)
                    {
                        DestroyIfNoChildren component2 = gameObject.GetComponent <DestroyIfNoChildren>();
                        if (component2 == null)
                        {
                            DebugUtils.Assert(DebugUtils.AssertType.Info);
                        }
                        if (component2.CheckNoChildren())
                        {
                            balanceSystemObject.m_ActiveChildrenMask = -1;
                        }
                        else
                        {
                            this.SetupActiveChildrenMask(gameObject, out balanceSystemObject.m_ActiveChildrenMask);
                        }
                        this.m_ObjectsInArea[group].Remove(balanceSystemObject);
                    }
                    else
                    {
                        Item item = null;
                        this.m_TempItemList.Clear();
                        go.GetComponents <Item>(this.m_TempItemList);
                        if (this.m_TempList.Count > 0)
                        {
                            item = this.m_TempItemList[0];
                        }
                        if (item && item.m_DestroyingOnlyScript)
                        {
                            i++;
                        }
                        else
                        {
                            this.m_QuadTree.RemoveObject(balanceSystemObject);
                            this.m_ObjectsInArea[group].Remove(balanceSystemObject);
                        }
                    }
                }
                else
                {
                    i++;
                }
            }
            else
            {
                i++;
            }
        }
    }
Exemple #5
0
    private bool ItemDestroyed(string group, GameObject go, bool main_obj_destroyed)
    {
        int i = 0;

        while (i < this.m_ObjectsInArea[group].Count)
        {
            BalanceSystemObject balanceSystemObject = this.m_ObjectsInArea[group][i];
            GameObject          gameObject          = balanceSystemObject.m_GameObject;
            if (gameObject == go)
            {
                if (balanceSystemObject.m_BalanceSpawner != null)
                {
                    BalanceSpawner component          = balanceSystemObject.m_BalanceSpawner.GetComponent <BalanceSpawner>();
                    int            activeChildrenMask = balanceSystemObject.m_ActiveChildrenMask;
                    if (component.IsAttachmentSpawner())
                    {
                        DestroyIfNoChildren component2 = gameObject.GetComponent <DestroyIfNoChildren>();
                        if (component2 == null)
                        {
                            Debug.Log("obj_in_area name: " + gameObject.name);
                            DebugUtils.Assert(DebugUtils.AssertType.Info);
                            continue;
                        }
                        if (component2.m_NumChildren == 0)
                        {
                            balanceSystemObject.m_AllChildrenDestroyed = true;
                        }
                        if (component2.CheckNoChildren())
                        {
                            balanceSystemObject.m_ActiveChildrenMask = 0;
                        }
                        else
                        {
                            this.SetupActiveChildrenMask(gameObject, ref balanceSystemObject.m_ActiveChildrenMask);
                        }
                        if (main_obj_destroyed)
                        {
                            this.m_ObjectsInArea[group].Remove(balanceSystemObject);
                        }
                        else
                        {
                            i++;
                        }
                    }
                    else
                    {
                        Item item = null;
                        this.m_TempItemList.Clear();
                        go.GetComponents <Item>(this.m_TempItemList);
                        if (this.m_TempItemList.Count > 0)
                        {
                            item = this.m_TempItemList[0];
                        }
                        if (item && item.m_DestroyingOnlyScript)
                        {
                            i++;
                        }
                        else
                        {
                            if (main_obj_destroyed)
                            {
                                this.m_QuadTree.RemoveObject(balanceSystemObject);
                                this.m_ObjectsInArea[group].Remove(balanceSystemObject);
                            }
                            else
                            {
                                i++;
                            }
                            if (go.GetComponent <DestroyablePlant>())
                            {
                                balanceSystemObject.m_ActiveChildrenMask = 0;
                            }
                            else
                            {
                                this.SetupActiveChildrenMask(gameObject, ref balanceSystemObject.m_ActiveChildrenMask);
                            }
                        }
                    }
                    if (main_obj_destroyed && balanceSystemObject.m_ActiveChildrenMask == 0)
                    {
                        ReplicatedBalanceObjects.OnObjectDestroyed(balanceSystemObject);
                    }
                    else if (activeChildrenMask != balanceSystemObject.m_ActiveChildrenMask)
                    {
                        ReplicatedBalanceObjects.OnObjectChanged(balanceSystemObject);
                    }
                    return(true);
                }
                i++;
            }
            else
            {
                i++;
            }
        }
        return(false);
    }