Example #1
0
    public void Initialize(TouchPointData touchPointData)
    {
        LocalPosition = touchPointData.LocalPosition;

        _cells = touchPointData.Cells;

        if (_cells.Length != 3)
        {
            throw new InvalidOperationException("TouchPoint must have 3 Cells.");
        }

        CalculateMiddlePointPosition();
    }
Example #2
0
    private List <TouchPointData> GetTouchPointData(int x, int y)
    {
        var cellPosition           = _grid[x, y].LocalPosition;
        var touchPointData         = new List <TouchPointData>();
        var hexagonOuterOffsetHalf = _hexagonOuterOffset * 0.5f;

        if (y == 0)
        {
            var lowerLeftData = new TouchPointData
            {
                LocalPosition = cellPosition - new Vector3((_hexagonInnerOffset + (hexagonOuterOffsetHalf)),
                                                           (_hexagonHeight * 0.25f) + (hexagonOuterOffsetHalf)),
                Cells = GetCellGroupLowerLeft(x, y)
            };
            touchPointData.Add(lowerLeftData);

            var lowerRightData = new TouchPointData
            {
                LocalPosition = cellPosition + new Vector3((_hexagonInnerOffset) + (hexagonOuterOffsetHalf),
                                                           -(_hexagonHeight * 0.25f) - (hexagonOuterOffsetHalf)),
                Cells = GetCellGroupLowerRight(x, y)
            };
            touchPointData.Add(lowerRightData);
        }

        if (x == _gridWidth - 1)
        {
            var middleRightData = new TouchPointData
            {
                LocalPosition = cellPosition + new Vector3((_hexagonWidth * 0.5f) + (hexagonOuterOffsetHalf), 0f),
                Cells         = GetCellGroupMiddleRight(x, y)
            };
            touchPointData.Add(middleRightData);

            var upperRightData = new TouchPointData
            {
                LocalPosition = cellPosition + new Vector3((_hexagonInnerOffset) + (hexagonOuterOffsetHalf),
                                                           (_hexagonHeight * 0.25f) + (hexagonOuterOffsetHalf)),
                Cells = GetCellGroupUpperRight(x, y)
            };
            touchPointData.Add(upperRightData);
        }

        if (x != _gridWidth - 1 && y == _gridHeight - 1)
        {
            var upperRightData = new TouchPointData
            {
                LocalPosition = cellPosition + new Vector3((_hexagonInnerOffset) + (hexagonOuterOffsetHalf),
                                                           (_hexagonHeight * 0.25f) + (hexagonOuterOffsetHalf)),
                Cells = GetCellGroupUpperRight(x, y)
            };
            touchPointData.Add(upperRightData);
        }

        var middleLeftData = new TouchPointData
        {
            LocalPosition = cellPosition + new Vector3(-(_hexagonWidth * 0.5f) - (hexagonOuterOffsetHalf), 0f),
            Cells         = GetCellGroupMiddleLeft(x, y)
        };

        touchPointData.Add(middleLeftData);

        var upperLeftData = new TouchPointData
        {
            LocalPosition = cellPosition + new Vector3(-(_hexagonInnerOffset) - (hexagonOuterOffsetHalf), (_hexagonHeight * 0.25f) + (hexagonOuterOffsetHalf)),
            Cells         = GetCellGroupUpperLeft(x, y)
        };

        touchPointData.Add(upperLeftData);

        return(touchPointData);
    }