// public IStoryLayoutInstance ArrangeAndDecorate(IStoryGraph sg) { var placementAlgorithm = new BuildingStoryLayoutPlacementAlgorithm(coroutineService, x => ArrangeAndDecorateInternal(sg.Root, x, new List <BuildingWallSegment>()), sg); placementAlgorithm.Run(); var collisionSegments = new List <BuildingWallSegment>(); ArrangeAndDecorateInternal(sg.Root, placementAlgorithm, collisionSegments); var floors = sg.Children[sg.Root] .Select(x => new AaBox(placementAlgorithm.RelativeTransforms[x].Offset, placementAlgorithm.HalfSizes[x])) .ToArray(); var zonesWithProperties = floors.Select(x => Tuples.Pair(x, new StoryLayoutZoneProperties(-15f))).ToArray(); var defaultZoneProperties = new StoryLayoutZoneProperties(0); var zoning = new AaBoxStoryLayoutZoning(zonesWithProperties, defaultZoneProperties); var buildingCollisionMesh = new CollisionMesh(collisionSegments, floors, zoning); return(new BuildingStoryLayoutInstance(inputService, placementAlgorithm, buildingCollisionMesh, zoning)); }
public AaBoxStoryLayoutZoning(IReadOnlyList <Pair <AaBox, StoryLayoutZoneProperties> > zonesWithProperties, StoryLayoutZoneProperties defaultZoneProperties) { this.zonesWithProperties = zonesWithProperties; this.defaultZoneProperties = defaultZoneProperties; }