private void MoveObjectToPlaceToMousePosition() { if (stateInformation.objectToPlace.Type == PrefabType.LEVELELEMENT) { Vector2 offset = objectInformationModule.GetOffset(stateInformation.objectToPlace); ILevelTile levelTile = level.GetTileAtPos(mousePosition); Vector2 position = (Vector2)levelTile.Pos; ((PlacedObject)stateInformation.objectToPlace).transform.position = position + offset; } else { ((PlacedObject)stateInformation.objectToPlace).transform.position = mousePosition; } }
private void ConvertLevelElements(IList <ILevelElement> levelElements) { IPlacedObject placedObject; GameObject levelElementObject; foreach (ILevelElement levelElement in levelElements) { if (levelElement is Door) { levelElementObject = ((Door)levelElement).gameObject; if (levelElementObject.transform.rotation.eulerAngles.z == 90) { placedObject = prefabsManager.GetInstantiatedPrefab("door2x1VerticalPrefab", transform); } else { placedObject = prefabsManager.GetInstantiatedPrefab("door2x1HorizontalPrefab", transform); } } else if (levelElement is EndZone) { placedObject = prefabsManager.GetInstantiatedPrefab("endZonePrefab", transform); levelElementObject = ((EndZone)levelElement).gameObject; } else if (levelElement is Wall) { placedObject = prefabsManager.GetInstantiatedPrefab("wallPrefab", transform); levelElementObject = ((Wall)levelElement).gameObject; } else if (levelElement is Floor) { continue; } else { Debug.Log("LevelElement of Type " + levelElement.GetType() + "could not be determined"); continue; } Vector2 offset = objectInformationModule.GetOffset(placedObject); Vector2 leftLowerCornerPos = new Vector2(levelElementObject.transform.position.x - offset.x, levelElementObject.transform.position.y - offset.y); objectPlacementModule.PlaceObject(placedObject, leftLowerCornerPos, false, levelElement, false); } }