Exemplo n.º 1
0
    public void InsertObject(BalanceSystemObject obj)
    {
        QuadTreeCellBalanceSystem cellAtPos = this.GetCellAtPos(obj.m_GameObject.transform.position);

        cellAtPos.m_Objects.Add(obj);
        this.m_ObjCellMap[obj] = cellAtPos;
    }
Exemplo n.º 2
0
    public List <BalanceSystemObject> GetObjectsInRadius(Vector3 pos, float radius)
    {
        this.m_ObjectsInRadius.Clear();
        Vector3 pos2 = pos;

        pos2.x -= radius;
        pos2.z -= radius;
        QuadTreeCellBalanceSystem cellAtPos = this.GetCellAtPos(pos2);
        Vector3 pos3 = pos;

        pos3.x += radius;
        pos3.z += radius;
        QuadTreeCellBalanceSystem cellAtPos2 = this.GetCellAtPos(pos3);

        for (int i = cellAtPos.m_X; i <= cellAtPos2.m_X; i++)
        {
            for (int j = cellAtPos.m_Y; j <= cellAtPos2.m_Y; j++)
            {
                QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
                for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
                {
                    BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                    if (balanceSystemObject == null)
                    {
                        Debug.Log("Quad tree GetObjectsInRadius - obj is null : GameObject obj = cell.m_Objects[i];");
                    }
                    if (balanceSystemObject != null && (balanceSystemObject.m_GameObject.transform.position - pos).magnitude < radius)
                    {
                        this.m_ObjectsInRadius.Add(balanceSystemObject);
                    }
                }
            }
        }
        return(this.m_ObjectsInRadius);
    }
    public void InsertObject(BalanceSystemObject obj, Vector3 position)
    {
        QuadTreeCellBalanceSystem cellAtPos = this.GetCellAtPos(position);

        if (!cellAtPos.m_Objects.Contains(obj))
        {
            cellAtPos.m_Objects.Add(obj);
        }
        this.m_ObjCellMap[obj] = cellAtPos;
    }
    public void RemoveObject(BalanceSystemObject go)
    {
        if (!this.m_ObjCellMap.ContainsKey(go))
        {
            DebugUtils.Assert("[QuadTree:RemoveObject] Tree does not contains object - " + go.m_GameObject.name, true, DebugUtils.AssertType.Info);
            return;
        }
        QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = null;

        if (this.m_ObjCellMap.TryGetValue(go, out quadTreeCellBalanceSystem))
        {
            quadTreeCellBalanceSystem.RemoveObject(go);
            this.m_ObjCellMap.Remove(go);
            return;
        }
        DebugUtils.Assert(false, true);
    }
Exemplo n.º 5
0
 private QuadTreeCellBalanceSystem FindObjectCell(GameObject go)
 {
     for (int i = 0; i < this.m_NumCellsX; i++)
     {
         for (int j = 0; j < this.m_NumCellsY; j++)
         {
             QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
             for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
             {
                 BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                 if (go == balanceSystemObject.m_GameObject)
                 {
                     return(quadTreeCellBalanceSystem);
                 }
             }
         }
     }
     return(null);
 }
Exemplo n.º 6
0
    public BalanceSystemObject GetObjectInPos(Vector3 pos)
    {
        QuadTreeCellBalanceSystem cellAtPos = this.GetCellAtPos(pos);

        foreach (BalanceSystemObject balanceSystemObject in cellAtPos.m_Objects)
        {
            if (balanceSystemObject.m_GameObject != null)
            {
                if (balanceSystemObject.m_GameObject.transform.position == pos)
                {
                    return(balanceSystemObject);
                }
            }
            else if (balanceSystemObject.m_Position == pos)
            {
                return(balanceSystemObject);
            }
        }
        return(null);
    }
 public void Clear()
 {
     for (int i = 0; i < this.m_NumCellsX; i++)
     {
         for (int j = 0; j < this.m_NumCellsY; j++)
         {
             QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
             for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
             {
                 BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                 if (balanceSystemObject.m_GameObject)
                 {
                     UnityEngine.Object.Destroy(balanceSystemObject.m_GameObject);
                     balanceSystemObject.m_GameObject = null;
                 }
             }
             quadTreeCellBalanceSystem.m_Objects.Clear();
         }
     }
     this.m_ObjCellMap.Clear();
 }
Exemplo n.º 8
0
    public void DrawDebug()
    {
        bool flag  = false;
        bool flag2 = true;
        bool flag3 = true;

        for (int i = 0; i < this.m_NumCellsX; i++)
        {
            for (int j = 0; j < this.m_NumCellsY; j++)
            {
                QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
                if (flag || (flag3 && quadTreeCellBalanceSystem.m_Objects.Count > 0))
                {
                    Vector3 zero = Vector3.zero;
                    zero.x = quadTreeCellBalanceSystem.m_Pos.x;
                    zero.z = quadTreeCellBalanceSystem.m_Pos.y;
                    Vector3 end = zero;
                    end.x += quadTreeCellBalanceSystem.m_Size.x;
                    DebugRender.DrawLine(zero, end, Color.white, 0f);
                    end    = zero;
                    end.z += quadTreeCellBalanceSystem.m_Size.y;
                    DebugRender.DrawLine(zero, end, Color.white, 0f);
                }
                if (flag2)
                {
                    for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
                    {
                        BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                        if (balanceSystemObject.m_GameObject != null)
                        {
                            DebugRender.DrawPoint(balanceSystemObject.m_GameObject.transform.position, (!balanceSystemObject.m_GameObject.activeSelf) ? Color.green : Color.red, 0.3f, 0f);
                        }
                    }
                }
            }
        }
    }
 public void SerializeAllObjects(P2PNetworkWriter writer)
 {
     using (P2PNetworkWriterSeekHelper p2PNetworkWriterSeekHelper = new P2PNetworkWriterSeekHelper(writer))
     {
         writer.Write(0);
         int num = 0;
         for (int i = 0; i < this.m_NumCellsX; i++)
         {
             for (int j = 0; j < this.m_NumCellsY; j++)
             {
                 QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
                 for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
                 {
                     BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                     writer.Write(balanceSystemObject.m_Position);
                     balanceSystemObject.Serialize(writer);
                     num++;
                 }
             }
         }
         p2PNetworkWriterSeekHelper.SeekToStoredPos();
         writer.Write(num);
     }
 }