summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerobjectlist.h
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-02-13 12:46:14 +0000
committerTofu Linden <tofu.linden@lindenlab.com>2010-02-13 12:46:14 +0000
commitf0062fa41ae8849235a59808e28998d224a88b52 (patch)
tree5f6a659fe68df042dd9b78641910745a1fd2fb04 /indra/newview/llviewerobjectlist.h
parent995fca4d364d8f9c10a99047e0e62f19fa0bbda5 (diff)
parentbcbd12f7b1fd091284ac782eff63d4a18887a8e3 (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.h31
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);
}