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);
        }
    }