Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae38835959 | ||
|
|
a4c0cab6a0 | ||
|
|
dd1cb4921f | ||
|
|
9ac7a139af | ||
|
|
eeeaaa3535 | ||
|
|
08654cc859 | ||
|
|
3f1d05b839 | ||
|
|
7346931f7f | ||
|
|
132574f53c | ||
|
|
37c2bb0a6e | ||
|
|
9b33e592fa | ||
|
|
69a6968775 | ||
|
|
afec67e596 | ||
|
|
97c8218463 | ||
|
|
f73caef7a5 | ||
|
|
cb6dec62ec | ||
|
|
a2b2af6eb7 | ||
|
|
a5aedfb783 | ||
|
|
b4697bf732 | ||
|
|
b2ae9feda0 | ||
|
|
0de1e27470 | ||
|
|
e5f2d5f76e | ||
|
|
42f8875d69 | ||
|
|
0d1c4def2d | ||
|
|
0b20babd35 | ||
|
|
9b984d425d | ||
|
|
461f6f6ade | ||
|
|
701d8ba37b | ||
|
|
dcbcc7ea3c | ||
|
|
a0a51fb762 | ||
|
|
5058e3e87d | ||
|
|
c6e2559d3e | ||
|
|
c14d46074c | ||
|
|
5b73586b95 | ||
|
|
5573499b9d | ||
|
|
5575ff2b90 | ||
|
|
3d6b94d2ed | ||
|
|
312a58584e | ||
|
|
170d9c7983 | ||
|
|
9786bc47fb | ||
|
|
3045f93f62 | ||
|
|
56af88fb94 | ||
|
|
7376c833c7 | ||
|
|
0d893c5217 | ||
|
|
8a69b9e50d | ||
|
|
99893ee992 | ||
|
|
f7cf69ec95 | ||
|
|
27b2f14193 | ||
|
|
e36c0095e0 | ||
|
|
0b1a172a91 | ||
|
|
b5cc29ebbc | ||
|
|
88af3cabc3 | ||
|
|
f838c235cb | ||
|
|
0e5085e6bc | ||
|
|
380642044f | ||
|
|
22fee625e5 | ||
|
|
7d4c633514 | ||
|
|
c7d5ef31c0 | ||
|
|
fc70dd436f | ||
|
|
d9bff43dd8 | ||
|
|
50a85109a0 | ||
|
|
adeb340e93 | ||
|
|
539eb2e348 | ||
|
|
b3f414c4ad | ||
|
|
83c66c978b | ||
|
|
344909c0a3 | ||
|
|
ce1c554fa3 | ||
|
|
e032c53bc6 | ||
|
|
e08c05fbd6 |
@@ -399,7 +399,7 @@ void LLAudioEngine::idle(F32 max_decode_time)
|
||||
}
|
||||
|
||||
LLAudioChannel *channelp = sourcep->getChannel();
|
||||
bool is_stopped = channelp && channelp->isPlaying();
|
||||
bool is_stopped = !channelp || !channelp->isPlaying();
|
||||
if (is_stopped || (sourcep->isLoop() && channelp->mLoopedThisFrame))
|
||||
{
|
||||
// This sound isn't playing, so we just process move the queue
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
const S32 LL_VERSION_MAJOR = 1;
|
||||
const S32 LL_VERSION_MINOR = 8;
|
||||
const S32 LL_VERSION_PATCH = 2;
|
||||
const S32 LL_VERSION_PATCH = 3;
|
||||
const S32 LL_VERSION_BUILD = ${vBUILD};
|
||||
|
||||
const char * const LL_CHANNEL = "${VIEWER_CHANNEL}";
|
||||
|
||||
@@ -623,6 +623,9 @@ public:
|
||||
child->insert(data);
|
||||
}
|
||||
}
|
||||
// Singu note: now that we allow wider range in octree, discard them here
|
||||
// if they fall out of range
|
||||
#if 0
|
||||
else
|
||||
{
|
||||
//it's not in here, give it to the root
|
||||
@@ -641,6 +644,7 @@ public:
|
||||
node->insert(data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -1010,7 +1014,7 @@ public:
|
||||
}
|
||||
|
||||
LLVector4a MAX_MAG;
|
||||
MAX_MAG.splat(1024.f*1024.f);
|
||||
MAX_MAG.splat(1024.f * 1024.f);
|
||||
|
||||
const LLVector4a& v = data->getPositionGroup();
|
||||
|
||||
|
||||
@@ -218,7 +218,6 @@ public:
|
||||
virtual BOOL canSaveAs() const { return FALSE; }
|
||||
|
||||
virtual void saveAs() {}
|
||||
virtual void saveAsType(BOOL type=false) {}
|
||||
|
||||
void setSnapTarget(LLHandle<LLFloater> handle) { mSnappedTo = handle; }
|
||||
void clearSnapTarget() { mSnappedTo.markDead(); }
|
||||
|
||||
@@ -71,10 +71,10 @@ glh_linear.h
|
||||
#define GLH_EPSILON GLH_REAL(10e-6)
|
||||
#define GLH_PI GLH_REAL(3.1415926535897932384626433832795)
|
||||
|
||||
#define equivalent(a,b) (((a < b + GLH_EPSILON) && (a > b - GLH_EPSILON)) ? true : false)
|
||||
|
||||
namespace glh
|
||||
{
|
||||
inline bool equivalent(GLH_REAL a, GLH_REAL b) { return b - GLH_EPSILON < a && a < b + GLH_EPSILON; }
|
||||
|
||||
inline GLH_REAL to_degrees(GLH_REAL radians) { return radians*GLH_RAD_TO_DEG; }
|
||||
inline GLH_REAL to_radians(GLH_REAL degrees) { return degrees*GLH_DEG_TO_RAD; }
|
||||
|
||||
@@ -674,6 +674,19 @@
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>LiruGridInTitle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show grid name in the viewer window title (takes effect upon next login)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<boolean>0</boolean>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>LiruGroupNoticeTimes</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -762,6 +775,32 @@
|
||||
<key>Value</key>
|
||||
<integer>20000</integer>
|
||||
</map>
|
||||
<key>LiruNewMessageSound</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Sound ID to play when ding is on for an IM session and an IM comes in.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>67cc2844-00f3-2b3c-b991-6418d01e1bb7</string>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>LiruNewMessageSoundForSystemMessages</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Sound ID to play when ding is on for an IM session and a system message comes through, like when the correspondent starts typing or logs off. (Defaults to off)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string/>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>LiruNoTransactionClutter</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -807,6 +846,19 @@ Found in Advanced->Rendering->Info Displays</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>LogShowHistoryLines</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Lines of history to load from log file if LogShowHistory is true.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>U32</string>
|
||||
<key>Value</key>
|
||||
<integer>32</integer>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ContactsUseHorizontalButtons</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -951,6 +1003,17 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<boolean>0</boolean>
|
||||
</map>
|
||||
<key>NewIMsPerConversationReset</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When NewIMsPerConversation is on, this determines when the New IMs button becomes visible while the communicate floater is closed. True will wait until a new IM is received, false displays as long as a conversation is unread.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<boolean>1</boolean>
|
||||
</map>
|
||||
<key>ResetFocusOnSelfClick</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -962,6 +1025,17 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ResetViewTurnsAvatar</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When true, resetting view by hitting escape or using the menu entry will turn your avatar to the direction the camera was pointed</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<boolean>0</boolean>
|
||||
</map>
|
||||
<key>ShowDisplayNameChanges</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -5794,6 +5868,17 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>DoubleClickTeleportMap</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enable double-click-teleport for the map</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>DoubleClickTeleportMiniMap</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -17428,6 +17513,77 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<real>1280.0</real>
|
||||
</map>
|
||||
<key>ColladaExportFloaterRect</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Collada floater position</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Rect</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<integer>0</integer>
|
||||
<integer>0</integer>
|
||||
<integer>0</integer>
|
||||
<integer>0</integer>
|
||||
</array>
|
||||
</map>
|
||||
<key>DAEExportConsolidateMaterials</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Combine faces with same texture</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>DAEExportSkipTransparent</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Skip exporting faces with default transparent texture or full transparent</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>DAEExportTextures</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Export textures when exporting Collada</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>DAEExportTextureParams</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Apply texture params suchs as repeats to the exported UV map</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>DAEExportTexturesType</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Image file format to use when exporting Collada</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
||||
|
||||
@@ -204,6 +204,24 @@
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>MapAvatar</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Color for map dots of residents who don't qualify for any color else.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Color4</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>0.0</real>
|
||||
<real>1.0</real>
|
||||
<real>0.0</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ColorFriendChat</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -297,7 +297,7 @@ void LLPrefsAscentChat::refreshValues()
|
||||
mOneLineConfButt = gSavedSettings.getBOOL("UseConciseConferenceButtons");
|
||||
mOnlyComm = gSavedSettings.getBOOL("CommunicateSpecificShortcut");
|
||||
mItalicizeActions = gSavedSettings.getBOOL("LiruItalicizeActions");
|
||||
mLegacySpeakerNames = gSavedSettings.getBOOL("LiruILegacySpeakerNames");
|
||||
mLegacySpeakerNames = gSavedSettings.getBOOL("LiruLegacySpeakerNames");
|
||||
|
||||
//Autoresponse ------------------------------------------------------------------------
|
||||
mIMResponseAnyoneItemID = gSavedPerAccountSettings.getString("AutoresponseAnyoneItemID");
|
||||
@@ -535,7 +535,7 @@ void LLPrefsAscentChat::cancel()
|
||||
gSavedSettings.setBOOL("UseConciseConferenceButtons", mOneLineConfButt);
|
||||
gSavedSettings.setBOOL("CommunicateSpecificShortcut", mOnlyComm);
|
||||
gSavedSettings.setBOOL("LiruItalicizeActions", mItalicizeActions);
|
||||
gSavedSettings.setBOOL("LiruILegacySpeakerNames", mLegacySpeakerNames);
|
||||
gSavedSettings.setBOOL("LiruLegacySpeakerNames", mLegacySpeakerNames);
|
||||
|
||||
//Autoresponse ------------------------------------------------------------------------
|
||||
gSavedPerAccountSettings.setString("AutoresponseAnyoneItemID", mIMResponseAnyoneItemID);
|
||||
|
||||
@@ -187,6 +187,7 @@ void LLPrefsAscentVan::refreshValues()
|
||||
mEstateOwnerColor = gSavedSettings.getColor4("AscentEstateOwnerColor");
|
||||
mLindenColor = gSavedSettings.getColor4("AscentLindenColor");
|
||||
mMutedColor = gSavedSettings.getColor4("AscentMutedColor");
|
||||
mMapAvatarColor = gSavedSettings.getColor4("MapAvatar");
|
||||
mCustomColor = gSavedSettings.getColor4("MoyMiniMapCustomColor");
|
||||
mColorFriendChat = gSavedSettings.getBOOL("ColorFriendChat");
|
||||
mColorEOChat = gSavedSettings.getBOOL("ColorEstateOwnerChat");
|
||||
@@ -258,6 +259,7 @@ void LLPrefsAscentVan::cancel()
|
||||
gSavedSettings.setColor4("AscentEstateOwnerColor", mEstateOwnerColor);
|
||||
gSavedSettings.setColor4("AscentLindenColor", mLindenColor);
|
||||
gSavedSettings.setColor4("AscentMutedColor", mMutedColor);
|
||||
gSavedSettings.setColor4("MapAvatar", mMapAvatarColor);
|
||||
gSavedSettings.setColor4("MoyMiniMapCustomColor", mCustomColor);
|
||||
gSavedSettings.setBOOL("ColorFriendChat", mColorFriendChat);
|
||||
gSavedSettings.setBOOL("ColorEstateOwnerChat", mColorEOChat);
|
||||
|
||||
@@ -84,6 +84,7 @@ protected:
|
||||
LLColor4 mEstateOwnerColor;
|
||||
LLColor4 mLindenColor;
|
||||
LLColor4 mMutedColor;
|
||||
LLColor4 mMapAvatarColor;
|
||||
LLColor4 mCustomColor;
|
||||
bool mColorFriendChat;
|
||||
bool mColorEOChat;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,48 +1,110 @@
|
||||
/**
|
||||
* @file daeexport.h
|
||||
* @brief A system which allows saving in-world objects to Collada .DAE files for offline texturizing/shading.
|
||||
* @authors Latif Khalifa
|
||||
*
|
||||
* $LicenseInfo:firstyear=2013&license=LGPLV2.1$
|
||||
* Copyright (C) 2013 Latif Khalifa
|
||||
*
|
||||
* 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; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
* @file daeexport.h
|
||||
* @brief A system which allows saving in-world objects to Collada .DAE files for offline texturizing/shading.
|
||||
* @authors Latif Khalifa
|
||||
*
|
||||
* $LicenseInfo:firstyear=2013&license=LGPLV2.1$
|
||||
* Copyright (C) 2013 Latif Khalifa
|
||||
*
|
||||
* 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; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef DAEEXPORT_H_
|
||||
#define DAEEXPORT_H_
|
||||
|
||||
#include <dom/domElements.h>
|
||||
#include "lltextureentry.h"
|
||||
|
||||
class LLViewerObject;
|
||||
|
||||
class DAESaver
|
||||
{
|
||||
typedef std::vector<std::pair<LLViewerObject*,std::string> > obj_info_t;
|
||||
|
||||
public:
|
||||
class MaterialInfo
|
||||
{
|
||||
public:
|
||||
LLUUID textureID;
|
||||
LLColor4 color;
|
||||
std::string name;
|
||||
|
||||
bool matches(LLTextureEntry* te)
|
||||
{
|
||||
return (textureID == te->getID()) && (color == te->getColor());
|
||||
}
|
||||
|
||||
bool operator== (const MaterialInfo& rhs)
|
||||
{
|
||||
return (textureID == rhs.textureID) && (color == rhs.color) && (name == rhs.name);
|
||||
}
|
||||
|
||||
bool operator!= (const MaterialInfo& rhs)
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
MaterialInfo()
|
||||
{
|
||||
}
|
||||
|
||||
MaterialInfo(const MaterialInfo& rhs)
|
||||
{
|
||||
textureID = rhs.textureID;
|
||||
color = rhs.color;
|
||||
name = rhs.name;
|
||||
}
|
||||
|
||||
MaterialInfo& operator= (const MaterialInfo& rhs)
|
||||
{
|
||||
textureID = rhs.textureID;
|
||||
color = rhs.color;
|
||||
name = rhs.name;
|
||||
return *this;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
typedef std::vector<std::pair<LLViewerObject*,std::string> > obj_info_t;
|
||||
typedef std::vector<LLUUID> id_list_t;
|
||||
typedef std::vector<std::string> string_list_t;
|
||||
typedef std::vector<S32> int_list_t;
|
||||
typedef std::vector<MaterialInfo> material_list_t;
|
||||
|
||||
material_list_t mAllMaterials;
|
||||
id_list_t mTextures;
|
||||
string_list_t mTextureNames;
|
||||
obj_info_t mObjects;
|
||||
LLVector3 mOffset;
|
||||
std::string mImageFormat;
|
||||
S32 mTotalNumMaterials;
|
||||
|
||||
DAESaver();
|
||||
void Add(const LLViewerObject* prim, const std::string name);
|
||||
void updateTextureInfo();
|
||||
void add(const LLViewerObject* prim, const std::string name);
|
||||
bool saveDAE(std::string filename);
|
||||
|
||||
private:
|
||||
void transformTexCoord(S32 num_vert, LLVector2* coord, LLVector3* positions, LLVector3* normals, LLTextureEntry* te, LLVector3 scale);
|
||||
void addSource(daeElement* mesh, const char* src_id, std::string params, const std::vector<F32> &vals);
|
||||
void addPolygons(daeElement* mesh, const char* geomID, const char* materialID, LLViewerObject* obj, int face_to_include);
|
||||
void addPolygons(daeElement* mesh, const char* geomID, const char* materialID, LLViewerObject* obj, int_list_t* faces_to_include);
|
||||
bool skipFace(LLTextureEntry *te);
|
||||
MaterialInfo getMaterial(LLTextureEntry* te);
|
||||
void getMaterials(LLViewerObject* obj, material_list_t* ret);
|
||||
void getFacesWithMaterial(LLViewerObject* obj, MaterialInfo& mat, int_list_t* ret);
|
||||
void generateEffects(daeElement *effects);
|
||||
void generateImagesSection(daeElement* images);
|
||||
};
|
||||
|
||||
#endif // DAEEXPORT_H_
|
||||
|
||||
@@ -33,7 +33,7 @@ void HippoLimits::setOpenSimLimits()
|
||||
{
|
||||
mMaxAgentGroups = gHippoGridManager->getConnectedGrid()->getMaxAgentGroups();
|
||||
if (mMaxAgentGroups < 0) mMaxAgentGroups = 50;
|
||||
mMaxPrimScale = 256.0f;
|
||||
mMaxPrimScale = 8192.0f;
|
||||
mMaxHeight = 10000.0f;
|
||||
if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) {
|
||||
llinfos << "Using rendering compatible OpenSim limits." << llendl;
|
||||
|
||||
@@ -57,8 +57,17 @@ void LFFloaterInvPanel::show(const LLUUID& cat_id, LLInventoryModel* model, cons
|
||||
// static
|
||||
void LFFloaterInvPanel::closeAll()
|
||||
{
|
||||
for (instance_iter i = endInstances(); i >= beginInstances(); --i)
|
||||
i->close();
|
||||
// We must make a copy first, because LLInstanceTracker doesn't allow destruction while having iterators to it.
|
||||
std::vector<LFFloaterInvPanel*> cache;
|
||||
for (instance_iter i = beginInstances(); i != endInstances(); ++i)
|
||||
{
|
||||
cache.push_back(&*i);
|
||||
}
|
||||
// Now close all panels, without using instance_iter iterators.
|
||||
for (std::vector<LFFloaterInvPanel*>::iterator i = cache.begin(); i != cache.end(); ++i)
|
||||
{
|
||||
(*i)->close();
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
||||
@@ -79,8 +79,6 @@ LLDropTarget::LLDropTarget(const LLDropTarget::Params& p)
|
||||
|
||||
LLDropTarget::~LLDropTarget()
|
||||
{
|
||||
delete mText;
|
||||
delete mBorder;
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
@@ -187,17 +187,22 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
llformat("%.1f, %.1f, %.1f ", pos.mdV[VX], pos.mdV[VY], pos.mdV[VZ]));
|
||||
support.append(pos_text);
|
||||
|
||||
std::string region_text = llformat("in %s located at ",
|
||||
gAgent.getRegion()->getName().c_str());
|
||||
support.append(region_text);
|
||||
if (const LLViewerRegion* region = gAgent.getRegion())
|
||||
{
|
||||
const LLVector3d& coords(region->getOriginGlobal());
|
||||
std::string region_text = llformat("in %s (%.0f, %.0f) located at ", region->getName().c_str(), coords.mdV[VX]/REGION_WIDTH_METERS, coords.mdV[VY]/REGION_WIDTH_METERS);
|
||||
support.append(region_text);
|
||||
|
||||
std::string buffer;
|
||||
buffer = region->getHost().getHostName();
|
||||
support.append(buffer);
|
||||
support.append(" (");
|
||||
buffer = region->getHost().getString();
|
||||
support.append(buffer);
|
||||
support.append(")");
|
||||
}
|
||||
support.append("\n");
|
||||
|
||||
std::string buffer;
|
||||
buffer = gAgent.getRegion()->getHost().getHostName();
|
||||
support.append(buffer);
|
||||
support.append(" (");
|
||||
buffer = gAgent.getRegion()->getHost().getString();
|
||||
support.append(buffer);
|
||||
support.append(")\n");
|
||||
support.append(gLastVersionChannel);
|
||||
support.append("\n");
|
||||
|
||||
|
||||
@@ -33,50 +33,31 @@
|
||||
|
||||
#include "llimpanel.h"
|
||||
|
||||
#include "indra_constants.h"
|
||||
#include "llfocusmgr.h"
|
||||
#include "llfontgl.h"
|
||||
#include "llrect.h"
|
||||
#include "llerror.h"
|
||||
#include "llstring.h"
|
||||
#include "message.h"
|
||||
#include "lltextbox.h"
|
||||
#include "llnotificationsutil.h"
|
||||
|
||||
#include "ascentkeyword.h"
|
||||
#include "llagent.h"
|
||||
#include "llavataractions.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcallingcard.h"
|
||||
#include "llchat.h"
|
||||
#include "llconsole.h"
|
||||
#include "llgroupactions.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llfloaterchat.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llgroupactions.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "llimview.h"
|
||||
#include "llinventory.h"
|
||||
#include "llinventoryfunctions.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llkeyboard.h"
|
||||
#include "lllineeditor.h"
|
||||
#include "llnotify.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llparticipantlist.h"
|
||||
#include "llresmgr.h"
|
||||
#include "llspeakers.h"
|
||||
#include "llstylemap.h"
|
||||
#include "lltrans.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "llviewertexteditor.h"
|
||||
#include "llviewermessage.h"
|
||||
#include "llviewerstats.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewertexteditor.h"
|
||||
#include "llviewerstats.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoicechannel.h"
|
||||
#include "lllogchat.h"
|
||||
#include "llweb.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llstylemap.h"
|
||||
#include "ascentkeyword.h"
|
||||
|
||||
#include "boost/algorithm/string.hpp"
|
||||
|
||||
@@ -549,6 +530,7 @@ BOOL LLFloaterIMPanel::postBuild()
|
||||
|
||||
if (checkRequirements())
|
||||
{
|
||||
mDing = false;
|
||||
mRPMode = false;
|
||||
|
||||
mInputEditor = getChild<LLLineEditor>("chat_editor");
|
||||
@@ -561,16 +543,20 @@ BOOL LLFloaterIMPanel::postBuild()
|
||||
mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
|
||||
mInputEditor->setPassDelete( TRUE );
|
||||
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("instant_message_flyout"))
|
||||
if (LLComboBox* flyout = findChild<LLComboBox>("instant_message_flyout"))
|
||||
{
|
||||
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, _2));
|
||||
flyout->setCommitCallback(boost::bind(&LLFloaterIMPanel::onFlyoutCommit, this, flyout, _2));
|
||||
flyout->add(getString("ding off"), 6);
|
||||
flyout->add(getString("rp mode off"), 7);
|
||||
}
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("tp_btn"))
|
||||
ctrl->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::offerTeleport), mOtherParticipantUUID));
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("pay_btn"))
|
||||
ctrl->setCommitCallback(boost::bind(LLAvatarActions::pay, mOtherParticipantUUID));
|
||||
if (LLButton* btn = findChild<LLButton>("group_info_btn"))
|
||||
btn->setCommitCallback(boost::bind(LLGroupActions::show, mSessionUUID));
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("history_btn"))
|
||||
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onClickHistory, this));
|
||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("rp_mode"))
|
||||
ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onRPMode, this, _2));
|
||||
|
||||
getChild<LLButton>("start_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::startCall, gIMMgr, mSessionUUID, LLVoiceChannel::OUTGOING_CALL));
|
||||
getChild<LLButton>("end_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::endCall, gIMMgr, mSessionUUID));
|
||||
@@ -797,6 +783,13 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, LLColor4 incol
|
||||
incolor = mKeywordsColor;
|
||||
}
|
||||
}
|
||||
|
||||
if (mDing && (!hasFocus() || !gFocusMgr.getAppHasFocus()))
|
||||
{
|
||||
static const LLCachedControl<std::string> ding("LiruNewMessageSound");
|
||||
static const LLCachedControl<std::string> dong("LiruNewMessageSoundForSystemMessages");
|
||||
LLUI::sAudioCallback(LLUUID(source.notNull() ? ding : dong));
|
||||
}
|
||||
}
|
||||
|
||||
const LLColor4& color = incolor;
|
||||
@@ -876,13 +869,13 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, LLColor4 incol
|
||||
// [/Ansariel: Display name support]
|
||||
}
|
||||
|
||||
if (!isInVisibleChain() || (!hasFocus() && getParent() == gFloaterView))
|
||||
{
|
||||
mNumUnreadMessages++;
|
||||
}
|
||||
|
||||
if (source.notNull())
|
||||
{
|
||||
if (!isInVisibleChain() || (!hasFocus() && getParent() == gFloaterView))
|
||||
{
|
||||
mNumUnreadMessages++;
|
||||
}
|
||||
|
||||
mSpeakers->speakerChatted(source);
|
||||
mSpeakers->setSpeakerTyping(source, FALSE);
|
||||
}
|
||||
@@ -1053,13 +1046,7 @@ void LLFloaterIMPanel::onTabClick(void* userdata)
|
||||
self->setInputFocus(TRUE);
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterIMPanel::onRPMode(const LLSD& value)
|
||||
{
|
||||
mRPMode = value.asBoolean();
|
||||
}
|
||||
|
||||
void LLFloaterIMPanel::onFlyoutCommit(const LLSD& value)
|
||||
void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
|
||||
{
|
||||
if (value.isUndefined())
|
||||
{
|
||||
@@ -1073,6 +1060,30 @@ void LLFloaterIMPanel::onFlyoutCommit(const LLSD& value)
|
||||
else if (option == 3) LLAvatarActions::teleportRequest(mOtherParticipantUUID);
|
||||
else if (option == 4) LLAvatarActions::pay(mOtherParticipantUUID);
|
||||
else if (option == 5) LLAvatarActions::inviteToGroup(mOtherParticipantUUID);
|
||||
else if (option >= 6) // Options that change labels need to stay in order at the end
|
||||
{
|
||||
std::string ding_label(mDing ? getString("ding on") : getString("ding off"));
|
||||
std::string rp_label(mRPMode ? getString("rp mode on") : getString("rp mode off"));
|
||||
// First remove them all
|
||||
flyout->remove(ding_label);
|
||||
flyout->remove(rp_label);
|
||||
|
||||
// Toggle as requested, adjust the strings
|
||||
if (option == 6)
|
||||
{
|
||||
mDing = !mDing;
|
||||
ding_label = mDing ? getString("ding on") : getString("ding off");
|
||||
}
|
||||
else if (option == 7)
|
||||
{
|
||||
mRPMode = !mRPMode;
|
||||
rp_label = mRPMode ? getString("rp mode on") : getString("rp mode off");
|
||||
}
|
||||
|
||||
// Last add them back
|
||||
flyout->add(ding_label, 6);
|
||||
flyout->add(rp_label, 7);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterIMPanel::onClickHistory()
|
||||
|
||||
@@ -32,22 +32,19 @@
|
||||
#ifndef LL_IMPANEL_H
|
||||
#define LL_IMPANEL_H
|
||||
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloater.h"
|
||||
#include "lllogchat.h"
|
||||
#include "lluuid.h"
|
||||
#include "lldarray.h"
|
||||
#include "llinstantmessage.h"
|
||||
#include "llvoiceclient.h"
|
||||
#include "llstyle.h"
|
||||
|
||||
class LLLineEditor;
|
||||
class LLViewerTextEditor;
|
||||
class LLInventoryItem;
|
||||
class LLInventoryCategory;
|
||||
class LLIMSpeakerMgr;
|
||||
class LLParticipantList;
|
||||
class LLAvatarName;
|
||||
class LLButton;
|
||||
class LLIMSpeakerMgr;
|
||||
class LLIMInfo;
|
||||
class LLInventoryCategory;
|
||||
class LLInventoryItem;
|
||||
class LLLineEditor;
|
||||
class LLParticipantList;
|
||||
class LLViewerTextEditor;
|
||||
class LLVoiceChannel;
|
||||
|
||||
class LLFloaterIMPanel : public LLFloater
|
||||
@@ -95,7 +92,6 @@ public:
|
||||
void selectAll();
|
||||
void selectNone();
|
||||
void setVisible(BOOL b);
|
||||
BOOL mRPMode;
|
||||
|
||||
S32 getNumUnreadMessages() { return mNumUnreadMessages; }
|
||||
|
||||
@@ -114,8 +110,7 @@ public:
|
||||
static void onTabClick( void* userdata );
|
||||
|
||||
void onClickHistory();
|
||||
void onRPMode(const LLSD& value);
|
||||
void onFlyoutCommit(const LLSD& value);
|
||||
void onFlyoutCommit(class LLComboBox* flyout, const LLSD& value);
|
||||
static void onClickStartCall( void* userdata );
|
||||
static void onClickEndCall( void* userdata );
|
||||
void onClickToggleActiveSpeakers(const LLSD& value);
|
||||
@@ -240,6 +235,9 @@ private:
|
||||
BOOL mProfileButtonEnabled;
|
||||
BOOL mCallBackEnabled;
|
||||
|
||||
bool mDing; // Whether or not to play a ding on new messages
|
||||
bool mRPMode;
|
||||
|
||||
LLIMSpeakerMgr* mSpeakers;
|
||||
LLParticipantList* mSpeakerPanel;
|
||||
|
||||
|
||||
@@ -34,35 +34,25 @@
|
||||
|
||||
#include "llimview.h"
|
||||
|
||||
#include "llfontgl.h"
|
||||
#include "llrect.h"
|
||||
#include "llbutton.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "llhttpnode.h"
|
||||
#include "llnotifications.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llsdutil_math.h"
|
||||
#include "llstring.h"
|
||||
#include "lltrans.h"
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llavataractions.h"
|
||||
#include "llcallingcard.h"
|
||||
#include "llchat.h"
|
||||
#include "llresmgr.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llfloaterchat.h"
|
||||
#include "llfloaterchatterbox.h"
|
||||
#include "llhttpnode.h"
|
||||
#include "llimpanel.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llspeakers.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llviewermenu.h"
|
||||
#include "llviewermessage.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llspeakers.h"
|
||||
#include "llvoavatar.h" // For mIdleTimer reset
|
||||
#include "llnotify.h"
|
||||
#include "llviewerregion.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
@@ -80,6 +70,7 @@ LLIMMgr* gIMMgr = NULL;
|
||||
//
|
||||
// Helper Functions
|
||||
//
|
||||
std::string formatted_time(const time_t& the_time);
|
||||
LLVOAvatar* find_avatar_from_object(const LLUUID& id);
|
||||
|
||||
LLColor4 agent_chat_color(const LLUUID& id, const std::string& name, bool local_chat)
|
||||
|
||||
@@ -3440,6 +3440,7 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags)
|
||||
|
||||
mItems.push_back(std::string("Replace Outfit"));
|
||||
}
|
||||
mItems.push_back(std::string("Replace Remove Separator"));
|
||||
mItems.push_back(std::string("Remove From Outfit"));
|
||||
if (!LLAppearanceMgr::getCanRemoveFromCOF(mUUID))
|
||||
{
|
||||
|
||||
@@ -36,9 +36,7 @@
|
||||
#include "lllogchat.h"
|
||||
#include "llappviewer.h"
|
||||
#include "llfloaterchat.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
const S32 LOG_RECALL_SIZE = 2048;
|
||||
|
||||
//static
|
||||
std::string LLLogChat::makeLogFileName(std::string filename)
|
||||
@@ -94,7 +92,7 @@ std::string LLLogChat::timestamp(bool withdate)
|
||||
std::string text;
|
||||
if (withdate)
|
||||
if (withseconds)
|
||||
text = llformat("[%d-%02d-%02d %02d:%02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min, timep->tm_sec);
|
||||
text = llformat("[%d/%02d/%02d %02d:%02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min, timep->tm_sec);
|
||||
else
|
||||
text = llformat("[%d/%02d/%02d %02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min);
|
||||
else
|
||||
@@ -129,55 +127,79 @@ void LLLogChat::saveHistory(std::string const& filename, std::string line)
|
||||
}
|
||||
}
|
||||
|
||||
void LLLogChat::loadHistory(std::string const& filename , void (*callback)(ELogLineType,std::string,void*), void* userdata)
|
||||
static long const LOG_RECALL_BUFSIZ = 2048;
|
||||
|
||||
void LLLogChat::loadHistory(std::string const& filename , void (*callback)(ELogLineType, std::string, void*), void* userdata)
|
||||
{
|
||||
if(!filename.size())
|
||||
bool filename_empty = filename.empty();
|
||||
if (filename_empty)
|
||||
{
|
||||
llwarns << "Filename is Empty!" << llendl;
|
||||
return ;
|
||||
llwarns << "filename is empty!" << llendl;
|
||||
}
|
||||
|
||||
LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "r"); /*Flawfinder: ignore*/
|
||||
if (!fptr)
|
||||
else while(1) // So we can use break.
|
||||
{
|
||||
//LLUIString message = LLFloaterChat::getInstance()->getString("IM_logging_string");
|
||||
//callback(LOG_EMPTY,"IM_logging_string",userdata);
|
||||
callback(LOG_EMPTY,LLStringUtil::null,userdata);
|
||||
return; //No previous conversation with this name.
|
||||
}
|
||||
else
|
||||
{
|
||||
char buffer[LOG_RECALL_SIZE]; /*Flawfinder: ignore*/
|
||||
char *bptr;
|
||||
S32 len;
|
||||
bool firstline=TRUE;
|
||||
// The number of lines to return.
|
||||
static const LLCachedControl<U32> lines("LogShowHistoryLines", 32);
|
||||
if (lines == 0) break;
|
||||
|
||||
if ( fseek(fptr, (LOG_RECALL_SIZE - 1) * -1 , SEEK_END) )
|
||||
{ //File is smaller than recall size. Get it all.
|
||||
firstline = FALSE;
|
||||
if ( fseek(fptr, 0, SEEK_SET) )
|
||||
{
|
||||
fclose(fptr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Open the log file.
|
||||
LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "rb");
|
||||
if (!fptr) break;
|
||||
|
||||
while ( fgets(buffer, LOG_RECALL_SIZE, fptr) && !feof(fptr) )
|
||||
// Set pos to point to the last character of the file, if any.
|
||||
if (fseek(fptr, 0, SEEK_END)) break;
|
||||
long pos = ftell(fptr) - 1;
|
||||
if (pos < 0) break;
|
||||
|
||||
char buffer[LOG_RECALL_BUFSIZ];
|
||||
bool error = false;
|
||||
int nlines = 0;
|
||||
while (pos > 0 && nlines < lines)
|
||||
{
|
||||
len = strlen(buffer) - 1; /*Flawfinder: ignore*/
|
||||
for ( bptr = (buffer + len); (*bptr == '\n' || *bptr == '\r') && bptr>buffer; bptr--) *bptr='\0';
|
||||
|
||||
if (!firstline)
|
||||
// Read the LOG_RECALL_BUFSIZ characters before pos.
|
||||
size_t size = llmin(LOG_RECALL_BUFSIZ, pos);
|
||||
pos -= size;
|
||||
fseek(fptr, pos, SEEK_SET);
|
||||
size_t len = fread(buffer, 1, size, fptr);
|
||||
error = len != size;
|
||||
if (error) break;
|
||||
// Count the number of newlines in it and set pos to the beginning of the first line to return when we found enough.
|
||||
for (char const* p = buffer + size - 1; p >= buffer; --p)
|
||||
{
|
||||
callback(LOG_LINE,std::string(buffer),userdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
firstline = FALSE;
|
||||
if (*p == '\n')
|
||||
{
|
||||
if (++nlines == lines)
|
||||
{
|
||||
pos += p - buffer + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(LOG_END,LLStringUtil::null,userdata);
|
||||
|
||||
if (error)
|
||||
{
|
||||
fclose(fptr);
|
||||
break;
|
||||
}
|
||||
|
||||
// Set the file pointer at the first line to return.
|
||||
fseek(fptr, pos, SEEK_SET);
|
||||
|
||||
// Read lines from the file one by one until we reach the end of the file.
|
||||
while (fgets(buffer, LOG_RECALL_BUFSIZ, fptr))
|
||||
{
|
||||
size_t len = strlen(buffer);
|
||||
if (buffer[len - 1] == '\n') // In case the log file doesn't end on a new-line (is that even possible?)
|
||||
{
|
||||
buffer[len - 1] = '\0';
|
||||
}
|
||||
callback(LOG_LINE, buffer, userdata);
|
||||
}
|
||||
|
||||
fclose(fptr);
|
||||
callback(LOG_END, LLStringUtil::null, userdata);
|
||||
return;
|
||||
}
|
||||
callback(LOG_EMPTY, LLStringUtil::null, userdata);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,9 +62,9 @@ LLMakeOutfitDialog::LLMakeOutfitDialog(bool modal) : LLModalDialog(LLStringUtil:
|
||||
else
|
||||
{
|
||||
bool enabled = gAgentWearables.getWearableCount((LLWearableType::EType)i); // TODO: MULTI-WEARABLE
|
||||
bool selected = enabled && (LLWearableType::WT_SHIRT <= i); // only select clothing by default
|
||||
//bool selected = enabled && (LLWearableType::WT_SHIRT <= i); // only select clothing by default
|
||||
childSetEnabled(name, enabled);
|
||||
childSetValue(name, selected);
|
||||
childSetValue(name, enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@ LLMakeOutfitDialog::LLMakeOutfitDialog(bool modal) : LLModalDialog(LLStringUtil:
|
||||
std::string name = std::string("checkbox_") + attachment->getName();
|
||||
mCheckBoxList.push_back(std::make_pair(name, attachment_pt));
|
||||
childSetEnabled(name, object_attached);
|
||||
childSetValue(name, object_attached);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -375,7 +375,7 @@ void LLNetMap::draw()
|
||||
// Draw avatars
|
||||
// LLColor4 mapcolor = gAvatarMapColor;
|
||||
|
||||
static const LLCachedControl<LLColor4> standard_color(gColors,"MapAvatar",LLColor4(0.f,1.f,0.f,1.f));
|
||||
static const LLCachedControl<LLColor4> standard_color("MapAvatar",LLColor4(0.f,1.f,0.f,1.f));
|
||||
static const LLCachedControl<LLColor4> friend_color_stored("AscentFriendColor",LLColor4(1.f,1.f,0.f,1.f));
|
||||
static const LLCachedControl<LLColor4> em_color("AscentEstateOwnerColor",LLColor4(1.f,0.6f,1.f,1.f));
|
||||
static const LLCachedControl<LLColor4> linden_color("AscentLindenColor",LLColor4(0.f,0.f,1.f,1.f));
|
||||
|
||||
@@ -39,21 +39,13 @@
|
||||
|
||||
#include "aoremotectrl.h"
|
||||
#include "llaudioengine.h"
|
||||
#include "importtracker.h"
|
||||
#include "llrender.h"
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llbutton.h"
|
||||
#include "llchatbar.h"
|
||||
#include "llfocusmgr.h"
|
||||
#include "llimpanel.h"
|
||||
#include "llimview.h"
|
||||
#include "llfloaterchatterbox.h"
|
||||
#include "llmediaremotectrl.h"
|
||||
#include "llpanelaudiovolume.h"
|
||||
#include "llparcel.h"
|
||||
#include "lltextbox.h"
|
||||
#include "llui.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "llviewerjoystick.h"
|
||||
#include "llviewermedia.h"
|
||||
@@ -62,20 +54,13 @@
|
||||
#include "llviewerparcelmedia.h"
|
||||
#include "llviewerparcelmgr.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoiceclient.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llvoiceremotectrl.h"
|
||||
#include "llmediactrl.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "wlfPanel_AdvSettings.h"
|
||||
#include "llpanelnearbymedia.h"
|
||||
|
||||
|
||||
|
||||
#include "llcontrol.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
@@ -309,22 +294,19 @@ void LLOverlayBar::refresh()
|
||||
{
|
||||
bool buttons_changed = FALSE;
|
||||
|
||||
if (LLButton* button = updateButtonVisiblity(mNewIM,gIMMgr->getIMReceived()))
|
||||
int unread_count(gIMMgr->getIMUnreadCount());
|
||||
static const LLCachedControl<bool> per_conversation("NewIMsPerConversation");
|
||||
static const LLCachedControl<bool> reset_count("NewIMsPerConversationReset");
|
||||
if (per_conversation && (!reset_count || unread_count) && !LLFloaterChatterBox::instanceVisible())
|
||||
{
|
||||
unread_count = 0;
|
||||
for(std::set<LLHandle<LLFloater> >::const_iterator it = gIMMgr->getIMFloaterHandles().begin(); it != gIMMgr->getIMFloaterHandles().end(); ++it)
|
||||
if (LLFloaterIMPanel* im_floater = static_cast<LLFloaterIMPanel*>(it->get()))
|
||||
if (im_floater->getParent() != gFloaterView && im_floater->getNumUnreadMessages()) // Only count docked IMs
|
||||
++unread_count;
|
||||
}
|
||||
if (LLButton* button = updateButtonVisiblity(mNewIM, unread_count))
|
||||
{
|
||||
int unread_count(0);
|
||||
static const LLCachedControl<bool> per_conversation("NewIMsPerConversation");
|
||||
if (per_conversation)
|
||||
{
|
||||
for(std::set<LLHandle<LLFloater> >::const_iterator it = gIMMgr->getIMFloaterHandles().begin(); it != gIMMgr->getIMFloaterHandles().end(); ++it)
|
||||
if (LLFloaterIMPanel* im_floater = static_cast<LLFloaterIMPanel*>(it->get()))
|
||||
if (im_floater->getParent() != gFloaterView && im_floater->getNumUnreadMessages()) // Only count docked IMs
|
||||
++unread_count;
|
||||
}
|
||||
else
|
||||
{
|
||||
unread_count = gIMMgr->getIMUnreadCount();
|
||||
}
|
||||
|
||||
if (unread_count > 0)
|
||||
{
|
||||
if (unread_count > 1)
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llavataractions.h"
|
||||
#include "llavatarpropertiesprocessor.h"
|
||||
#include "llcallingcard.h"
|
||||
#include "lldroptarget.h"
|
||||
#include "llfloatergroupinfo.h"
|
||||
@@ -183,56 +184,11 @@ void LLPanelAvatarSecondLife::processProperties(void* data, EAvatarProcessorType
|
||||
if (pAvatarData && (mAvatarID == pAvatarData->avatar_id) && (pAvatarData->avatar_id != LLUUID::null))
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
|
||||
U8 caption_index = 0;
|
||||
std::string caption_text = getString("CaptionTextAcctInfo");
|
||||
|
||||
const char* ACCT_TYPE[] =
|
||||
{
|
||||
"AcctTypeResident",
|
||||
"AcctTypeTrial",
|
||||
"AcctTypeCharterMember",
|
||||
"AcctTypeEmployee"
|
||||
};
|
||||
|
||||
|
||||
caption_index = llclamp(caption_index, (U8)0, (U8)(LL_ARRAY_SIZE(ACCT_TYPE)-1));
|
||||
args["[ACCTTYPE]"] = getString(ACCT_TYPE[caption_index]);
|
||||
args["[ACCTTYPE]"] = LLAvatarPropertiesProcessor::accountType(pAvatarData);
|
||||
args["[PAYMENTINFO]"] = LLAvatarPropertiesProcessor::paymentInfo(pAvatarData);
|
||||
args["[AGEVERIFICATION]"] = " ";
|
||||
|
||||
std::string payment_text = " ";
|
||||
const S32 DEFAULT_CAPTION_LINDEN_INDEX = 3;
|
||||
if(caption_index != DEFAULT_CAPTION_LINDEN_INDEX)
|
||||
{
|
||||
if(pAvatarData->flags & AVATAR_TRANSACTED)
|
||||
{
|
||||
payment_text = "PaymentInfoUsed";
|
||||
}
|
||||
else if (pAvatarData->flags & AVATAR_IDENTIFIED)
|
||||
{
|
||||
payment_text = "PaymentInfoOnFile";
|
||||
}
|
||||
else
|
||||
{
|
||||
payment_text = "NoPaymentInfoOnFile";
|
||||
}
|
||||
args["[PAYMENTINFO]"] = getString(payment_text);
|
||||
|
||||
// Do not display age verification status at this time - Mostly because it /doesn't work/. -HgB
|
||||
/*bool age_verified = (pAvatarData->flags & AVATAR_AGEVERIFIED); // Not currently getting set in dataserver/lldataavatar.cpp for privacy consideration
|
||||
std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified";
|
||||
|
||||
args["[AGEVERIFICATION]"] = getString(age_text);
|
||||
*/
|
||||
args["[AGEVERIFICATION]"] = " ";
|
||||
}
|
||||
else
|
||||
{
|
||||
args["[PAYMENTINFO]"] = " ";
|
||||
args["[AGEVERIFICATION]"] = " ";
|
||||
}
|
||||
LLStringUtil::format(caption_text, args);
|
||||
|
||||
childSetValue("acct", caption_text);
|
||||
getChild<LLUICtrl>("acct")->setValue(getString("CaptionTextAcctInfo", args));
|
||||
|
||||
getChild<LLTextureCtrl>("img")->setImageAssetID(pAvatarData->image_id);
|
||||
|
||||
|
||||
@@ -671,19 +671,34 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop,
|
||||
// llwarns << "LLTaskInvFVBridge::dropped() - not implemented" << llendl;
|
||||
//}
|
||||
|
||||
void pack_script_message(LLMessageSystem*, const LLInventoryItem*, const LLViewerObject*);
|
||||
|
||||
void reset_script(const LLInventoryItem* item, const LLViewerObject* obj)
|
||||
{
|
||||
if (!item || !obj) return;
|
||||
gMessageSystem->newMessageFast(_PREHASH_ScriptReset);
|
||||
pack_script_message(gMessageSystem, item, obj);
|
||||
gMessageSystem->sendReliable(obj->getRegion()->getHost());
|
||||
}
|
||||
|
||||
void set_script_running(bool running, const LLInventoryItem* item, const LLViewerObject* obj)
|
||||
{
|
||||
if (!item || !obj) return;
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_SetScriptRunning);
|
||||
pack_script_message(msg, item, obj);
|
||||
msg->addBOOLFast(_PREHASH_Running, running);
|
||||
msg->sendReliable(obj->getRegion()->getHost());
|
||||
}
|
||||
|
||||
void pack_script_message(LLMessageSystem* msg, const LLInventoryItem* item, const LLViewerObject* obj)
|
||||
{
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgentID);
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID);
|
||||
msg->nextBlockFast(_PREHASH_Script);
|
||||
msg->addUUIDFast(_PREHASH_ObjectID, obj->getID());
|
||||
msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
|
||||
msg->addBOOLFast(_PREHASH_Running, running);
|
||||
msg->sendReliable(obj->getRegion()->getHost());
|
||||
}
|
||||
|
||||
// virtual
|
||||
@@ -719,6 +734,10 @@ void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string actio
|
||||
{
|
||||
showProperties();
|
||||
}
|
||||
else if (action == "reset_script")
|
||||
{
|
||||
reset_script(findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
|
||||
}
|
||||
else if (action == "start_script")
|
||||
{
|
||||
set_script_running(true, findItem(), gObjectList.findObject(mPanel->getTaskUUID()));
|
||||
@@ -777,11 +796,13 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
{
|
||||
if (LLAssetType::AT_LSL_TEXT == item->getType())
|
||||
{
|
||||
items.push_back(std::string("Task Reset"));
|
||||
items.push_back(std::string("Task Set Running"));
|
||||
items.push_back(std::string("Task Set Not Running"));
|
||||
const LLViewerObject* obj = gObjectList.findObject(mPanel->getTaskUUID());
|
||||
if (!obj || !(obj->permModify() || obj->permYouOwner()))
|
||||
{
|
||||
disabled_items.push_back(std::string("Task Reset"));
|
||||
disabled_items.push_back(std::string("Task Set Running"));
|
||||
disabled_items.push_back(std::string("Task Set Not Running"));
|
||||
}
|
||||
|
||||
@@ -692,16 +692,18 @@ void LLPanelPermissions::refresh()
|
||||
getChild<LLUICtrl>("B:")->setValue("B: " + perm_string);
|
||||
getChildView("B:")->setVisible( TRUE);
|
||||
|
||||
/*
|
||||
perm_string = mask_to_string(owner_mask_on);
|
||||
if (!supports_export && owner_mask_on & PERM_EXPORT) // Hide Export when not available
|
||||
perm_string.erase(perm_string.find_last_of("E"));
|
||||
//getChild<LLUICtrl>("O:")->setValue("O: " + perm_string);
|
||||
//getChildView("O:")->setVisible( TRUE);
|
||||
getChild<LLUICtrl>("O:")->setValue("O: " + perm_string);
|
||||
getChildView("O:")->setVisible( TRUE);
|
||||
*/
|
||||
|
||||
getChild<LLUICtrl>("G:")->setValue("G: " + mask_to_string(group_mask_on));
|
||||
getChildView("G:")->setVisible( TRUE);
|
||||
|
||||
perm_string = mask_to_string(owner_mask_on);
|
||||
perm_string = mask_to_string(everyone_mask_on);
|
||||
if (!supports_export && everyone_mask_on & PERM_EXPORT) // Hide Export when not available
|
||||
perm_string.erase(perm_string.find_last_of("E"));
|
||||
getChild<LLUICtrl>("E:")->setValue("E: " + perm_string);
|
||||
|
||||
@@ -159,8 +159,6 @@ LLPreviewNotecard::LLPreviewNotecard(const std::string& name,
|
||||
}
|
||||
|
||||
initMenu();
|
||||
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
}
|
||||
|
||||
LLPreviewNotecard::~LLPreviewNotecard()
|
||||
|
||||
@@ -1447,6 +1447,7 @@ void LLPreviewLSL::saveIfNeeded(bool sync /*= true*/)
|
||||
|
||||
mPendingUploads = 0;
|
||||
mScriptEd->mErrorList->deleteAllItems();
|
||||
mScriptEd->mErrorList->setCommentText("");
|
||||
mScriptEd->mEditor->makePristine();
|
||||
|
||||
// save off asset into file
|
||||
@@ -2190,6 +2191,7 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/)
|
||||
mScriptEd->enableSave(FALSE);
|
||||
mScriptEd->mEditor->makePristine();
|
||||
mScriptEd->mErrorList->deleteAllItems();
|
||||
mScriptEd->mErrorList->setCommentText("");
|
||||
|
||||
// set up the save on the local machine.
|
||||
mScriptEd->mEditor->makePristine();
|
||||
|
||||
@@ -40,8 +40,7 @@
|
||||
#include "llcombobox.h"
|
||||
#include "statemachine/aifilepicker.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llimagepng.h"
|
||||
#include "llimagetga.h"
|
||||
#include "llimage.h"
|
||||
#include "llinventory.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llresmgr.h"
|
||||
@@ -377,27 +376,16 @@ BOOL LLPreviewTexture::canSaveAs() const
|
||||
return mIsCopyable && !mLoadingFullImage && mImage.notNull() && !mImage->isMissingAsset();
|
||||
}
|
||||
|
||||
static bool sPng(false);
|
||||
|
||||
// virtual
|
||||
void LLPreviewTexture::saveAsType(BOOL png)
|
||||
void LLPreviewTexture::saveAs()
|
||||
{
|
||||
if( mLoadingFullImage )
|
||||
return;
|
||||
|
||||
const LLViewerInventoryItem* item = getItem() ;
|
||||
AIFilePicker* filepicker = AIFilePicker::create();
|
||||
sPng = png;
|
||||
if(png)
|
||||
{
|
||||
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".png" : LLStringUtil::null, FFSAVE_PNG, "", "image");
|
||||
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
|
||||
}
|
||||
else
|
||||
{
|
||||
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".tga" : LLStringUtil::null, FFSAVE_TGA, "", "image");
|
||||
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
|
||||
}
|
||||
filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".png" : LLStringUtil::null, FFSAVE_IMAGE, "", "image");
|
||||
filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker));
|
||||
}
|
||||
|
||||
void LLPreviewTexture::saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker)
|
||||
@@ -446,16 +434,14 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success,
|
||||
|
||||
if( self && final && success )
|
||||
{
|
||||
//FIXME: There has to be a better way
|
||||
LLPointer<LLImagePNG> image_png = new LLImagePNG;
|
||||
LLPointer<LLImageTGA> image_tga = new LLImageTGA;
|
||||
if( sPng ? !image_png->encode( src, 0.0 ) : !image_tga->encode( src ) )
|
||||
LLPointer<LLImageFormatted> image = LLImageFormatted::createFromExtension(self->mSaveFileName);
|
||||
if (!image || !image->encode(src, 0.0))
|
||||
{
|
||||
LLSD args;
|
||||
args["FILE"] = self->mSaveFileName;
|
||||
LLNotificationsUtil::add("CannotEncodeFile", args);
|
||||
}
|
||||
else if( sPng ? !image_png->save( self->mSaveFileName ) : !image_tga->save( self->mSaveFileName ) )
|
||||
else if (!image->save(self->mSaveFileName))
|
||||
{
|
||||
LLSD args;
|
||||
args["FILE"] = self->mSaveFileName;
|
||||
|
||||
@@ -63,8 +63,7 @@ public:
|
||||
virtual void draw();
|
||||
|
||||
virtual BOOL canSaveAs() const;
|
||||
virtual void saveAs(){ saveAsType(false); }
|
||||
void saveAsType(BOOL png);
|
||||
virtual void saveAs();
|
||||
void saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker);
|
||||
virtual LLUUID getItemID();
|
||||
virtual std::string getItemCreatorName();
|
||||
|
||||
@@ -1551,6 +1551,7 @@ bool idle_startup()
|
||||
{
|
||||
name += " " + lastname;
|
||||
}
|
||||
if (gSavedSettings.getBOOL("LiruGridInTitle")) gWindowTitle += "- " + gHippoGridManager->getCurrentGrid()->getGridName() + " ";
|
||||
gViewerWindow->getWindow()->setTitle(gWindowTitle += "- " + name);
|
||||
// Pass the user information to the voice chat server interface.
|
||||
LLVoiceClient::getInstance()->userAuthorized(name, gAgentID);
|
||||
|
||||
@@ -2891,24 +2891,18 @@ class LLObjectEnableExport : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
LLPermissions perms;
|
||||
bool new_value = LLSelectMgr::getInstance()->selectGetPermissions(perms) && perms.isOwned(); // At least one object, accumulated permissions of all objects.
|
||||
ExportPolicy export_policy = LFSimFeatureHandler::instance().exportPolicy();
|
||||
if (new_value && !(export_policy == ep_export_bit && (perms.getMaskEveryone() & PERM_EXPORT))) // No need to call allowExportBy if PERM_EXPORT is set on (all) root objects.
|
||||
bool can_export_any = false;
|
||||
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
|
||||
for (LLObjectSelection::iterator node = selection->begin(); node != selection->end(); ++node)
|
||||
{
|
||||
bool can_export_any = false;
|
||||
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
|
||||
for (LLObjectSelection::iterator node = selection->begin(); node != selection->end(); ++node)
|
||||
if ((*node)->mPermissions->allowExportBy(gAgent.getID(), export_policy))
|
||||
{
|
||||
if ((*node)->mPermissions->allowExportBy(gAgent.getID(), export_policy))
|
||||
{
|
||||
can_export_any = true;
|
||||
break;
|
||||
}
|
||||
can_export_any = true;
|
||||
break;
|
||||
}
|
||||
new_value = can_export_any;
|
||||
}
|
||||
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
|
||||
gMenuHolder->findControl(userdata["control"].asString())->setValue(can_export_any);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -4117,6 +4111,11 @@ void reset_view_final( BOOL proceed )
|
||||
return;
|
||||
}
|
||||
|
||||
if (!gViewerWindow->getLeftMouseDown() && gAgentCamera.cameraThirdPerson() && gSavedSettings.getBOOL("ResetViewTurnsAvatar") && !gSavedSettings.getBOOL("FreezeTime"))
|
||||
{
|
||||
gAgentCamera.setFocusOnAvatar(TRUE, ANIMATE);
|
||||
}
|
||||
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
gAgentCamera.resetView(TRUE, TRUE);
|
||||
gAgentCamera.setLookAt(LOOKAT_TARGET_CLEAR);
|
||||
|
||||
@@ -541,19 +541,6 @@ class LLFileSavePreview : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
class LLFileSavePreviewPNG : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
LLFloater* top = gFloaterView->getFrontmost();
|
||||
if (top)
|
||||
{
|
||||
top->saveAsType(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class LLFileTakeSnapshot : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
@@ -1384,7 +1371,6 @@ void init_menu_file()
|
||||
(new LLFileLocalAssetBrowser())->registerListener(gMenuHolder, "File.LocalAssetBrowser");
|
||||
// </edit>
|
||||
(new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview");
|
||||
(new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG");
|
||||
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
|
||||
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
|
||||
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");
|
||||
|
||||
@@ -2298,9 +2298,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
||||
gIMMgr->processIMTypingStop(im_info);
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
// else if (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM)
|
||||
// else if (offline == IM_ONLINE && !is_linden && !is_muted && is_busy && name != SYSTEM_FROM)
|
||||
// [RLVa:KB] - Checked: 2010-11-30 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
|
||||
else if ( (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM) && (gRlvHandler.canReceiveIM(from_id)) )
|
||||
else if ( (offline == IM_ONLINE && !is_linden && !is_muted && is_busy && name != SYSTEM_FROM) && (gRlvHandler.canReceiveIM(from_id)) )
|
||||
// [/RLVa:KB]
|
||||
{
|
||||
// return a standard "busy" message, but only do it to online IM
|
||||
@@ -2732,7 +2732,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
||||
case IM_GROUP_INVITATION:
|
||||
{
|
||||
//if (!is_linden && (is_busy || is_muted))
|
||||
if ((is_busy || is_muted))
|
||||
if (is_muted) return;
|
||||
if (is_busy)
|
||||
{
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
busy_message(msg,from_id);
|
||||
@@ -3327,7 +3328,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
||||
payload["online"] = (offline == IM_ONLINE);
|
||||
payload["sender"] = msg->getSender().getIPandPort();
|
||||
|
||||
if (is_busy)
|
||||
if (!is_muted && is_busy)
|
||||
{
|
||||
busy_message(msg, from_id);
|
||||
LLNotifications::instance().forceResponse(LLNotification::Params("OfferFriendship").payload(payload), 1);
|
||||
@@ -4029,7 +4030,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
LLLocalSpeakerMgr::getInstance()->setSpeakerTyping(from_id, FALSE);
|
||||
static_cast<LLVOAvatar*>(chatter)->stopTyping();
|
||||
|
||||
if (!is_muted && !is_busy)
|
||||
if (!is_muted /*&& !is_busy*/)
|
||||
{
|
||||
static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false);
|
||||
visible_in_chat_bubble = use_chat_bubbles;
|
||||
@@ -4562,6 +4563,21 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
|
||||
gAgent.getRegion()->getOriginGlobal());
|
||||
gAgent.setRegion(regionp);
|
||||
gObjectList.shiftObjects(shift_vector);
|
||||
// Is this a really long jump?
|
||||
if (shift_vector.length() > 2048.f * 256.f)
|
||||
{
|
||||
regionp->reInitPartitions();
|
||||
gAgent.setRegion(regionp);
|
||||
// Kill objects in the regions we left behind
|
||||
for (LLWorld::region_list_t::const_iterator r = LLWorld::getInstance()->getRegionList().begin();
|
||||
r != LLWorld::getInstance()->getRegionList().end(); ++r)
|
||||
{
|
||||
if (*r != regionp)
|
||||
{
|
||||
gObjectList.killObjects(*r);
|
||||
}
|
||||
}
|
||||
}
|
||||
gAssetStorage->setUpstream(msg->getSender());
|
||||
gCacheName->setUpstream(msg->getSender());
|
||||
gViewerThrottle.sendToSim();
|
||||
@@ -6457,6 +6473,15 @@ bool handle_teleport_access_blocked(LLSD& llsdBlock)
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
void home_position_set()
|
||||
{
|
||||
// save the home location image to disk
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_HOME_FILENAME;
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
|
||||
}
|
||||
|
||||
bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
||||
{
|
||||
// if we have additional alert data
|
||||
@@ -6519,7 +6544,16 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// HACK -- handle callbacks for specific alerts.
|
||||
if (notificationID == "HomePositionSet")
|
||||
{
|
||||
home_position_set();
|
||||
}
|
||||
else if (notificationID == "YouDiedAndGotTPHome")
|
||||
{
|
||||
LLViewerStats::getInstance()->incStat(LLViewerStats::ST_KILLED_COUNT);
|
||||
}
|
||||
|
||||
LLNotificationsUtil::add(notificationID, llsdBlock);
|
||||
return true;
|
||||
}
|
||||
@@ -6596,11 +6630,7 @@ void process_alert_core(const std::string& message, BOOL modal)
|
||||
}
|
||||
else if( message == "Home position set." )
|
||||
{
|
||||
// save the home location image to disk
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_HOME_FILENAME;
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
|
||||
home_position_set();
|
||||
}
|
||||
|
||||
const std::string ALERT_PREFIX("ALERT: ");
|
||||
|
||||
@@ -338,7 +338,11 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
|
||||
|
||||
// Create the object lists
|
||||
initStats();
|
||||
initPartitions();
|
||||
}
|
||||
|
||||
void LLViewerRegion::initPartitions()
|
||||
{
|
||||
//create object partitions
|
||||
//MUST MATCH declaration of eObjectPartitions
|
||||
mImpl->mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD
|
||||
@@ -357,6 +361,12 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
|
||||
mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE
|
||||
}
|
||||
|
||||
void LLViewerRegion::reInitPartitions()
|
||||
{
|
||||
std::for_each(mImpl->mObjectPartition.begin(), mImpl->mObjectPartition.end(), DeletePointer());
|
||||
mImpl->mObjectPartition.clear();
|
||||
initPartitions();
|
||||
}
|
||||
|
||||
void LLViewerRegion::initStats()
|
||||
{
|
||||
|
||||
@@ -369,10 +369,12 @@ public:
|
||||
};
|
||||
|
||||
void showReleaseNotes();
|
||||
void reInitPartitions();
|
||||
|
||||
protected:
|
||||
void disconnectAllNeighbors();
|
||||
void initStats();
|
||||
void initPartitions();
|
||||
|
||||
public:
|
||||
LLWind mWind;
|
||||
|
||||
@@ -685,6 +685,13 @@ void LLVoiceChannelProximal::activate()
|
||||
// we're connected to a non-spatial channel, so disconnect.
|
||||
LLVoiceClient::getInstance()->leaveNonSpatialChannel();
|
||||
}
|
||||
|
||||
// Singu Note: Mic default state is OFF for local voice
|
||||
if (LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle() && gSavedSettings.getBOOL("AutoDisengageMic"))
|
||||
{
|
||||
LLVoiceClient::getInstance()->inputUserControlState(true);
|
||||
}
|
||||
|
||||
LLVoiceChannel::activate();
|
||||
|
||||
}
|
||||
|
||||
@@ -1204,7 +1204,7 @@ void LLWorldMapView::drawAgents()
|
||||
{
|
||||
F32 agents_scale = (sMapScale * 0.9f) / 256.f;
|
||||
|
||||
LLColor4 avatar_color = gColors.getColor( "MapAvatar" );
|
||||
LLColor4 avatar_color = gSavedSettings.getColor( "MapAvatar" );
|
||||
// LLColor4 friend_color = gColors.getColor( "MapFriend" );
|
||||
|
||||
for (handle_list_t::iterator iter = mVisibleRegions.begin(); iter != mVisibleRegions.end(); ++iter)
|
||||
@@ -2137,6 +2137,7 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask )
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (!gSavedSettings.getBOOL("DoubleClickTeleportMap")) return true;
|
||||
if (LLWorldMap::getInstance()->isTracking())
|
||||
{
|
||||
LLWorldMap::getInstance()->setTrackingDoubleClick();
|
||||
|
||||
@@ -5,15 +5,6 @@
|
||||
<string name="CaptionTextAcctInfo">[ACCTTYPE]
|
||||
[PAYMENTINFO]
|
||||
[AGEVERIFICATION]</string>
|
||||
<string name="AcctTypeResident">Einwohner</string>
|
||||
<string name="AcctTypeTrial">Test</string>
|
||||
<string name="AcctTypeCharterMember">Charta-Mitglied</string>
|
||||
<string name="AcctTypeEmployee">Linden Lab-Mitarbeiter</string>
|
||||
<string name="PaymentInfoUsed">Zahlungsinfo verwendet</string>
|
||||
<string name="PaymentInfoOnFile">Zahlungsinfo archiviert</string>
|
||||
<string name="NoPaymentInfoOnFile">Keine Zahlungsinfo archiviert</string>
|
||||
<string name="AgeVerified">Altersgeprüft</string>
|
||||
<string name="NotAgeVerified">Nicht altersgeprüft</string>
|
||||
<button label="Kopiere Schlüssel" tool_tip="Schlüssel in die Zwischenablage kopieren" name="copy_key"/>
|
||||
|
||||
<button name="web_profile" label="Web Profil"/>
|
||||
|
||||
36
indra/newview/skins/default/xui/en-us/floater_dae_export.xml
Normal file
36
indra/newview/skins/default/xui/en-us/floater_dae_export.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="Collada Export" title="Collada Export" width="600" height="260" can_close="true" can_minimize="true">
|
||||
<string name="texture_progress">Collada Export: Saving textures ([COUNT] remaining)</string>
|
||||
<text name="file name" follows="bottom|left" left="10" bottom="-48" height="20">File Name:</text>
|
||||
<line_editor name="file name editor" follows="bottom|left" left_delta="60" bottom_delta="4" width="360" height="20"/>
|
||||
<button name="browse button" label="Browse" follows="bottom|left" left_delta="363" bottom_delta="0" width="80" height="20">
|
||||
<button.commit_callback function="ColladaExport.FilePicker"/>
|
||||
</button>
|
||||
<button name="export button" label="Export" follows="bottom|left" left_delta="83" bottom_delta="0" width="80" height="20">
|
||||
<button.commit_callback function="ColladaExport.Export"/>
|
||||
</button>
|
||||
<panel border="true" left="10" bottom_delta="-88" height="80" width="200" follows="bottom|left" name="object info panel">
|
||||
<text name="Object info" bottom="-20" height="20" left="5">Object Info</text>
|
||||
<text name="Object Name" bottom_delta="-20" height="20" left="10">Name: [NAME]</text>
|
||||
<text name="Exportable Prims" bottom_delta="-20" height="20" left="10">Exportable Prims: [COUNT]/[TOTAL]</text>
|
||||
<text name="Exportable Textures" bottom_delta="-20" height="20">Exportable Textures: [COUNT]/[TOTAL]</text>
|
||||
</panel>
|
||||
<panel border="true" bottom_delta="-120" height="115" width="200" follows="bottom|left" name="options panel">
|
||||
<text name="Object info" bottom="-20" height="20" left="5">Options</text>
|
||||
<check_box name="texture export check" label="Export Textures" height="20" bottom_delta="-20" left="10" control_name="DAEExportTextures">
|
||||
<check_box.commit_callback function="ColladaExport.TextureExport"/>
|
||||
</check_box>
|
||||
<combo_box name="texture type combo" bottom_delta="0" left_delta="120" height="20" width="60" control_name="DAEExportTexturesType">
|
||||
<combo_item name="tga" value="0">TGA</combo_item>
|
||||
<combo_item name="png" value="1">PNG</combo_item>
|
||||
<combo_item name="j2c" value="2">J2C</combo_item>
|
||||
<combo_item name="bmp" value="3">BMP</combo_item>
|
||||
<combo_item name="jpg" value="4">JPG</combo_item>
|
||||
<combo_box.commit_callback function="ColladaExport.TextureTypeCombo" />
|
||||
</combo_box>
|
||||
<check_box name="consolidate check" label="Consolidate faces" tool_tip="Export faces that have the same texture as one" bottom_delta="-20" left="10" height="20" control_name="DAEExportConsolidateMaterials"/>
|
||||
<check_box name="skip transparent check" label="Skip transparent textures" bottom_delta="-20" height="20" control_name="DAEExportSkipTransparent"/>
|
||||
<check_box name="texture params check" label="Apply texture params" bottom_delta="-20" height="20" control_name="DAEExportTextureParams"/>
|
||||
</panel>
|
||||
<scroll_container name="textures container" follows="all" bottom="-252" left_delta="205" width="380" height="200"/>
|
||||
</floater>
|
||||
@@ -12,14 +12,17 @@
|
||||
<string name="unavailable_text_label">Text chat is not available for this call.</string>
|
||||
<string name="inventory_item_offered">Inventory item offered</string>
|
||||
<flyout_button bottom="-37" height="20" label="Profile" left="5" name="instant_message_flyout" width="80" list_position="below">
|
||||
<flyout_button_item label="History" name="history_btn" value="1"/>
|
||||
<flyout_button_item label="Offer Teleport" name="profile_tele_btn" value="2"/>
|
||||
<!--flyout_button_item label="Request Teleport" name="profile_tele_btn" value="3"/-->
|
||||
<flyout_button_item label="Pay" name="profile_tele_btn" value="4"/>
|
||||
<flyout_button_item label="Invite To Group" name="profile_tele_btn" value="5"/>
|
||||
<flyout_button_item label="Request Teleport" name="request_teleport_item" value="3"/>
|
||||
<flyout_button_item label="Invite To Group" name="group_invite_item" value="5"/>
|
||||
</flyout_button>
|
||||
<check_box bottom="-37" follows="top" height="20" left_delta="80" name="rp_mode">RP Mode</check_box>
|
||||
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="80" name="start_call_btn" width="80"/>
|
||||
<string name="ding on" value="Ding on new messages (On)"/>
|
||||
<string name="ding off" value="Ding on new messages (Off)"/>
|
||||
<string name="rp mode on" value="RP Mode (On)"/>
|
||||
<string name="rp mode off" value="RP Mode (Off)"/>
|
||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
|
||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
|
||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="history_btn" label="Log"/>
|
||||
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="50" name="start_call_btn" width="80"/>
|
||||
<button bottom="-37" follows="top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" label="End" name="end_call_btn" visible="false" width="80"/>
|
||||
<panel border="false" bottom="-34" follows="left|top" height="20" left_delta="80" name="speaker_controls" width="100">
|
||||
<volume_slider bottom="0" follows="bottom" height="15" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="56"/>
|
||||
|
||||
@@ -11,15 +11,18 @@
|
||||
<string name="default_text_label">Click here to instant message.</string>
|
||||
<string name="unavailable_text_label">Text chat is not available for this call.</string>
|
||||
<string name="inventory_item_offered">Inventory item offered</string>
|
||||
<flyout_button bottom="-20" follows="right|top" halign="center" height="20" label="Profile" left_delta="60" name="instant_message_flyout" width="80" list_position="below">
|
||||
<flyout_button bottom="-20" follows="right|top" halign="center" height="20" label="Profile" left="280" name="instant_message_flyout" width="80" list_position="below">
|
||||
<flyout_button_item label="History" name="history_btn" value="1"/>
|
||||
<flyout_button_item label="Offer Teleport" name="profile_tele_btn" value="2"/>
|
||||
<!--flyout_button_item label="Request Teleport" name="profile_tele_btn" value="3"/-->
|
||||
<flyout_button_item label="Pay" name="profile_tele_btn" value="4"/>
|
||||
<flyout_button_item label="Invite To Group" name="profile_tele_btn" value="5"/>
|
||||
<flyout_button_item label="Request Teleport" name="request_teleport_item" value="3"/>
|
||||
<flyout_button_item label="Pay" name="pay_item" value="4"/>
|
||||
<flyout_button_item label="Invite To Group" name="group_invite_item" value="5"/>
|
||||
</flyout_button>
|
||||
<check_box bottom="-20" follows="right|top" height="20" left_delta="90" name="rp_mode">RP Mode</check_box>
|
||||
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="67" name="start_call_btn" width="60"/>
|
||||
<string name="ding on" value="Ding on new messages (On)"/>
|
||||
<string name="ding off" value="Ding on new messages (Off)"/>
|
||||
<string name="rp mode on" value="RP Mode (On)"/>
|
||||
<string name="rp mode off" value="RP Mode (Off)"/>
|
||||
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="81" name="start_call_btn" width="60"/>
|
||||
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" scale_image="true" label="End" name="end_call_btn" width="24"/>
|
||||
<panel mouse_opaque="false" border="false" bottom="-20" follows="right|top" height="20" left_delta="16" name="speaker_controls" width="60">
|
||||
<volume_slider bottom="0" follows="bottom" height="20" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="48"/>
|
||||
|
||||
@@ -48,10 +48,10 @@
|
||||
<on_click function="List.OfferTeleport"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<!--menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="List.RequestTeleport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call-->
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Mute/Unmute" name="Mute/Unmute">
|
||||
<on_click function="List.Mute"/>
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
name="Task Remove" width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="delete" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Reset" name="Task Reset">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="reset_script" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Set Not Running" name="Task Set Not Running">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="stop_script" />
|
||||
</menu_item_call>
|
||||
@@ -240,6 +243,7 @@
|
||||
mouse_opaque="true" name="Replace Outfit" width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="replaceoutfit" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator name="Replace Remove Separator"/>
|
||||
<menu_item_call bottom_delta="-18" height="18" label="Remove From Outfit" left="0"
|
||||
mouse_opaque="true" name="Remove From Outfit" width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="removefromoutfit" />
|
||||
@@ -284,9 +288,9 @@
|
||||
mouse_opaque="true" name="Offer Teleport..." width="128">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="lure" />
|
||||
</menu_item_call>
|
||||
<!--menu_item_call label="Request Teleport..." name="Request Teleport...">
|
||||
<menu_item_call label="Request Teleport..." name="Request Teleport...">
|
||||
<on_click filter="" function="Inventory.DoToSelected" userdata="request_lure" />
|
||||
</menu_item_call-->
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom_delta="-18" height="18" label="Start Conference Chat" left="0"
|
||||
mouse_opaque="true" name="Conference Chat" width="128">
|
||||
<on_click filter="" function="Inventory.BeginIMSession" userdata="selected" />
|
||||
|
||||
@@ -53,10 +53,10 @@
|
||||
<on_click function="Radar.TeleportTo"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<!--menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="List.RequestTeleport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call-->
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Track/Untrack" name="Track/Untrack">
|
||||
<on_click function="Radar.Track"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
|
||||
@@ -67,16 +67,11 @@
|
||||
</menu_item_call>
|
||||
<menu_item_separator bottom="-121" enabled="true" height="8" label="-----------" left="0"
|
||||
mouse_opaque="true" name="separator2" width="243" />
|
||||
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As (TGA)..." left="0"
|
||||
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As..." left="0"
|
||||
mouse_opaque="true" name="Save Preview As..." width="243">
|
||||
<on_click function="File.SavePreview" userdata="" />
|
||||
<on_enable function="File.EnableSaveAs" />
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-140" enabled="true" height="19" label="Save Preview As (PNG)..." left="0"
|
||||
mouse_opaque="true" name="Save Preview AsPNG..." width="243">
|
||||
<on_click function="File.SavePreviewPNG" userdata="" />
|
||||
<on_enable function="File.EnableSaveAs" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator bottom="-148" enabled="true" height="8" label="-----------" left="0"
|
||||
mouse_opaque="true" name="separator3" width="243" />
|
||||
<menu_item_call bottom="-167" enabled="true" height="19" label="Take Snapshot" left="0"
|
||||
|
||||
@@ -9,33 +9,6 @@
|
||||
[PAYMENTINFO]
|
||||
[AGEVERIFICATION]
|
||||
</string>
|
||||
<string name="AcctTypeResident">
|
||||
Resident
|
||||
</string>
|
||||
<string name="AcctTypeTrial">
|
||||
Trial
|
||||
</string>
|
||||
<string name="AcctTypeCharterMember">
|
||||
Charter Member
|
||||
</string>
|
||||
<string name="AcctTypeEmployee">
|
||||
Linden Lab Employee
|
||||
</string>
|
||||
<string name="PaymentInfoUsed">
|
||||
Payment Info Used
|
||||
</string>
|
||||
<string name="PaymentInfoOnFile">
|
||||
Payment Info On File
|
||||
</string>
|
||||
<string name="NoPaymentInfoOnFile">
|
||||
No Payment Info On File
|
||||
</string>
|
||||
<string name="AgeVerified">
|
||||
Age-verified
|
||||
</string>
|
||||
<string name="NotAgeVerified">
|
||||
Not Age-verified
|
||||
</string>
|
||||
<button bottom="-24" follows="left|top" halign="right" height="16" label="Copy Key:" left="4" font="SansSerifSmall" tool_tip="Copy key to clipboard" name="copy_key" width="70"/>
|
||||
<name_editor bevel_style="in" border_style="line"
|
||||
border_thickness="1" bottom="-24" enabled="false" follows="left|top"
|
||||
|
||||
@@ -112,7 +112,7 @@ The following wildcards are available to enhance your autoresponses: #n for user
|
||||
<check_box control_name="AntiSpamScripts" height="16" label="Scripts" name="Scripts" bottom_delta="0" left_delta="120"/>
|
||||
<check_box control_name="AntiSpamTeleports" height="16" label="Teleport Offers" name="Teleport Offers" bottom_delta="0" left_delta="120"/>
|
||||
<check_box control_name="AntiSpamGroupNotices" height="16" label="Group Notices" name="Group Notices" bottom_delta="0" left_delta="120"/>
|
||||
<!--check_box control_name="AntiSpamTeleportRequests" height="16" label="Teleport Requests" name="Teleport Requests" left="14" bottom_delta="-20"/-->
|
||||
<check_box control_name="AntiSpamTeleportRequests" height="16" label="Teleport Requests" name="Teleport Requests" left="14" bottom_delta="-20"/>
|
||||
<text name="Except those from:" left="21" bottom_delta="-10">Except those from:</text>
|
||||
<check_box control_name="AntiSpamNotMine" height="16" label="My objects" name="My objects" left="25" bottom_delta="-23"/>
|
||||
<check_box control_name="AntiSpamNotFriends" height="16" label="My friends" name="My friends" bottom_delta="0" left_delta="120"/>
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="1 1 1 1" control_name="AscentEstateOwnerColor" follows="top" height="47" label="Estate" left_delta="54" name="estate_owner_color_swatch" width="44" tool_tip="Color of Estate Managers"/>
|
||||
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.6 0.6 1 1" control_name="AscentLindenColor" follows="top" height="47" label="Lindens" left_delta="54" name="linden_color_swatch" width="44" tool_tip="Color of Lindens"/>
|
||||
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.8 1 1 1" control_name="AscentMutedColor" follows="top" height="47" label="Muted" left_delta="54" name="muted_color_swatch" width="44" tool_tip="Color of Muted"/>
|
||||
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0 1 0 1" control_name="MapAvatar" follows="top" height="47" label="Others" left_delta="54" name="others_color_swatch" width="44" tool_tip="Color of everyone else on the minimap and world map"/>
|
||||
<color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0" can_apply_immediately="true" color="0.375 1 1 1" control_name="MoyMiniMapCustomColor" follows="top" height="47" label="Custom (Minimap)" left_delta="54" name="custom_color_swatch" width="44" tool_tip="Color of users picked out on the minimap only"/>
|
||||
<text bottom_delta="-9" follows="top" height="10" left="20" name="chat_color_text">Use colors for chat:</text>
|
||||
<check_box bottom_delta="-7" control_name="ColorFriendChat" follows="top" height="20" label="" left_delta="150" name="color_friend_check" width="44" tool_tip="Color Friend Chat"/>
|
||||
|
||||
@@ -3205,10 +3205,21 @@ The
|
||||
<string name="Stomach">Stomach</string>
|
||||
<string name="Left Pec">Left Pec</string>
|
||||
<string name="Right Pec">Right Pec</string>
|
||||
<string name="Neck">Neck</string>
|
||||
<string name="Root">Root</string>
|
||||
<string name="Invalid Attachment">Invalid Attachment Point</string>
|
||||
<string name="Neck">Neck</string>
|
||||
<string name="Root">Root</string>
|
||||
<string name="Invalid Attachment">Invalid Attachment Point</string>
|
||||
|
||||
<!-- Account types, see LLAvatarPropertiesProcessor -->
|
||||
<string name="AcctTypeResident">Resident</string>
|
||||
<string name="AcctTypeTrial">Trial</string>
|
||||
<string name="AcctTypeCharterMember">Charter Member</string>
|
||||
<string name="AcctTypeEmployee">Linden Lab Employee</string>
|
||||
<string name="PaymentInfoUsed">Payment Info Used</string>
|
||||
<string name="PaymentInfoOnFile">Payment Info On File</string>
|
||||
<string name="NoPaymentInfoOnFile">No Payment Info On File</string>
|
||||
<string name="AgeVerified">Age-verified</string>
|
||||
<string name="NotAgeVerified">Not Age-verified</string>
|
||||
|
||||
<!-- HUD Position -->
|
||||
<string name="Center 2">Center 2</string>
|
||||
<string name="Top Right">Top Right</string>
|
||||
|
||||
@@ -34,15 +34,16 @@
|
||||
Ofrecido un Item de Inventario
|
||||
</string>
|
||||
<flyout_button label="Perfil" name="instant_message_flyout">
|
||||
<flyout_button_item label="Historial" name="history_btn"/>
|
||||
<flyout_button_item label="Ofrecer Teleporte" name="profile_tele_btn"/>
|
||||
<!--flyout_button_item label="Solicitar Teleporte" name="profile_tele_btn"/-->
|
||||
<flyout_button_item label="Pagar" name="profile_tele_btn"/>
|
||||
<flyout_button_item label="Invitar a Grupo" name="profile_tele_btn"/>
|
||||
</flyout_button>
|
||||
<check_box name="rp_mode">
|
||||
Modo RP
|
||||
</check_box>
|
||||
<flyout_button_item label="Solicitar Teleporte" name="request_teleport_item"/>
|
||||
<flyout_button_item label="Invitar al Grupo" name="group_invite_item"/>
|
||||
</flyout_button>
|
||||
<string name="ding on" value="Timbre en Nuevos Mensajes (Encendido)"/>
|
||||
<string name="ding off" value="Timbre en Nuevos Mensajes (Apagado)"/>
|
||||
<string name="rp mode on" value="Modo RP (Encendido)"/>
|
||||
<string name="rp mode off" value="Modo RP (Apagado)"/>
|
||||
<button name="tp_btn" label="TP"/>
|
||||
<button name="pay_btn" label="Pagar"/>
|
||||
<button name="history_btn" label="Historial" width="60" />
|
||||
<button label="Llamar" name="start_call_btn"/>
|
||||
<button label="Colgar" name="end_call_btn"/>
|
||||
<panel name="speaker_controls">
|
||||
|
||||
@@ -33,13 +33,14 @@
|
||||
<flyout_button label="Perfil" name="instant_message_flyout">
|
||||
<flyout_button_item label="Historial" name="history_btn"/>
|
||||
<flyout_button_item label="Ofrecer Teleporte" name="profile_tele_btn"/>
|
||||
<!--flyout_button_item label="Solicitar Teleporte" name="profile_tele_btn"/-->
|
||||
<flyout_button_item label="Pagar" name="profile_tele_btn"/>
|
||||
<flyout_button_item label="Invitar a Grupo" name="profile_tele_btn" value="5"/>
|
||||
<flyout_button_item label="Solicitar Teleporte" name="request_teleport_item"/>
|
||||
<flyout_button_item label="Pagar" name="pay_item"/>
|
||||
<flyout_button_item label="Invitar a Grupo" name="group_invite_item"/>
|
||||
</flyout_button>
|
||||
<check_box left_delta="75" name="rp_mode">
|
||||
Modo RP
|
||||
</check_box>
|
||||
<string name="ding on" value="Timbre en Nuevos Mensajes (Encendido)"/>
|
||||
<string name="ding off" value="Timbre en Nuevos Mensajes (Apagado)"/>
|
||||
<string name="rp mode on" value="Modo RP (Encendido)"/>
|
||||
<string name="rp mode off" value="Modo RP (Apagado)"/>
|
||||
<button label="Llamar" left_delta="67" name="start_call_btn" width="60"/>
|
||||
<button label="Finalizar" name="end_call_btn" width="24"/>
|
||||
<panel left_delta="16" name="speaker_controls" width="60">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<menu_item_call label="Quitar Amigo" name="Remove Friend"/>
|
||||
<menu_item_call label="Invitar a Grupo" name="Invite To Group"/>
|
||||
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
|
||||
<!--menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>-->
|
||||
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Ignorar/No Ignorar" name="Mute/Unmute"/>
|
||||
<menu_item_call label="Reportar Abuso" name="Report Abuse"/>
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
<menu_item_separator name="Animation Separator" />
|
||||
<menu_item_call name="Animation Play" label="Reproducir en el mundo"/>
|
||||
<menu_item_call name="Animation Audition" label="Reproducir localmente" />
|
||||
<menu_item_separator name="Send Instant Message Separator" />
|
||||
<menu_item_call label="Perfil Web" name="Web Profile"/>
|
||||
<menu_item_call name="Send Instant Message" label="Enviar MI"/>
|
||||
<menu_item_call name="Offer Teleport..." label="Ofrecer Teleporte..."/>
|
||||
<menu_item_call label="Solicitar Teleporte..." name="Request Teleport..."/>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<menu_item_call label="Invitar a Grupo" name="Invite To Group"/>
|
||||
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
|
||||
<menu_item_call label="Teleportar a" name="Teleport To"/>
|
||||
<!--menu_item_call label="Request Teleport" name="Request Teleport"/-->
|
||||
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
|
||||
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
|
||||
<menu_item_call label="Copiar UUID" name="Copy Key"/>
|
||||
</menu>
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
<menu_item_call label="Minimizar todas las Ventanas" name="Minimize All Windows"/>
|
||||
<menu_item_call label="Cerrar Ventana" name="Close Window"/>
|
||||
<menu_item_call label="Cerrar todas las Ventanas" name="Close All Windows"/>
|
||||
<menu_item_call label="Guardar Vista Previa Como (TGA)..." name="Save Preview As..."/>
|
||||
<menu_item_call label="Guardar Vista Previa Como (PNG)..." name="Save Preview AsPNG..."/>
|
||||
<menu_item_call label="Guardar Vista Previa Como..." name="Save Preview As..."/>
|
||||
<menu_item_call label="Hacer una Foto" name="Take Snapshot"/>
|
||||
<menu_item_call label="Guardar Foto en Disco" name="Snapshot to Disk"/>
|
||||
<menu_item_call label="Salir" name="Quit"/>
|
||||
|
||||
@@ -7,33 +7,6 @@
|
||||
[PAYMENTINFO]
|
||||
[AGEVERIFICATION]
|
||||
</string>
|
||||
<string name="AcctTypeResident">
|
||||
Residente
|
||||
</string>
|
||||
<string name="AcctTypeTrial">
|
||||
Prueba
|
||||
</string>
|
||||
<string name="AcctTypeCharterMember">
|
||||
Miembro Fundador
|
||||
</string>
|
||||
<string name="AcctTypeEmployee">
|
||||
Empleado de Linden Lab
|
||||
</string>
|
||||
<string name="PaymentInfoUsed">
|
||||
Información de Pago utilizada
|
||||
</string>
|
||||
<string name="PaymentInfoOnFile">
|
||||
Información de Pago en Archivo
|
||||
</string>
|
||||
<string name="NoPaymentInfoOnFile">
|
||||
Sin Información de Pago
|
||||
</string>
|
||||
<string name="AgeVerified">
|
||||
Edad Verificada
|
||||
</string>
|
||||
<string name="NotAgeVerified">
|
||||
Edad No Verificada
|
||||
</string>
|
||||
<button label="Copiar Key:" tool_tip="Copyiar key al portapapeles" name="copy_key"/>
|
||||
<name_editor name="avatar_key"/>
|
||||
<button name="web_profile" label="Perfil Web"/>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
<color_swatch label="Estado" name="estate_owner_color_swatch" tool_tip="Color para Administrador de Regiones"/>
|
||||
<color_swatch label="Lindens" name="linden_color_swatch" tool_tip="Color para empleados de Linden Lab"/>
|
||||
<color_swatch label="Ignorados" name="muted_color_swatch" tool_tip="Color para usuarios ignorados o bloqueados"/>
|
||||
<color_swatch label="Otros" name="others_color_swatch" tool_tip="Color para todos los demás usuarios en el mapa y el mini mapa"/>
|
||||
<color_swatch label="Pers.(Minimapa)" name="custom_color_swatch" tool_tip="Color solamente para usuarios marcados en el minimapa"/>
|
||||
<text name="chat_color_text" bottom_delta="-13" >
|
||||
Usar colores para chat:
|
||||
|
||||
@@ -8,10 +8,13 @@
|
||||
<string value="Permitir múltiples instancias de [APP_NAME] usar el voice simultáneamente (req. reiniciar)" name="multivoice_label"/>
|
||||
<radio_group name="ear_location">
|
||||
<radio_item name="0">
|
||||
Oir el chat desde la posición de la cámara.
|
||||
Escuchar chat de voz desde la posición de la cámara.
|
||||
</radio_item>
|
||||
<radio_item name="1">
|
||||
Oir el chat desde la posición del avatar.
|
||||
Escuchar chat de voz desde la posición del avatar.
|
||||
</radio_item>
|
||||
<radio_item name="3">
|
||||
Escuchar chat de voz desde cualquier posición.
|
||||
</radio_item>
|
||||
</radio_group>
|
||||
<text name="push_to_talk_heading">
|
||||
|
||||
@@ -3745,7 +3745,18 @@ Where tag = tag string to match. Removes bot's matching the tag.
|
||||
<string name="Right Pec">Pectoral Derecho</string>
|
||||
<string name="Neck">Cuello</string>
|
||||
<string name="Root">Base</string>
|
||||
<string name="Invalid Attachment">Punto de anexión inválido</string>
|
||||
<string name="Invalid Attachment">Punto de anexión inválido</string>
|
||||
|
||||
<!-- Account types, see LLAvatarPropertiesProcessor -->
|
||||
<string name="AcctTypeResident">Resident</string>
|
||||
<string name="AcctTypeTrial">Trial</string>
|
||||
<string name="AcctTypeCharterMember">Charter Member</string>
|
||||
<string name="AcctTypeEmployee">Linden Lab Employee</string>
|
||||
<string name="PaymentInfoUsed">Payment Info Used</string>
|
||||
<string name="PaymentInfoOnFile">Payment Info On File</string>
|
||||
<string name="NoPaymentInfoOnFile">No Payment Info On File</string>
|
||||
<string name="AgeVerified">Age-verified</string>
|
||||
<string name="NotAgeVerified">Not Age-verified</string>
|
||||
|
||||
<!-- HUD Position -->
|
||||
<string name="Center 2">Centro 2</string>
|
||||
|
||||
@@ -12,8 +12,7 @@
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Définir les droits par défaut " name="perm prefs"/>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Enregistrer la texture sur le disque dur en TGA" name="Save Preview As..."/>
|
||||
<menu_item_call label="Enregistrer la texture sur le disque dur en PNG" name="Save Preview AsPNG..."/>
|
||||
<menu_item_call label="Enregistrer la texture sur le disque" name="Save Preview As..."/>
|
||||
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Minimiser toutes les fenêtres" name="Minimize All Windows"/>
|
||||
|
||||
@@ -7,36 +7,6 @@
|
||||
[PAYMENTINFO]
|
||||
[AGEVERIFICATION]
|
||||
</string>
|
||||
<string name="AcctTypeResident">
|
||||
Résident
|
||||
</string>
|
||||
<string name="AcctTypeTrial">
|
||||
Essai
|
||||
</string>
|
||||
<string name="AcctTypeCharterMember">
|
||||
Membre originaire
|
||||
</string>
|
||||
<string name="AcctTypeEmployee">
|
||||
Employé(e) de Linden Lab
|
||||
</string>
|
||||
<string name="PaymentInfoUsed">
|
||||
Infos de paiement utilisées
|
||||
</string>
|
||||
<string name="PaymentInfoOnFile">
|
||||
Infos de paiement enregistrées
|
||||
</string>
|
||||
<string name="NoPaymentInfoOnFile">
|
||||
Aucune info de paiement
|
||||
</string>
|
||||
<string name="AgeVerified">
|
||||
Âge vérifié
|
||||
</string>
|
||||
<string name="NotAgeVerified">
|
||||
Âge non vérifié
|
||||
</string>
|
||||
<text name="Name:">
|
||||
Nom:
|
||||
</text>
|
||||
<text name="online_yes" width="151">
|
||||
Actuellement connecté(e)
|
||||
</text>
|
||||
|
||||
@@ -2,36 +2,6 @@
|
||||
<panel name="Panel Avatar" width="495">
|
||||
<tab_container name="tab" width="484">
|
||||
<panel label="2nd Life" name="2nd Life" width="483">
|
||||
<string name="AcctTypeResident">
|
||||
Residente
|
||||
</string>
|
||||
<string name="AcctTypeTrial">
|
||||
Teste
|
||||
</string>
|
||||
<string name="AcctTypeCharterMember">
|
||||
Estatuto do membro
|
||||
</string>
|
||||
<string name="AcctTypeEmployee">
|
||||
Contratado da Linden Lab.
|
||||
</string>
|
||||
<string name="PaymentInfoUsed">
|
||||
Infor. de pagamento utilizadas
|
||||
</string>
|
||||
<string name="PaymentInfoOnFile">
|
||||
Infor. de pagamento no arquivo.
|
||||
</string>
|
||||
<string name="NoPaymentInfoOnFile">
|
||||
Sem infor. de pagamento no arquivo
|
||||
</string>
|
||||
<string name="AgeVerified">
|
||||
Idade Verificada
|
||||
</string>
|
||||
<string name="NotAgeVerified">
|
||||
Idade não Verificada
|
||||
</string>
|
||||
<text name="Name:">
|
||||
Nome:
|
||||
</text>
|
||||
<text name="online_yes" width="176">
|
||||
Atualmente Online
|
||||
</text>
|
||||
|
||||
@@ -329,6 +329,9 @@ void AIFilePicker::open(std::string const& filename, ESaveFilter filter, std::st
|
||||
case FFSAVE_PHYSICS:
|
||||
mFilter = "physics";
|
||||
break;
|
||||
case FFSAVE_IMAGE:
|
||||
mFilter = "image";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,8 @@ enum ESaveFilter
|
||||
FFSAVE_LANDMARK,
|
||||
FFSAVE_AO,
|
||||
FFSAVE_BLACKLIST,
|
||||
FFSAVE_PHYSICS
|
||||
FFSAVE_PHYSICS,
|
||||
FFSAVE_IMAGE,
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -134,6 +134,8 @@ static LLFilePicker::ESaveFilter str2savefilter(std::string const& filter)
|
||||
return LLFilePicker::FFSAVE_BLACKLIST;
|
||||
else if (filter == "physics")
|
||||
return LLFilePicker::FFSAVE_PHYSICS;
|
||||
else if (filter == "image")
|
||||
return LLFilePicker::FFSAVE_IMAGE;
|
||||
else
|
||||
return LLFilePicker::FFSAVE_ALL;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ LLFilePicker LLFilePicker::sInstance;
|
||||
#define AO_FILTER L"Animation Override (*.ao)\0*.ao\0"
|
||||
#define BLACKLIST_FILTER L"Asset Blacklist (*.blacklist)\0*.blacklist\0"
|
||||
// </edit>
|
||||
#define ANIM_FILTER L"Animations (*.bvh; *.anim)\0*.bvh\0*.anim\0"
|
||||
#define ANIM_FILTER L"Animations (*.bvh; *.anim)\0*.bvh;*.anim\0"
|
||||
#define COLLADA_FILTER L"Scene (*.dae)\0*.dae\0"
|
||||
#ifdef _CORY_TESTING
|
||||
#define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0"
|
||||
@@ -692,6 +692,18 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
|
||||
L"Landmarks (*.phy)\0*.phy\0" \
|
||||
L"\0";
|
||||
break;
|
||||
case FFSAVE_IMAGE:
|
||||
mOFN.lpstrDefExt = NULL;
|
||||
mOFN.lpstrFilter =
|
||||
L"Image (*.bmp *.dxt *.jpg *.jpeg *.j2c *.mip *.png *.tga)\0*.bmp;*.dxt;*.jpg;*.jpeg;*.j2c;*.mip;*.png;*.tga\0" \
|
||||
L"PNG Image (*.png)\0*.png\0" \
|
||||
L"Targa Image (*.tga)\0*.tga\0" \
|
||||
L"Bitmap Image (*.bmp)\0*.bmp\0" \
|
||||
L"JPEG Image (*.jpg *.jpeg)\0*.jpg;*.jpeg\0" \
|
||||
L"Compressed Image (*.j2c)\0*.j2c\0" \
|
||||
L"DXT Image (*.dxt *.mip)\0*.dxt;*.mip\0" \
|
||||
L"\0";
|
||||
break;
|
||||
// </edit>
|
||||
default:
|
||||
return FALSE;
|
||||
@@ -1423,6 +1435,21 @@ static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
|
||||
return filtername;
|
||||
}
|
||||
|
||||
static std::string add_imagesave_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
GtkFileFilter *gfilter = gtk_file_filter_new();
|
||||
gtk_file_filter_add_mime_type(gfilter, "image/bmp");
|
||||
gtk_file_filter_add_pattern(gfilter, "*.dxt");
|
||||
gtk_file_filter_add_mime_type(gfilter, "image/jpeg");
|
||||
gtk_file_filter_add_pattern(gfilter, "*.j2c");
|
||||
gtk_file_filter_add_pattern(gfilter, "*.mip");
|
||||
gtk_file_filter_add_mime_type(gfilter, "image/png");
|
||||
gtk_file_filter_add_pattern(gfilter, "*.tga");
|
||||
std::string filtername = LLTrans::getString("image_files") + "(*.bmp; *.dxt; *.jpg; *.jpeg; *.j2c; *.mip; *.png; *.tga)";
|
||||
add_common_filters_to_gtkchooser(gfilter, picker, filtername);
|
||||
return filtername;
|
||||
}
|
||||
|
||||
static std::string add_script_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
return add_simple_mime_filter_to_gtkchooser(picker, "text/plain",
|
||||
@@ -1497,6 +1524,10 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
|
||||
caption += add_script_filter_to_gtkchooser(picker);
|
||||
suggest_ext = ".lsl";
|
||||
break;
|
||||
case FFSAVE_IMAGE:
|
||||
caption += add_imagesave_filter_to_gtkchooser(picker);
|
||||
suggest_ext = ".png";
|
||||
break;
|
||||
default:;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -113,6 +113,7 @@ public:
|
||||
FFSAVE_AO = 35,
|
||||
FFSAVE_BLACKLIST = 36,
|
||||
FFSAVE_PHYSICS = 37,
|
||||
FFSAVE_IMAGE = 38,
|
||||
// </edit>
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user