public void Initialize(TouchPointData touchPointData) { LocalPosition = touchPointData.LocalPosition; _cells = touchPointData.Cells; if (_cells.Length != 3) { throw new InvalidOperationException("TouchPoint must have 3 Cells."); } CalculateMiddlePointPosition(); }
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); }