#pragma once #include "obj/object.h" #include "util/refcount.h" #include "threads.h" #include class Universe : public AtomicRefCounted { public: mutable threads::Mutex queueLock; std::unordered_set addQueue; std::unordered_set removeQueue; mutable threads::ReadWriteMutex childLock; std::vector children; void doQueued(); void addChild(Object* obj); void removeChild(Object* obj); void destroyAll(); Object* getRandomTarget(unsigned randVal = 0); void setRandomTarget(heldPointer& targ, unsigned randVal = 0); void removeTargetsTo(Object* obj); Object* getClosestOnLine(const line3dd& line) const; };