public Room GetMostLikelyRoom(VoxelHandle v) { foreach (Room r in DesignatedRooms.Where(r => r.ContainsVoxel(v))) { return(r); } BoundingBox larger = new BoundingBox(v.GetBoundingBox().Min - new Vector3(0.5f, 0.5f, 0.5f), v.GetBoundingBox().Max + new Vector3(0.5f, 0.5f, 0.5f)); return((from room in BuildDesignations from buildDesignation in room.VoxelOrders where larger.Intersects(buildDesignation.Voxel.GetBoundingBox()) select buildDesignation.ToBuild).FirstOrDefault()); }
public void OnVoxelDestroyed(VoxelHandle voxDestroyed) { List <Room> toDestroy = new List <Room>(); lock (DesignatedRooms) { List <Room> toCheck = new List <Room>(); toCheck.AddRange(DesignatedRooms.Where(r => r.IsBuilt)); foreach (Room r in toCheck) { if (r.RemoveVoxel(voxDestroyed)) { toDestroy.Add(r); } } foreach (Room r in toDestroy) { DesignatedRooms.Remove(r); r.Destroy(); } } }
public List <Room> FilterRoomsByType(string type) { return(DesignatedRooms.Where(r => r.RoomData.Name == type).ToList()); }