00001 00033 #ifndef LL_LLFLOATERTELEHUB_H 00034 #define LL_LLFLOATERTELEHUB_H 00035 00036 #include "llfloater.h" 00037 00038 class LLMessageSystem; 00039 class LLObjectSelection; 00040 00041 const S32 MAX_SPAWNPOINTS_PER_TELEHUB = 16; 00042 00043 class LLFloaterTelehub : public LLFloater 00044 { 00045 public: 00046 // Opens the floater on screen. 00047 static void show(); 00048 00049 virtual void draw(); 00050 00051 static BOOL renderBeacons(); 00052 static void addBeacons(); 00053 00054 private: 00055 LLFloaterTelehub(); 00056 ~LLFloaterTelehub(); 00057 00058 void refresh(); 00059 void sendTelehubInfoRequest(); 00060 00061 static void onClickConnect(void* data); 00062 static void onClickDisconnect(void* data); 00063 static void onClickAddSpawnPoint(void* data); 00064 static void onClickRemoveSpawnPoint(void* data); 00065 00066 static void processTelehubInfo(LLMessageSystem* msg, void**); 00067 void unpackTelehubInfo(LLMessageSystem* msg); 00068 00069 private: 00070 LLUUID mTelehubObjectID; // null if no telehub 00071 LLString mTelehubObjectName; 00072 LLVector3 mTelehubPos; // region local, fallback if viewer can't see the object 00073 LLQuaternion mTelehubRot; 00074 00075 S32 mNumSpawn; 00076 LLVector3 mSpawnPointPos[MAX_SPAWNPOINTS_PER_TELEHUB]; 00077 00078 LLHandle<LLObjectSelection> mObjectSelection; 00079 00080 static LLFloaterTelehub* sInstance; 00081 }; 00082 00083 #endif