public static BuildTowerEventArgs Create(TowerData towerData, IPlacementArea placementArea, IntVector2 placeGrid, Vector3 position, Quaternion rotation, object userData = null)
        {
            BuildTowerEventArgs buildTowerEventArgs = ReferencePool.Acquire <BuildTowerEventArgs>();

            buildTowerEventArgs.TowerData     = towerData;
            buildTowerEventArgs.PlacementArea = placementArea;
            buildTowerEventArgs.PlaceGrid     = placeGrid;
            buildTowerEventArgs.Position      = position;
            buildTowerEventArgs.Rotation      = rotation;
            return(buildTowerEventArgs);
        }
 /// <summary>
 /// Returns transform.position, as there is only one available spot
 /// </summary>
 /// <param name="gridPosition">The coordinate in grid space</param>
 /// <param name="sizeOffset"><see cref="IntVector2"/> indicating size of object to center.</param>
 public Vector3 GridToWorld(IntVector2 gridPosition, IntVector2 sizeOffset)
 {
     return(transform.position);
 }
 /// <summary>
 /// Tests whether the placement area is valid.
 /// </summary>
 /// <param name="gridPos">The grid location</param>
 /// <param name="size">The size of the item</param>
 public TowerFitStatus Fits(IntVector2 gridPos, IntVector2 size)
 {
     return(m_IsOccupied ? TowerFitStatus.Overlaps : TowerFitStatus.Fits);
 }
 /// <summary>
 /// Returns (0, 0), as there is only one available spot
 /// </summary>
 /// <param name="worldPosition"><see cref="Vector3"/> indicating world space coordinates to convert.</param>
 /// <param name="sizeOffset"><see cref="IntVector2"/> indicating size of object to center.</param>
 public IntVector2 WorldToGrid(Vector3 worldPosition, IntVector2 sizeOffset)
 {
     return(new IntVector2(0, 0));
 }