private List <T4_occupant> get_colliders(T4_rect checkbox) { List <T4_occupant> colliders = new List <T4_occupant>(); // nothing to look here and deeper, we're outside of rect if (!_rect.Is_intersects_with(checkbox)) { return(colliders); } // add occupants from the deeper rooms if (_rooms != null) { foreach (T4 room in _rooms) { colliders.AddRange(room.get_colliders(checkbox)); } } // add own occupants foreach (T4_occupant occupant in _occupants) { if (occupant.Rect.Is_intersects_with(checkbox)) { colliders.Add(occupant); } } return(colliders); }
public List <T4_rect> Get_colliding_obj_rects(T4_rect checkbox) { List <T4_rect> rects = new List <T4_rect>(); foreach (T4_occupant occupant in get_colliders(checkbox)) { rects.Add(occupant.Rect); } return(rects); }
public List <T> Get_colliding_objects <T>(T4_rect checkbox) { List <T> objects = new List <T>(); foreach (T4_occupant occupant in get_colliders(checkbox)) { objects.Add((T)occupant.Obj); } return(objects); }
// maybe it's wrong. gotta check public bool Is_intersects_with(T4_rect he) { if (this.Xmax < he.Xmin) { return(false); } if (this.Xmin > he.Xmax) { return(false); } if (this.Ymax < he.Ymin) { return(false); } if (this.Ymin > he.Ymax) { return(false); } return(true); }
public T4(T4_rect rect) { _rect = rect; }
public void Add(T4_rect rect, object obj) { add(new T4_occupant(rect, obj)); }
public T4_occupant(T4_rect rect, object obj) { this.Rect = rect; this.Obj = obj; }