Esempio n. 1
0
    private void UpdateSegmentsWithGrid()
    {
        for (int i = 0; i < this.segments.Count; i++)
        {
            this.SetSegmentActive(i, false);
        }
        Vector3 position = LocalPlayer.Transform.position;

        LinearEmitter.GridPosition gridPosition  = this.CalculateGridPosition(position);
        LinearEmitter.GridPosition gridPosition2 = gridPosition;
        if (0 < gridPosition.x && position.x < this.bounds.max.x)
        {
            gridPosition.x--;
        }
        if (gridPosition2.x < this.grid.GetLength(0) - 1 && this.bounds.min.x < position.x)
        {
            gridPosition2.x++;
        }
        if (0 < gridPosition.y && position.y < this.bounds.max.y)
        {
            gridPosition.y--;
        }
        if (gridPosition2.y < this.grid.GetLength(1) - 1 && this.bounds.min.y < position.y)
        {
            gridPosition2.y++;
        }
        if (0 < gridPosition.z && position.z < this.bounds.max.z)
        {
            gridPosition.z--;
        }
        if (gridPosition2.z < this.grid.GetLength(2) - 1 && this.bounds.min.z < position.z)
        {
            gridPosition2.z++;
        }
        for (int j = gridPosition.x; j <= gridPosition2.x; j++)
        {
            for (int k = gridPosition.y; k <= gridPosition2.y; k++)
            {
                for (int l = gridPosition.z; l <= gridPosition2.z; l++)
                {
                    List <int> list = this.grid[j, k, l];
                    if (list != null)
                    {
                        for (int m = 0; m < list.Count; m++)
                        {
                            this.UpdateSegment(list[m]);
                        }
                    }
                }
            }
        }
    }
Esempio n. 2
0
    private void AddSegmentToGrid(int segmentIndex)
    {
        Vector3 start = this.segments[segmentIndex].start;
        Vector3 rhs   = start + this.segments[segmentIndex].delta;

        LinearEmitter.GridPosition gridPosition  = this.CalculateGridPosition(Vector3.Min(start, rhs));
        LinearEmitter.GridPosition gridPosition2 = this.CalculateGridPosition(Vector3.Max(start, rhs));
        for (int i = gridPosition.x; i <= gridPosition2.x; i++)
        {
            for (int j = gridPosition.y; j <= gridPosition2.y; j++)
            {
                for (int k = gridPosition.z; k <= gridPosition2.z; k++)
                {
                    if (this.grid[i, j, k] == null)
                    {
                        this.grid[i, j, k] = new List <int>();
                    }
                    this.grid[i, j, k].Add(segmentIndex);
                }
            }
        }
    }