Esempio n. 1
0
        public bool IsVisibleInRoom(Room room, Camera cam)
        {
            var polys = Polygons;

            if (room.Frustum.Count == 0)
            {
                var ins = true;
                foreach (var polygon in polys)
                {
                    var t = polygon.Plane.Distance(EngineCamera.Position);
                    if (t > 0 && EngineCamera.Frustum.IsPolyVisible(polygon, cam))
                    {
                        return true;
                    }
                    if (ins && t > 0)
                    {
                        ins = false;
                    }
                }
                return ins;
            }

            return room.Frustum.Any(frustum => (from polygon in polys
                                                let t = polygon.Plane.Distance(cam.Position)
                                                where t > 0 && frustum.IsPolyVisible(polygon, cam)
                                                select polygon).Any());
        }
 public override void TransferToRoom(Room room)
 {
 }
Esempio n. 3
0
 public virtual void TransferToRoom(Room room)
 {
     if(Self.Room != null && !Self.Room.IsOverlapped(room))
     {
         Self.Room.RemoveEntity(this);
         room?.AddEntity(this);
     }
 }