From e2e37cced861b98de8c1a7c9c0d3a50d2d90e433 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 22 May 2024 21:25:21 +0200 Subject: Fix line endlings --- indra/newview/llviewerobjectlist.h | 596 ++++++++++++++++++------------------- 1 file changed, 298 insertions(+), 298 deletions(-) (limited to 'indra/newview/llviewerobjectlist.h') diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index f9f39b2879..f0f236d6ae 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -1,298 +1,298 @@ -/** - * @file llviewerobjectlist.h - * @brief Description of LLViewerObjectList class. - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLVIEWEROBJECTLIST_H -#define LL_LLVIEWEROBJECTLIST_H - -#include -#include - -// common includes -#include "llstring.h" -#include "lltrace.h" - -// project includes -#include "llviewerobject.h" -#include "lleventcoro.h" -#include "llcoros.h" - -class LLCamera; -class LLNetMap; -class LLDebugBeacon; -class LLVOCacheEntry; - -const U32 CLOSE_BIN_SIZE = 10; -const U32 NUM_BINS = 128; - -// GL name = position in object list + GL_NAME_INDEX_OFFSET so that -// we can have special numbers like zero. -const U32 GL_NAME_LAND = 0; -const U32 GL_NAME_PARCEL_WALL = 1; - -const U32 GL_NAME_INDEX_OFFSET = 10; - -class LLViewerObjectList -{ -public: - LLViewerObjectList(); - ~LLViewerObjectList(); - - void destroy(); - - // For internal use only. Does NOT take a local id, takes an index into - // an internal dynamic array. - inline LLViewerObject *getObject(const S32 index); - - inline LLViewerObject *findObject(const LLUUID &id); - LLViewerObject *createObjectViewer(const LLPCode pcode, LLViewerRegion *regionp, S32 flags = 0); // Create a viewer-side object - LLViewerObject *createObjectFromCache(const LLPCode pcode, LLViewerRegion *regionp, const LLUUID &uuid, const U32 local_id); - LLViewerObject *createObject(const LLPCode pcode, LLViewerRegion *regionp, - const LLUUID &uuid, const U32 local_id, const LLHost &sender); - - LLViewerObject *replaceObject(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); // TomY: hack to switch VO instances on the fly - - bool killObject(LLViewerObject *objectp); - void killObjects(LLViewerRegion *regionp); // Kill all objects owned by a particular region. - void killAllObjects(); - - void cleanDeadObjects(const bool use_timer = true); // Clean up the dead object list. - - // Simulator and viewer side object updates... - void processUpdateCore(LLViewerObject* objectp, void** data, U32 block, const EObjectUpdateType update_type, - LLDataPacker* dpp, bool justCreated, bool from_cache = false); - LLViewerObject* processObjectUpdateFromCache(LLVOCacheEntry* entry, LLViewerRegion* regionp); - void processObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type, bool compressed=false); - void processCompressedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); - void processCachedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); - void updateApparentAngles(LLAgent &agent); - void update(LLAgent &agent); - - void fetchObjectCosts(); - void fetchPhysicsFlags(); - - void updateObjectCost(LLViewerObject* object); - void updateObjectCost(const LLUUID& object_id, F32 object_cost, F32 link_cost, F32 physics_cost, F32 link_physics_cost); - void onObjectCostFetchFailure(const LLUUID& object_id); - - void updatePhysicsFlags(const LLViewerObject* object); - void onPhysicsFlagsFetchFailure(const LLUUID& object_id); - void updatePhysicsShapeType(const LLUUID& object_id, S32 type); - void updatePhysicsProperties(const LLUUID& object_id, - F32 density, - F32 friction, - F32 restitution, - F32 gravity_multiplier); - - void shiftObjects(const LLVector3 &offset); - void repartitionObjects(); - - bool hasMapObjectInRegion(LLViewerRegion* regionp) ; - void clearAllMapObjectsInRegion(LLViewerRegion* regionp) ; - void renderObjectsForMap(LLNetMap &netmap); - void renderObjectBounds(const LLVector3 ¢er); - - void addDebugBeacon(const LLVector3 &pos_agent, const std::string &string, - const LLColor4 &color=LLColor4(1.f, 0.f, 0.f, 0.5f), - const LLColor4 &text_color=LLColor4(1.f, 1.f, 1.f, 1.f), - S32 line_width = 1); - void renderObjectBeacons(); - void resetObjectBeacons(); - - void dirtyAllObjectInventory(); - - void removeFromActiveList(LLViewerObject* objectp); - void updateActive(LLViewerObject *objectp); - - void updateAvatarVisibility(); - - inline S32 getNumObjects() { return (S32) mObjects.size(); } - inline S32 getNumActiveObjects() { return (S32) mActiveObjects.size(); } - - void addToMap(LLViewerObject *objectp); - void removeFromMap(LLViewerObject *objectp); - - void clearDebugText(); - - //////////////////////////////////////////// - // - // Only accessed by markDead in LLViewerObject - void cleanupReferences(LLViewerObject *objectp); - - S32 findReferences(LLDrawable *drawablep) const; // Find references to drawable in all objects, and return value. - - S32 getOrphanParentCount() const { return (S32) mOrphanParents.size(); } - S32 getOrphanCount() const { return mNumOrphans; } - void orphanize(LLViewerObject *childp, U32 parent_id, U32 ip, U32 port); - void findOrphans(LLViewerObject* objectp, U32 ip, U32 port); - -public: - // Class for keeping track of orphaned objects - class OrphanInfo - { - public: - OrphanInfo(); - OrphanInfo(const U64 parent_info, const LLUUID child_info); - bool operator==(const OrphanInfo &rhs) const; - bool operator!=(const OrphanInfo &rhs) const; - U64 mParentInfo; - LLUUID mChildInfo; - }; - - - U32 mCurBin; // Current bin we're working on... - - // Statistics data (see also LLViewerStats) - S32 mNumNewObjects; - - // if we paused in the last frame - // used to discount stats from this frame - bool mWasPaused; - - static void getUUIDFromLocal(LLUUID &id, - const U32 local_id, - const U32 ip, - const U32 port); - static void setUUIDAndLocal(const LLUUID &id, - const U32 local_id, - const U32 ip, - const U32 port); // Requires knowledge of message system info! - - static bool removeFromLocalIDTable(const LLViewerObject* objectp); - // Used ONLY by the orphaned object code. - static U64 getIndex(const U32 local_id, const U32 ip, const U32 port); - - S32 mNumUnknownUpdates; - S32 mNumDeadObjectUpdates; - S32 mNumDeadObjects; -protected: - std::vector mOrphanParents; // LocalID/ip,port of orphaned objects - std::vector mOrphanChildren; // UUID's of orphaned objects - S32 mNumOrphans; - - typedef std::vector > vobj_list_t; - - vobj_list_t mObjects; - std::vector > mActiveObjects; - - vobj_list_t mMapObjects; - - uuid_set_t mDeadObjects; - - std::map > mUUIDObjectMap; - - //set of objects that need to update their cost - uuid_set_t mStaleObjectCost; - uuid_set_t mPendingObjectCost; - - //set of objects that need to update their physics flags - uuid_set_t mStalePhysicsFlags; - uuid_set_t mPendingPhysicsFlags; - - std::vector mDebugBeacons; - - S32 mCurLazyUpdateIndex; - - static U32 sSimulatorMachineIndex; - static std::map sIPAndPortToIndex; - - static std::map sIndexAndLocalIDToUUID; - - friend class LLViewerObject; - -private: - static void reportObjectCostFailure(LLSD &objectList); - void fetchObjectCostsCoro(std::string url); - - static void reportPhysicsFlagFailure(LLSD &obejectList); - void fetchPhisicsFlagsCoro(std::string url); - -}; - - -class LLDebugBeacon -{ -public: - ~LLDebugBeacon(); - - LLVector3 mPositionAgent; - std::string mString; - LLColor4 mColor; - LLColor4 mTextColor; - S32 mLineWidth; - LLPointer mHUDObject; -}; - - - -// Global object list -extern LLViewerObjectList gObjectList; - -// Inlines -/** - * Note: - * it will return NULL for offline avatar_id - */ -inline LLViewerObject *LLViewerObjectList::findObject(const LLUUID &id) -{ - std::map >::iterator iter = mUUIDObjectMap.find(id); - if(iter != mUUIDObjectMap.end()) - { - return iter->second; - } - else - { - return NULL; - } -} - -inline LLViewerObject *LLViewerObjectList::getObject(const S32 index) -{ - LLViewerObject *objectp; - objectp = mObjects[index]; - if (objectp->isDead()) - { - //LL_WARNS() << "Dead object " << objectp->mID << " in getObject" << LL_ENDL; - return NULL; - } - return objectp; -} - -inline void LLViewerObjectList::addToMap(LLViewerObject *objectp) -{ - mMapObjects.push_back(objectp); -} - -inline void LLViewerObjectList::removeFromMap(LLViewerObject *objectp) -{ - std::vector >::iterator iter = std::find(mMapObjects.begin(), mMapObjects.end(), objectp); - if (iter != mMapObjects.end()) - { - mMapObjects.erase(iter); - } -} - - -#endif // LL_VIEWER_OBJECT_LIST_H +/** + * @file llviewerobjectlist.h + * @brief Description of LLViewerObjectList class. + * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLVIEWEROBJECTLIST_H +#define LL_LLVIEWEROBJECTLIST_H + +#include +#include + +// common includes +#include "llstring.h" +#include "lltrace.h" + +// project includes +#include "llviewerobject.h" +#include "lleventcoro.h" +#include "llcoros.h" + +class LLCamera; +class LLNetMap; +class LLDebugBeacon; +class LLVOCacheEntry; + +const U32 CLOSE_BIN_SIZE = 10; +const U32 NUM_BINS = 128; + +// GL name = position in object list + GL_NAME_INDEX_OFFSET so that +// we can have special numbers like zero. +const U32 GL_NAME_LAND = 0; +const U32 GL_NAME_PARCEL_WALL = 1; + +const U32 GL_NAME_INDEX_OFFSET = 10; + +class LLViewerObjectList +{ +public: + LLViewerObjectList(); + ~LLViewerObjectList(); + + void destroy(); + + // For internal use only. Does NOT take a local id, takes an index into + // an internal dynamic array. + inline LLViewerObject *getObject(const S32 index); + + inline LLViewerObject *findObject(const LLUUID &id); + LLViewerObject *createObjectViewer(const LLPCode pcode, LLViewerRegion *regionp, S32 flags = 0); // Create a viewer-side object + LLViewerObject *createObjectFromCache(const LLPCode pcode, LLViewerRegion *regionp, const LLUUID &uuid, const U32 local_id); + LLViewerObject *createObject(const LLPCode pcode, LLViewerRegion *regionp, + const LLUUID &uuid, const U32 local_id, const LLHost &sender); + + LLViewerObject *replaceObject(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); // TomY: hack to switch VO instances on the fly + + bool killObject(LLViewerObject *objectp); + void killObjects(LLViewerRegion *regionp); // Kill all objects owned by a particular region. + void killAllObjects(); + + void cleanDeadObjects(const bool use_timer = true); // Clean up the dead object list. + + // Simulator and viewer side object updates... + void processUpdateCore(LLViewerObject* objectp, void** data, U32 block, const EObjectUpdateType update_type, + LLDataPacker* dpp, bool justCreated, bool from_cache = false); + LLViewerObject* processObjectUpdateFromCache(LLVOCacheEntry* entry, LLViewerRegion* regionp); + void processObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type, bool compressed=false); + void processCompressedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); + void processCachedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); + void updateApparentAngles(LLAgent &agent); + void update(LLAgent &agent); + + void fetchObjectCosts(); + void fetchPhysicsFlags(); + + void updateObjectCost(LLViewerObject* object); + void updateObjectCost(const LLUUID& object_id, F32 object_cost, F32 link_cost, F32 physics_cost, F32 link_physics_cost); + void onObjectCostFetchFailure(const LLUUID& object_id); + + void updatePhysicsFlags(const LLViewerObject* object); + void onPhysicsFlagsFetchFailure(const LLUUID& object_id); + void updatePhysicsShapeType(const LLUUID& object_id, S32 type); + void updatePhysicsProperties(const LLUUID& object_id, + F32 density, + F32 friction, + F32 restitution, + F32 gravity_multiplier); + + void shiftObjects(const LLVector3 &offset); + void repartitionObjects(); + + bool hasMapObjectInRegion(LLViewerRegion* regionp) ; + void clearAllMapObjectsInRegion(LLViewerRegion* regionp) ; + void renderObjectsForMap(LLNetMap &netmap); + void renderObjectBounds(const LLVector3 ¢er); + + void addDebugBeacon(const LLVector3 &pos_agent, const std::string &string, + const LLColor4 &color=LLColor4(1.f, 0.f, 0.f, 0.5f), + const LLColor4 &text_color=LLColor4(1.f, 1.f, 1.f, 1.f), + S32 line_width = 1); + void renderObjectBeacons(); + void resetObjectBeacons(); + + void dirtyAllObjectInventory(); + + void removeFromActiveList(LLViewerObject* objectp); + void updateActive(LLViewerObject *objectp); + + void updateAvatarVisibility(); + + inline S32 getNumObjects() { return (S32) mObjects.size(); } + inline S32 getNumActiveObjects() { return (S32) mActiveObjects.size(); } + + void addToMap(LLViewerObject *objectp); + void removeFromMap(LLViewerObject *objectp); + + void clearDebugText(); + + //////////////////////////////////////////// + // + // Only accessed by markDead in LLViewerObject + void cleanupReferences(LLViewerObject *objectp); + + S32 findReferences(LLDrawable *drawablep) const; // Find references to drawable in all objects, and return value. + + S32 getOrphanParentCount() const { return (S32) mOrphanParents.size(); } + S32 getOrphanCount() const { return mNumOrphans; } + void orphanize(LLViewerObject *childp, U32 parent_id, U32 ip, U32 port); + void findOrphans(LLViewerObject* objectp, U32 ip, U32 port); + +public: + // Class for keeping track of orphaned objects + class OrphanInfo + { + public: + OrphanInfo(); + OrphanInfo(const U64 parent_info, const LLUUID child_info); + bool operator==(const OrphanInfo &rhs) const; + bool operator!=(const OrphanInfo &rhs) const; + U64 mParentInfo; + LLUUID mChildInfo; + }; + + + U32 mCurBin; // Current bin we're working on... + + // Statistics data (see also LLViewerStats) + S32 mNumNewObjects; + + // if we paused in the last frame + // used to discount stats from this frame + bool mWasPaused; + + static void getUUIDFromLocal(LLUUID &id, + const U32 local_id, + const U32 ip, + const U32 port); + static void setUUIDAndLocal(const LLUUID &id, + const U32 local_id, + const U32 ip, + const U32 port); // Requires knowledge of message system info! + + static bool removeFromLocalIDTable(const LLViewerObject* objectp); + // Used ONLY by the orphaned object code. + static U64 getIndex(const U32 local_id, const U32 ip, const U32 port); + + S32 mNumUnknownUpdates; + S32 mNumDeadObjectUpdates; + S32 mNumDeadObjects; +protected: + std::vector mOrphanParents; // LocalID/ip,port of orphaned objects + std::vector mOrphanChildren; // UUID's of orphaned objects + S32 mNumOrphans; + + typedef std::vector > vobj_list_t; + + vobj_list_t mObjects; + std::vector > mActiveObjects; + + vobj_list_t mMapObjects; + + uuid_set_t mDeadObjects; + + std::map > mUUIDObjectMap; + + //set of objects that need to update their cost + uuid_set_t mStaleObjectCost; + uuid_set_t mPendingObjectCost; + + //set of objects that need to update their physics flags + uuid_set_t mStalePhysicsFlags; + uuid_set_t mPendingPhysicsFlags; + + std::vector mDebugBeacons; + + S32 mCurLazyUpdateIndex; + + static U32 sSimulatorMachineIndex; + static std::map sIPAndPortToIndex; + + static std::map sIndexAndLocalIDToUUID; + + friend class LLViewerObject; + +private: + static void reportObjectCostFailure(LLSD &objectList); + void fetchObjectCostsCoro(std::string url); + + static void reportPhysicsFlagFailure(LLSD &obejectList); + void fetchPhisicsFlagsCoro(std::string url); + +}; + + +class LLDebugBeacon +{ +public: + ~LLDebugBeacon(); + + LLVector3 mPositionAgent; + std::string mString; + LLColor4 mColor; + LLColor4 mTextColor; + S32 mLineWidth; + LLPointer mHUDObject; +}; + + + +// Global object list +extern LLViewerObjectList gObjectList; + +// Inlines +/** + * Note: + * it will return NULL for offline avatar_id + */ +inline LLViewerObject *LLViewerObjectList::findObject(const LLUUID &id) +{ + std::map >::iterator iter = mUUIDObjectMap.find(id); + if(iter != mUUIDObjectMap.end()) + { + return iter->second; + } + else + { + return NULL; + } +} + +inline LLViewerObject *LLViewerObjectList::getObject(const S32 index) +{ + LLViewerObject *objectp; + objectp = mObjects[index]; + if (objectp->isDead()) + { + //LL_WARNS() << "Dead object " << objectp->mID << " in getObject" << LL_ENDL; + return NULL; + } + return objectp; +} + +inline void LLViewerObjectList::addToMap(LLViewerObject *objectp) +{ + mMapObjects.push_back(objectp); +} + +inline void LLViewerObjectList::removeFromMap(LLViewerObject *objectp) +{ + std::vector >::iterator iter = std::find(mMapObjects.begin(), mMapObjects.end(), objectp); + if (iter != mMapObjects.end()) + { + mMapObjects.erase(iter); + } +} + + +#endif // LL_VIEWER_OBJECT_LIST_H -- cgit v1.2.3