private void InstantiatePlacedObject(Vector2 worldPosition, IPlacedObject objectToPlace, bool cloneObject, ILevelElement levelElement = null) { IPlacedObject placedObject; if (cloneObject) { placedObject = CloneObjectToPlace(objectToPlace); ((PlacedObject)placedObject).transform.position = worldPosition; } else { placedObject = objectToPlace; } if (placedObject.Type == PrefabType.LEVELELEMENT) { //objectDeletionModule.RemoveWallFromTileMap(placedObject); Destroy(placedObject.Prefab); if (levelElement == null) { levelElement = CreateLevelElement(placedObject); } placedObject.Prefab = AssignLevelElementToPlacedObject(levelElement); AddWallToTileMap(placedObject.Prefab); DestroyeWallSpriteComponent(placedObject); AddSpriteRendererForWall(placedObject); levelDataManager.AddLevelElement(levelElement); bool outerBoundWall = objectInformationModule.CheckForOuterBoundWall(placedObject); if (outerBoundWall) { placedObject.SetProtectedObject(true); } } if (objectToPlace.Type is PrefabType.PLAYER) { objectInformationModule.SetPlayerExists(true); } IList <ILevelTile> levelTiles = GetLevelTiles(placedObject, worldPosition, levelElement); placedObject.SetupInstantiatedObject(levelTiles, transform); LevelCreator.GetInstance().GetInScenePlacedObjects()[placedObject.ObjectId] = placedObject; }
private void DeleteObjectIntern(IPlacedObject hoveredObject, bool RemoveFromDict) { if (RemoveFromDict) { RemoveObjectFromDictionary(inScenePlacedObjects, hoveredObject); } if (hoveredObject.Type == PrefabType.LEVELELEMENT) { RemoveWallFromTileMap(hoveredObject); RemoveLevelElementFromLevelTile(hoveredObject); levelDataManager.RemoveLevelElement(hoveredObject); } if (hoveredObject.Type is PrefabType.PLAYER) { objectInformationModule.SetPlayerExists(false); } DestroyPlacedObject(hoveredObject); hoveredObject = null; }