00001 00032 #include "llviewerprecompiledheaders.h" 00033 00034 #include "llregionposition.h" 00035 00036 #include "llagent.h" 00037 #include "llworld.h" 00038 #include "llviewerregion.h" 00039 00040 LLRegionPosition::LLRegionPosition() 00041 { 00042 mRegionp = NULL; 00043 } 00044 00045 LLRegionPosition::LLRegionPosition(LLViewerRegion *regionp, const LLVector3 &position) 00046 { 00047 mRegionp = regionp; 00048 mPositionRegion = position; 00049 } 00050 00051 LLRegionPosition::LLRegionPosition(const LLVector3d &global_position) 00052 { 00053 setPositionGlobal(global_position); 00054 } 00055 00056 LLViewerRegion *LLRegionPosition::getRegion() const 00057 { 00058 return mRegionp; 00059 } 00060 00061 const LLVector3 &LLRegionPosition::getPositionRegion() const 00062 { 00063 return mPositionRegion; 00064 } 00065 00066 const LLVector3 LLRegionPosition::getPositionAgent() const 00067 { 00068 return mRegionp->getPosAgentFromRegion( mPositionRegion ); 00069 } 00070 00071 LLVector3d LLRegionPosition::getPositionGlobal() const 00072 { 00073 if (mRegionp) 00074 { 00075 return mRegionp->getPosGlobalFromRegion(mPositionRegion); 00076 } 00077 else 00078 { 00079 LLVector3d pos_global; 00080 pos_global.setVec(mPositionRegion); 00081 return pos_global; 00082 } 00083 } 00084 00085 00086 void LLRegionPosition::setPositionGlobal(const LLVector3d& position_global ) 00087 { 00088 mRegionp = gWorldPointer->getRegionFromPosGlobal(position_global); 00089 if (mRegionp) 00090 { 00091 mPositionRegion = mRegionp->getPosRegionFromGlobal(position_global); 00092 } 00093 else 00094 { 00095 mRegionp = gAgent.getRegion(); 00096 llassert(mRegionp); 00097 mPositionRegion = mRegionp->getPosRegionFromGlobal(position_global); 00098 } 00099 }