Example #1
0
        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());
        }
Example #2
0
        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();
                }
            }
        }
Example #3
0
 public List <Room> FilterRoomsByType(string type)
 {
     return(DesignatedRooms.Where(r => r.RoomData.Name == type).ToList());
 }