public Draggable AddPiece(Piece piece, MonoField field) { var fieldAnchorMin = ((RectTransform)field.transform).anchorMin; var fieldAnchorMax = ((RectTransform)field.transform).anchorMax; var fieldSize = new Vector2(1, 1); Draggable draggablePiece = null; if (piece.Type == pType.Wall || piece.Type == pType.Hole || piece.Type == pType.Endpoint) { Draggable staticPiece = null; if (piece.Type == pType.Wall) { staticPiece = Instantiate(configuration.wallPrefab, pieceTransform); } if (piece.Type == pType.Hole) { staticPiece = Instantiate(configuration.holePrefab, pieceTransform); } if (piece.Type == pType.Endpoint) { staticPiece = Instantiate(configuration.endpointPrefab, pieceTransform); } staticPiece.Setup(fieldAnchorMin, fieldAnchorMax, this, piece); draggablePiece = staticPiece; } else if (piece.Type == pType.Magnet) { var magnet = Instantiate(configuration.magnetPrefab, pieceTransform); magnet.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity); draggablePiece = magnet; } else if (piece.Type == pType.Player) { var player = Instantiate(configuration.playerPrefab, pieceTransform); player.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity); draggablePiece = player; } else if (piece.Type == pType.Door) { var door = Instantiate(configuration.doorPrefab, pieceTransform); door.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity); draggablePiece = door; } else if (piece.Type == pType.Lock) { var lockObj = Instantiate(configuration.lockPrefab, pieceTransform); lockObj.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity); draggablePiece = lockObj; } else { return(null); } var position = Place(draggablePiece, field); if (position == null) { Destroy(draggablePiece.gameObject); return(null); } return(draggablePiece); }
public abstract Vector3?Place(Draggable piece, MonoField square);