private void PlaceObjects() { if (CanPlaceObjectsOnHoveredSurface()) { var placementDataInstances = _objectPlacementDataCalculator.Calculate(RotationToApplyForStrokeAlignment); List <GameObject> placedHierarchyRoots = Octave3DScene.Get().InstantiateObjectHirarchiesFromPlacementDataCollection(placementDataInstances); for (int rootIndex = 0; rootIndex < placedHierarchyRoots.Count; ++rootIndex) { GameObject root = placedHierarchyRoots[rootIndex]; if (placementDataInstances[rootIndex].MustEmbedInSurface) { if (_strokeSurface.Type == DecorPaintStrokeSurfaceType.Terrain) { root.EmbedInSurfaceByVertex(-Vector3.up, _strokeSurface.SurfaceObject); } else if (_strokeSurface.Type == DecorPaintStrokeSurfaceType.Mesh) { root.EmbedInSurfaceByVertex(-_strokeSurface.Plane.normal, _strokeSurface.SurfaceObject); } } } List <GameObject> allPlacedObjects = GameObjectExtensions.GetAllObjectsInHierarchyCollection(placedHierarchyRoots); _objectsPlacedWhileDragging.AddRange(allPlacedObjects); DecorPaintObjectPlacement.Get().DecorPaintMask.ObjectCollectionMask.Mask(allPlacedObjects); ObjectHierarchyRootsWerePlacedInSceneMessage.SendToInterestedListeners(placedHierarchyRoots, ObjectHierarchyRootsWerePlacedInSceneMessage.PlacementType.ObjectPlacement); } RegisterPlacementPoint(); }
private void PlaceObjects() { if (CanPlaceObjectsOnHoveredSurface()) { var placementDataInstances = _objectPlacementDataCalculator.Calculate(RotationToApplyForStrokeAlignment); List <GameObject> placedHierarchyRoots = Octave3DScene.Get().InstantiateObjectHirarchiesFromPlacementDataCollection(placementDataInstances); List <GameObject> allPlacedObjects = GameObjectExtensions.GetAllObjectsInHierarchyCollection(placedHierarchyRoots); _objectsPlacedWhileDragging.AddRange(allPlacedObjects); DecorPaintObjectPlacement.Get().DecorPaintMask.ObjectCollectionMask.Mask(allPlacedObjects); ObjectHierarchyRootsWerePlacedInSceneMessage.SendToInterestedListeners(placedHierarchyRoots, ObjectHierarchyRootsWerePlacedInSceneMessage.PlacementType.ObjectPlacement); } RegisterPlacementPoint(); }