diff options
author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-02-13 12:46:14 +0000 |
---|---|---|
committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-02-13 12:46:14 +0000 |
commit | f0062fa41ae8849235a59808e28998d224a88b52 (patch) | |
tree | 5f6a659fe68df042dd9b78641910745a1fd2fb04 /indra/newview/llviewerobjectlist.h | |
parent | 995fca4d364d8f9c10a99047e0e62f19fa0bbda5 (diff) | |
parent | bcbd12f7b1fd091284ac782eff63d4a18887a8e3 (diff) |
merge from viewer2. this fucks up davep's optimizations, so I'll backout their backout next to restore them. I hope. Sheesh.
Diffstat (limited to 'indra/newview/llviewerobjectlist.h')
-rw-r--r-- | indra/newview/llviewerobjectlist.h | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 706966deae..2858081dc9 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -38,6 +38,8 @@ // common includes #include "llstat.h" +#include "lldarrayptr.h" +#include "llmap.h" // *TODO: switch to std::map #include "llstring.h" // project includes @@ -48,7 +50,7 @@ class LLNetMap; class LLDebugBeacon; const U32 CLOSE_BIN_SIZE = 10; -const U32 NUM_BINS = 128; +const U32 NUM_BINS = 16; // GL name = position in object list + GL_NAME_INDEX_OFFSET so that // we can have special numbers like zero. @@ -109,12 +111,13 @@ public: void updateAvatarVisibility(); // Selection related stuff + void renderObjectsForSelect(LLCamera &camera, const LLRect& screen_rect, BOOL pick_parcel_wall = FALSE, BOOL render_transparent = TRUE); void generatePickList(LLCamera &camera); void renderPickList(const LLRect& screen_rect, BOOL pick_parcel_wall, BOOL render_transparent); LLViewerObject *getSelectedObject(const U32 object_id); - inline S32 getNumObjects() { return (S32) mObjects.size(); } + inline S32 getNumObjects() { return mObjects.count(); } void addToMap(LLViewerObject *objectp); void removeFromMap(LLViewerObject *objectp); @@ -128,7 +131,7 @@ public: S32 findReferences(LLDrawable *drawablep) const; // Find references to drawable in all objects, and return value. - S32 getOrphanParentCount() const { return (S32) mOrphanParents.size(); } + S32 getOrphanParentCount() const { return mOrphanParents.count(); } S32 getOrphanCount() const { return mNumOrphans; } void orphanize(LLViewerObject *childp, U32 parent_id, U32 ip, U32 port); void findOrphans(LLViewerObject* objectp, U32 ip, U32 port); @@ -176,28 +179,26 @@ public: S32 mNumUnknownKills; S32 mNumDeadObjects; protected: - std::vector<U64> mOrphanParents; // LocalID/ip,port of orphaned objects - std::vector<OrphanInfo> mOrphanChildren; // UUID's of orphaned objects + LLDynamicArray<U64> mOrphanParents; // LocalID/ip,port of orphaned objects + LLDynamicArray<OrphanInfo> mOrphanChildren; // UUID's of orphaned objects S32 mNumOrphans; - typedef std::vector<LLPointer<LLViewerObject> > vobj_list_t; - - vobj_list_t mObjects; + LLDynamicArrayPtr<LLPointer<LLViewerObject>, 256> mObjects; std::set<LLPointer<LLViewerObject> > mActiveObjects; - vobj_list_t mMapObjects; + LLDynamicArrayPtr<LLPointer<LLViewerObject> > mMapObjects; typedef std::map<LLUUID, LLPointer<LLViewerObject> > vo_map; vo_map mDeadObjects; // Need to keep multiple entries per UUID std::map<LLUUID, LLPointer<LLViewerObject> > mUUIDObjectMap; - std::vector<LLDebugBeacon> mDebugBeacons; + LLDynamicArray<LLDebugBeacon> mDebugBeacons; S32 mCurLazyUpdateIndex; static U32 sSimulatorMachineIndex; - static std::map<U64, U32> sIPAndPortToIndex; + static LLMap<U64, U32> sIPAndPortToIndex; static std::map<U64, LLUUID> sIndexAndLocalIDToUUID; @@ -263,16 +264,12 @@ inline LLViewerObject *LLViewerObjectList::getObject(const S32 index) inline void LLViewerObjectList::addToMap(LLViewerObject *objectp) { - mMapObjects.push_back(objectp); + mMapObjects.put(objectp); } inline void LLViewerObjectList::removeFromMap(LLViewerObject *objectp) { - std::vector<LLPointer<LLViewerObject> >::iterator iter = std::find(mMapObjects.begin(), mMapObjects.end(), objectp); - if (iter != mMapObjects.end()) - { - mMapObjects.erase(iter); - } + mMapObjects.removeObj(objectp); } |