Ejemplo n.º 1
0
        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();
        }