Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git into sunshine
This commit is contained in:
@@ -2,18 +2,6 @@
|
||||
|
||||
include(Linking)
|
||||
|
||||
if(INSTALL_PROPRIETARY)
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(fmodex)
|
||||
endif(INSTALL_PROPRIETARY)
|
||||
|
||||
find_library(FMODEX_LIBRARY
|
||||
NAMES fmodex fmodexL fmodex_vc fmodexL_vc
|
||||
PATHS
|
||||
optimized ${ARCH_PREBUILT_DIRS_RELEASE}
|
||||
debug ${ARCH_PREBUILT_DIRS_DEBUG}
|
||||
)
|
||||
|
||||
if (NOT FMODEX_LIBRARY)
|
||||
set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.")
|
||||
if (FMODEX_SDK_DIR)
|
||||
@@ -21,19 +9,19 @@ if (NOT FMODEX_LIBRARY)
|
||||
find_library(FMODEX_LIBRARY
|
||||
fmodex_vc fmodexL_vc fmodex fmodexL
|
||||
PATHS
|
||||
${FMODEX_SDK_DIR}/api/lib
|
||||
${FMODEX_SDK_DIR}/api
|
||||
${FMODEX_SDK_DIR}/lib
|
||||
${FMODEX_SDK_DIR}
|
||||
"${FMODEX_SDK_DIR}/api/lib"
|
||||
"${FMODEX_SDK_DIR}/api"
|
||||
"${FMODEX_SDK_DIR}/lib"
|
||||
"${FMODEX_SDK_DIR}"
|
||||
)
|
||||
elseif(WORD_SIZE EQUAL 64)
|
||||
find_library(FMODEX_LIBRARY
|
||||
fmodex64 fmodexL64
|
||||
PATHS
|
||||
${FMODEX_SDK_DIR}/api/lib
|
||||
${FMODEX_SDK_DIR}/api
|
||||
${FMODEX_SDK_DIR}/lib
|
||||
${FMODEX_SDK_DIR}
|
||||
"${FMODEX_SDK_DIR}/api/lib"
|
||||
"${FMODEX_SDK_DIR}/api"
|
||||
"${FMODEX_SDK_DIR}/lib"
|
||||
"${FMODEX_SDK_DIR}"
|
||||
)
|
||||
endif(WORD_SIZE EQUAL 32)
|
||||
endif(FMODEX_SDK_DIR)
|
||||
@@ -42,24 +30,24 @@ if (NOT FMODEX_LIBRARY)
|
||||
find_library(FMODEX_LIBRARY
|
||||
fmodex_vc fmodexL_vc
|
||||
PATHS
|
||||
${FMODEX_PROG_DIR}/api/lib
|
||||
${FMODEX_PROG_DIR}/api
|
||||
${FMODEX_PROG_DIR}
|
||||
"${FMODEX_PROG_DIR}/api/lib"
|
||||
"${FMODEX_PROG_DIR}/api"
|
||||
"${FMODEX_PROG_DIR}"
|
||||
)
|
||||
if(FMODEX_LIBRARY)
|
||||
message(STATUS "Found fmodex in ${FMODEX_PROG_DIR}")
|
||||
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR})
|
||||
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR} CACHE PATH "Path to the FMOD Ex SDK." FORCE)
|
||||
set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}")
|
||||
set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}" CACHE PATH "Path to the FMOD Ex SDK." FORCE)
|
||||
endif(FMODEX_LIBRARY)
|
||||
endif(WINDOWS AND NOT FMODEX_LIBRARY)
|
||||
endif (NOT FMODEX_LIBRARY)
|
||||
|
||||
find_path(FMODEX_INCLUDE_DIR fmod.hpp
|
||||
${LIBS_PREBUILT_DIR}/include/fmodex
|
||||
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex
|
||||
${FMODEX_SDK_DIR}/api/inc
|
||||
${FMODEX_SDK_DIR}/inc
|
||||
${FMODEX_SDK_DIR}
|
||||
"${LIBS_PREBUILT_DIR}/include/fmodex"
|
||||
"${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex"
|
||||
"${FMODEX_SDK_DIR}/api/inc"
|
||||
"${FMODEX_SDK_DIR}/inc"
|
||||
"${FMODEX_SDK_DIR}"
|
||||
)
|
||||
|
||||
if(DARWIN)
|
||||
|
||||
@@ -703,15 +703,15 @@ static void j2k_read_cox(opj_j2k_t *j2k, int compno) {
|
||||
/* If user wants to remove more resolutions than the codestream contains, return error*/
|
||||
if (cp->reduce >= tccp->numresolutions) {
|
||||
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions to remove is higher than the number "
|
||||
"of resolutions of this component\nModify the cp_reduce parameter.\n\n", compno);
|
||||
"of resolutions of this component\nModify the cp_reduce parameter.\n\n", compno);
|
||||
j2k->state |= J2K_STATE_ERR;
|
||||
}
|
||||
if( tccp->numresolutions > J2K_MAXRLVLS ) {
|
||||
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions is too big: %d vs max= %d. Truncating.\n\n",
|
||||
compno, tccp->numresolutions, J2K_MAXRLVLS);
|
||||
if( tccp->numresolutions > J2K_MAXRLVLS ) {
|
||||
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error decoding component %d.\nThe number of resolutions is too big: %d vs max= %d. Truncating.\n\n",
|
||||
compno, tccp->numresolutions, J2K_MAXRLVLS);
|
||||
j2k->state |= J2K_STATE_ERR;
|
||||
tccp->numresolutions = J2K_MAXRLVLS;
|
||||
}
|
||||
tccp->numresolutions = J2K_MAXRLVLS;
|
||||
}
|
||||
|
||||
tccp->cblkw = cio_read(cio, 1) + 2; /* SPcox (E) */
|
||||
tccp->cblkh = cio_read(cio, 1) + 2; /* SPcox (F) */
|
||||
@@ -1516,25 +1516,7 @@ static void j2k_read_sod(opj_j2k_t *j2k) {
|
||||
|
||||
if (len == cio_numbytesleft(cio) + 1) {
|
||||
truncate = 1; /* Case of a truncate codestream */
|
||||
}
|
||||
|
||||
{/* chop padding bytes: */
|
||||
unsigned char *s, *e;
|
||||
|
||||
s = cio_getbp(cio);
|
||||
e = s + len;
|
||||
|
||||
if(len > 8) s = e - 8;
|
||||
|
||||
if(e[-2] == 0x00 && e[-1] == 0x00) /* padding bytes */
|
||||
{
|
||||
while(e > s)
|
||||
{
|
||||
if(e[-2] == 0xff && e[-1] == 0xd9) break;
|
||||
--len; --e; truncate = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data = j2k->tile_data[curtileno];
|
||||
data = (unsigned char*) opj_realloc(data, (j2k->tile_len[curtileno] + len) * sizeof(unsigned char));
|
||||
@@ -1935,15 +1917,9 @@ opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestream_info_t *c
|
||||
#endif /* USE_JPWL */
|
||||
|
||||
if (id >> 8 != 0xff) {
|
||||
if(cio_numbytesleft(cio) != 0) /* not end of file reached and no EOC */
|
||||
{
|
||||
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
opj_image_destroy(image);
|
||||
return 0;
|
||||
}
|
||||
opj_event_msg(cinfo, EVT_WARNING, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
j2k->state = J2K_STATE_NEOC;
|
||||
break;
|
||||
opj_image_destroy(image);
|
||||
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
return 0;
|
||||
}
|
||||
e = j2k_dec_mstab_lookup(id);
|
||||
/* Check if the marker is known*/
|
||||
@@ -2037,15 +2013,9 @@ opj_image_t* j2k_decode_jpt_stream(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestre
|
||||
|
||||
id = cio_read(cio, 2);
|
||||
if (id >> 8 != 0xff) {
|
||||
if(cio_numbytesleft(cio) != 0) /* no end of file reached and no EOC */
|
||||
{
|
||||
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
opj_image_destroy(image);
|
||||
return 0;
|
||||
}
|
||||
opj_event_msg(cinfo, EVT_WARNING, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
j2k->state = J2K_STATE_NEOC;
|
||||
break;
|
||||
opj_image_destroy(image);
|
||||
opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
|
||||
return 0;
|
||||
}
|
||||
e = j2k_dec_mstab_lookup(id);
|
||||
if (!(j2k->state & e->states)) {
|
||||
|
||||
@@ -1091,14 +1091,27 @@ static double t1_getwmsedec(
|
||||
int numcomps,
|
||||
int mct)
|
||||
{
|
||||
double w1, w2, wmsedec;
|
||||
double w1 = 1, w2, wmsedec;
|
||||
|
||||
// Prevent running an MCT on more than 3 components. NB openjpeg v2.0 will support this via
|
||||
// custom MCT tables that can be passed as encode parameters, 1.3 cannot support this as it
|
||||
// uses a static table of 3 entries and there for can only cope with 3 components with out an
|
||||
// array overflow
|
||||
|
||||
if(numcomps==3) {
|
||||
if (qmfbid == 1) {
|
||||
w1 = (numcomps > 1) ? mct_getnorm(compno) : 1.0;
|
||||
} else {
|
||||
w1 = (numcomps > 1) ? mct_getnorm_real(compno) : 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
if (qmfbid == 1) {
|
||||
w1 = (mct && numcomps==3) ? mct_getnorm(compno) : 1.0;
|
||||
w2 = dwt_getnorm(level, orient);
|
||||
} else { /* if (qmfbid == 0) */
|
||||
w1 = (mct && numcomps==3) ? mct_getnorm_real(compno) : 1.0;
|
||||
w2 = dwt_getnorm_real(level, orient);
|
||||
}
|
||||
|
||||
wmsedec = w1 * w2 * stepsize * (1 << bpno);
|
||||
wmsedec *= wmsedec * nmsedec / 8192.0;
|
||||
|
||||
|
||||
@@ -1418,15 +1418,20 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
|
||||
int numres2decode;
|
||||
|
||||
if (tcd->cp->reduce != 0) {
|
||||
if ( tile->comps[compno].numresolutions < ( tcd->cp->reduce - 1 ) ) {
|
||||
if ( tile->comps[compno].numresolutions < ( tcd->cp->reduce - 1 ) ) {
|
||||
opj_event_msg(tcd->cinfo, EVT_ERROR, "Error decoding tile. The number of resolutions to remove [%d+1] is higher than the number "
|
||||
" of resolutions in the original codestream [%d]\nModify the cp_reduce parameter.\n", tcd->cp->reduce, tile->comps[compno].numresolutions);
|
||||
" of resolutions in the original codestream [%d]\nModify the cp_reduce parameter.\n", tcd->cp->reduce, tile->comps[compno].numresolutions);
|
||||
return OPJ_FALSE;
|
||||
}
|
||||
else {
|
||||
tcd->image->comps[compno].resno_decoded =
|
||||
tile->comps[compno].numresolutions - tcd->cp->reduce - 1;
|
||||
}
|
||||
else {
|
||||
tcd->image->comps[compno].resno_decoded =
|
||||
tile->comps[compno].numresolutions - tcd->cp->reduce - 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(!tilec->data) {
|
||||
opj_event_msg(tcd->cinfo, EVT_ERROR, "Error decoding tile. null data\n");
|
||||
return OPJ_FALSE;
|
||||
}
|
||||
|
||||
numres2decode = tcd->image->comps[compno].resno_decoded + 1;
|
||||
|
||||
@@ -308,9 +308,10 @@ LLAtomicU32 Stats::llsd_body_count;
|
||||
LLAtomicU32 Stats::llsd_body_parse_error;
|
||||
LLAtomicU32 Stats::raw_body_count;
|
||||
|
||||
// Called from BufferedCurlEasyRequest::setStatusAndReason.
|
||||
// The only allowed values for 'status' are S <= status < S+20, where S={100,200,300,400,500}.
|
||||
U32 Stats::status2index(U32 status)
|
||||
{
|
||||
llassert_always(status >= 100 && status < 600 && (status % 100) < 20); // Max value 519.
|
||||
return (status - 100) / 100 * 20 + status % 100; // Returns 0..99 (for status 100..519).
|
||||
}
|
||||
|
||||
|
||||
@@ -2268,7 +2268,11 @@ void BufferedCurlEasyRequest::setStatusAndReason(U32 status, std::string const&
|
||||
{
|
||||
mStatus = status;
|
||||
mReason = reason;
|
||||
AICurlInterface::Stats::status_count[AICurlInterface::Stats::status2index(mStatus)]++;
|
||||
if (status >= 100 && status < 600 && (status % 100) < 20)
|
||||
{
|
||||
// Only count statistic for sane values.
|
||||
AICurlInterface::Stats::status_count[AICurlInterface::Stats::status2index(mStatus)]++;
|
||||
}
|
||||
|
||||
// Sanity check. If the server replies with a redirect status then we better have that option turned on!
|
||||
if ((status >= 300 && status < 400) && mResponder && !mResponder->redirect_status_ok())
|
||||
@@ -2419,23 +2423,31 @@ size_t BufferedCurlEasyRequest::curlHeaderCallback(char* data, size_t size, size
|
||||
std::string::iterator pos2 = std::find(pos1, end, ' ');
|
||||
if (pos2 != end) ++pos2;
|
||||
std::string::iterator pos3 = std::find(pos2, end, '\r');
|
||||
U32 status;
|
||||
U32 status = 0;
|
||||
std::string reason;
|
||||
if (pos3 != end && std::isdigit(*pos1))
|
||||
{
|
||||
status = atoi(&header_line[pos1 - begin]);
|
||||
reason.assign(pos2, pos3);
|
||||
}
|
||||
else
|
||||
if (!(status >= 100 && status < 600 && (status % 100) < 20)) // Sanity check on the decoded status.
|
||||
{
|
||||
if (status == 0)
|
||||
{
|
||||
reason = "Header parse error.";
|
||||
llwarns << "Received broken header line from server: \"" << header << "\"" << llendl;
|
||||
}
|
||||
else
|
||||
{
|
||||
reason = "Unexpected HTTP status.";
|
||||
llwarns << "Received unexpected status value from server (" << status << "): \"" << header << "\"" << llendl;
|
||||
}
|
||||
// Either way, this status value is not understood (or taken into account).
|
||||
// Set it to internal error so that the rest of code treats it as an error.
|
||||
status = HTTP_INTERNAL_ERROR;
|
||||
reason = "Header parse error.";
|
||||
llwarns << "Received broken header line from server: \"" << header << "\"" << llendl;
|
||||
}
|
||||
{
|
||||
self_w->received_HTTP_header();
|
||||
self_w->setStatusAndReason(status, reason);
|
||||
}
|
||||
self_w->received_HTTP_header();
|
||||
self_w->setStatusAndReason(status, reason);
|
||||
return header_len;
|
||||
}
|
||||
|
||||
|
||||
@@ -1507,7 +1507,6 @@ DECL_LLCC(S32, (S32)-666);
|
||||
DECL_LLCC(F32, (F32)-666.666);
|
||||
DECL_LLCC(bool, true);
|
||||
DECL_LLCC(BOOL, FALSE);
|
||||
static LLCachedControl<std::string> mySetting_string("TestCachedControlstring", "Default String Value");
|
||||
DECL_LLCC(LLVector3, LLVector3(1.0f, 2.0f, 3.0f));
|
||||
DECL_LLCC(LLVector3d, LLVector3d(6.0f, 5.0f, 4.0f));
|
||||
DECL_LLCC(LLRect, LLRect(0, 0, 100, 500));
|
||||
@@ -1517,10 +1516,11 @@ DECL_LLCC(LLColor3, LLColor3(1.0f, 0.f, 0.5f));
|
||||
LLSD test_llsd = LLSD()["testing1"] = LLSD()["testing2"];
|
||||
DECL_LLCC(LLSD, test_llsd);
|
||||
|
||||
static LLCachedControl<std::string> test_BrowserHomePage("BrowserHomePage", "hahahahahha", "Not the real comment");
|
||||
|
||||
void test_cached_control()
|
||||
{
|
||||
static const LLCachedControl<std::string> mySetting_string("TestCachedControlstring", "Default String Value");
|
||||
static const LLCachedControl<std::string> test_BrowserHomePage("BrowserHomePage", "hahahahahha", "Not the real comment");
|
||||
|
||||
#define TEST_LLCC(T, V) if((T)mySetting_##T != V) llerrs << "Fail "#T << llendl; \
|
||||
mySetting_##T = V;\
|
||||
if((T)mySetting_##T != V) llerrs << "Fail "#T << "Pass # 2" << llendl;
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
|
||||
<key>MoyMiniMapCustomColor</key>
|
||||
<key>MoyMiniMapCustomColor</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Custom minimap color you wish to have.</string>
|
||||
@@ -256,6 +256,20 @@
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<!--TODO: implement this and make MoyMiniMapCustomColor more flexible
|
||||
<key>ColorCustomChat</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Color chat from users you have chosen using MoyMiniMapCustomColor</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
<key>IsCOA</key>
|
||||
<integer>1</integer>
|
||||
</map-->
|
||||
<key>AscentReportClientUUID</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -357,22 +357,6 @@
|
||||
<string>This is an autoresponse!</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>MoyMiniMapCustomColor</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Custom minimap color you wish to have.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Color4</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>0.375</real>
|
||||
<real>1.0</real>
|
||||
<real>1.0</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<!-- Ascent Account-Specific (Always) -->
|
||||
<!-- General additions -->
|
||||
<key>rkeastInventoryPreviousCount</key>
|
||||
|
||||
@@ -212,11 +212,12 @@ void LLPrefsAscentVan::refreshValues()
|
||||
mEstateOwnerColor = gSavedSettings.getColor4("AscentEstateOwnerColor");
|
||||
mLindenColor = gSavedSettings.getColor4("AscentLindenColor");
|
||||
mMutedColor = gSavedSettings.getColor4("AscentMutedColor");
|
||||
//mCustomColor = gSavedSettings.getColor4("MoyMiniMapCustomColor");
|
||||
mCustomColor = gSavedSettings.getColor4("MoyMiniMapCustomColor");
|
||||
mColorFriendChat = gSavedSettings.getBOOL("ColorFriendChat");
|
||||
mColorEOChat = gSavedSettings.getBOOL("ColorEstateOwnerChat");
|
||||
mColorLindenChat = gSavedSettings.getBOOL("ColorLindenChat");
|
||||
mColorMutedChat = gSavedSettings.getBOOL("ColorMutedChat");
|
||||
// mColorCustomChat = gSavedSettings.getBOOL("ColorCustomChat");
|
||||
|
||||
//Body Dynamics --------------------------------------------------------------------------
|
||||
mBreastPhysicsToggle = gSavedSettings.getBOOL("EmeraldBreastPhysicsToggle");
|
||||
@@ -294,11 +295,12 @@ void LLPrefsAscentVan::cancel()
|
||||
gSavedSettings.setColor4("AscentEstateOwnerColor", mEstateOwnerColor);
|
||||
gSavedSettings.setColor4("AscentLindenColor", mLindenColor);
|
||||
gSavedSettings.setColor4("AscentMutedColor", mMutedColor);
|
||||
// gSavedSettings.setColor4("MoyMiniMapCustomColor", mCustomColor);
|
||||
gSavedSettings.setColor4("MoyMiniMapCustomColor", mCustomColor);
|
||||
gSavedSettings.setBOOL("ColorFriendChat", mColorFriendChat);
|
||||
gSavedSettings.setBOOL("ColorEstateOwnerChat", mColorEOChat);
|
||||
gSavedSettings.setBOOL("ColorLindenChat", mColorLindenChat);
|
||||
gSavedSettings.setBOOL("ColorMutedChat", mColorMutedChat);
|
||||
// gSavedSettings.setBOOL("ColorCustomChat", mColorCustomChat);
|
||||
|
||||
//Body Dynamics --------------------------------------------------------------------------
|
||||
gSavedSettings.setBOOL("EmeraldBreastPhysicsToggle", mBreastPhysicsToggle);
|
||||
|
||||
@@ -82,10 +82,12 @@ protected:
|
||||
LLColor4 mEstateOwnerColor;
|
||||
LLColor4 mLindenColor;
|
||||
LLColor4 mMutedColor;
|
||||
LLColor4 mCustomColor;
|
||||
bool mColorFriendChat;
|
||||
bool mColorEOChat;
|
||||
bool mColorLindenChat;
|
||||
bool mColorMutedChat;
|
||||
// bool mColorCustomChat;
|
||||
//Body Dynamics
|
||||
BOOL mBreastPhysicsToggle;
|
||||
F32 mBoobMass;
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "llviewerobject.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llresmgr.h"
|
||||
|
||||
#include "llbutton.h"
|
||||
#include "lldir.h"
|
||||
#include "llnotificationsutil.h"
|
||||
@@ -207,8 +208,7 @@ BOOL LLFloaterScriptQueue::start()
|
||||
args["[COUNT]"] = llformat ("%d", mObjectIDs.count());
|
||||
buffer = getString ("Starting", args);
|
||||
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
|
||||
list->setCommentText(buffer);
|
||||
getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM);
|
||||
|
||||
return nextObject();
|
||||
}
|
||||
@@ -240,12 +240,9 @@ BOOL LLFloaterScriptQueue::nextObject()
|
||||
} while((mObjectIDs.count() > 0) && !successful_start);
|
||||
if(isDone() && !mDone)
|
||||
{
|
||||
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
|
||||
|
||||
mDone = TRUE;
|
||||
list->setCommentText(getString("Done"));
|
||||
childSetEnabled("close",TRUE);
|
||||
mDone = true;
|
||||
getChild<LLScrollListCtrl>("queue output")->addSimpleElement(getString("Done"), ADD_BOTTOM);
|
||||
getChildView("close")->setEnabled(TRUE);
|
||||
}
|
||||
return successful_start;
|
||||
}
|
||||
@@ -283,6 +280,40 @@ BOOL LLFloaterScriptQueue::popNext()
|
||||
/// Class LLFloaterCompileQueue
|
||||
///----------------------------------------------------------------------------
|
||||
|
||||
class LLCompileFloaterUploadQueueSupplier : public LLAssetUploadQueueSupplier
|
||||
{
|
||||
public:
|
||||
|
||||
LLCompileFloaterUploadQueueSupplier(const LLUUID& queue_id) :
|
||||
mQueueId(queue_id)
|
||||
{
|
||||
}
|
||||
|
||||
virtual LLAssetUploadQueue* get() const
|
||||
{
|
||||
LLFloaterCompileQueue* queue = (LLFloaterCompileQueue*) LLFloaterScriptQueue::findInstance(mQueueId);
|
||||
if(NULL == queue)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
return queue->getUploadQueue();
|
||||
}
|
||||
|
||||
virtual void log(std::string message) const
|
||||
{
|
||||
LLFloaterCompileQueue* queue = (LLFloaterCompileQueue*) LLFloaterScriptQueue::findInstance(mQueueId);
|
||||
if(NULL == queue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
queue->getChild<LLScrollListCtrl>("queue output")->addSimpleElement(message, ADD_BOTTOM);
|
||||
}
|
||||
|
||||
private:
|
||||
LLUUID mQueueId;
|
||||
};
|
||||
|
||||
// static
|
||||
LLFloaterCompileQueue* LLFloaterCompileQueue::create(BOOL mono)
|
||||
{
|
||||
@@ -291,48 +322,8 @@ LLFloaterCompileQueue* LLFloaterCompileQueue::create(BOOL mono)
|
||||
LLRect rect = gSavedSettings.getRect("CompileOutputRect");
|
||||
rect.translate(left - rect.mLeft, top - rect.mTop);
|
||||
LLFloaterCompileQueue* new_queue = new LLFloaterCompileQueue("queue", rect);
|
||||
|
||||
class LLCompileFloaterUploadQueueSupplier : public LLAssetUploadQueueSupplier
|
||||
{
|
||||
public:
|
||||
|
||||
LLCompileFloaterUploadQueueSupplier(const LLUUID& queue_id) :
|
||||
mQueueId(queue_id)
|
||||
{
|
||||
}
|
||||
|
||||
virtual LLAssetUploadQueue* get() const
|
||||
{
|
||||
LLFloaterCompileQueue* queue =
|
||||
(LLFloaterCompileQueue*) LLFloaterScriptQueue::findInstance(mQueueId);
|
||||
|
||||
if(NULL == queue)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return queue->mUploadQueue;
|
||||
}
|
||||
|
||||
virtual void log(std::string message) const
|
||||
{
|
||||
LLFloaterCompileQueue* queue =
|
||||
(LLFloaterCompileQueue*) LLFloaterScriptQueue::findInstance(mQueueId);
|
||||
|
||||
if(NULL == queue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLScrollListCtrl* list = queue->getChild<LLScrollListCtrl>("queue output");
|
||||
list->setCommentText(message.c_str());
|
||||
}
|
||||
|
||||
private:
|
||||
LLUUID mQueueId;
|
||||
};
|
||||
|
||||
new_queue->mUploadQueue = new LLAssetUploadQueue(new LLCompileFloaterUploadQueueSupplier(new_queue->getID()));
|
||||
new_queue->mUploadQueue = new LLAssetUploadQueue(new LLCompileFloaterUploadQueueSupplier(new_queue->getID()));
|
||||
new_queue->mMono = mono;
|
||||
new_queue->open();
|
||||
return new_queue;
|
||||
@@ -414,8 +405,8 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
|
||||
llinfos << "LLFloaterCompileQueue::scriptArrived()" << llendl;
|
||||
LLScriptQueueData* data = (LLScriptQueueData*)user_data;
|
||||
if(!data) return;
|
||||
LLFloaterCompileQueue* queue = static_cast<LLFloaterCompileQueue*>
|
||||
(LLFloaterScriptQueue::findInstance(data->mQueueID));
|
||||
LLFloaterCompileQueue* queue = static_cast<LLFloaterCompileQueue*> (LLFloaterScriptQueue::findInstance(data->mQueueID));
|
||||
|
||||
std::string buffer;
|
||||
if(queue && (0 == status))
|
||||
{
|
||||
@@ -519,8 +510,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
|
||||
}
|
||||
if(queue && (buffer.size() > 0))
|
||||
{
|
||||
LLScrollListCtrl* list = queue->getChild<LLScrollListCtrl>("queue output");
|
||||
list->setCommentText(buffer);
|
||||
queue->getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM);
|
||||
}
|
||||
delete data;
|
||||
}
|
||||
@@ -543,8 +533,7 @@ void LLFloaterCompileQueue::onSaveBytecodeComplete(const LLUUID& asset_id, void*
|
||||
{
|
||||
llinfos << "LLFloaterCompileQueue::onSaveBytecodeComplete()" << llendl;
|
||||
LLCompileQueueData* data = (LLCompileQueueData*)user_data;
|
||||
LLFloaterCompileQueue* queue = static_cast<LLFloaterCompileQueue*>
|
||||
(LLFloaterScriptQueue::findInstance(data->mQueueID));
|
||||
LLFloaterCompileQueue* queue = static_cast<LLFloaterCompileQueue*> (LLFloaterScriptQueue::findInstance(data->mQueueID));
|
||||
if(queue && (0 == status) && data)
|
||||
{
|
||||
queue->saveItemByItemID(data->mItemId);
|
||||
@@ -692,7 +681,7 @@ void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
// find all of the lsl, leaving off duplicates. We'll remove
|
||||
// all matching asset uuids on compilation success.
|
||||
LLDynamicArray<const char*> names;
|
||||
|
||||
|
||||
LLInventoryObject::object_list_t::const_iterator it = inv->begin();
|
||||
LLInventoryObject::object_list_t::const_iterator end = inv->end();
|
||||
for ( ; it != end; ++it)
|
||||
@@ -704,10 +693,9 @@ void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
if (object)
|
||||
{
|
||||
LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it));
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
|
||||
std::string buffer;
|
||||
buffer = getString("Resetting") + LLTrans::getString(":") + " " + item->getName();
|
||||
list->setCommentText(buffer);
|
||||
getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM);
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_ScriptReset);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
@@ -754,7 +742,7 @@ void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
// find all of the lsl, leaving off duplicates. We'll remove
|
||||
// all matching asset uuids on compilation success.
|
||||
LLDynamicArray<const char*> names;
|
||||
|
||||
|
||||
LLInventoryObject::object_list_t::const_iterator it = inv->begin();
|
||||
LLInventoryObject::object_list_t::const_iterator end = inv->end();
|
||||
for ( ; it != end; ++it)
|
||||
@@ -769,7 +757,7 @@ void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
|
||||
std::string buffer;
|
||||
buffer = getString("Running") + LLTrans::getString(":") + " " + item->getName();
|
||||
list->setCommentText(buffer);
|
||||
list->addSimpleElement(buffer, ADD_BOTTOM);
|
||||
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_SetScriptRunning);
|
||||
@@ -818,7 +806,7 @@ void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
// find all of the lsl, leaving off duplicates. We'll remove
|
||||
// all matching asset uuids on compilation success.
|
||||
LLDynamicArray<const char*> names;
|
||||
|
||||
|
||||
LLInventoryObject::object_list_t::const_iterator it = inv->begin();
|
||||
LLInventoryObject::object_list_t::const_iterator end = inv->end();
|
||||
for ( ; it != end; ++it)
|
||||
@@ -833,8 +821,8 @@ void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj,
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
|
||||
std::string buffer;
|
||||
buffer = getString("NotRunning") + LLTrans::getString(":") + " " + item->getName();
|
||||
list->setCommentText(buffer);
|
||||
|
||||
list->addSimpleElement(buffer, ADD_BOTTOM);
|
||||
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_SetScriptRunning);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
|
||||
@@ -79,7 +79,7 @@ protected:
|
||||
LLInventoryObject::object_list_t* inv,
|
||||
S32 serial_num,
|
||||
void* queue);
|
||||
|
||||
|
||||
// This is called by inventoryChanged
|
||||
virtual void handleInventory(LLViewerObject* viewer_obj,
|
||||
LLInventoryObject::object_list_t* inv) = 0;
|
||||
@@ -105,7 +105,7 @@ protected:
|
||||
// Object Queue
|
||||
LLDynamicArray<LLUUID> mObjectIDs;
|
||||
LLUUID mCurrentObjectID;
|
||||
BOOL mDone;
|
||||
bool mDone;
|
||||
|
||||
LLUUID mID;
|
||||
static LLMap<LLUUID, LLFloaterScriptQueue*> sInstances;
|
||||
@@ -143,6 +143,8 @@ public:
|
||||
// remove any object in mScriptScripts with the matching uuid.
|
||||
void removeItemByItemID(const LLUUID& item_id);
|
||||
|
||||
LLAssetUploadQueue* getUploadQueue() { return mUploadQueue; }
|
||||
|
||||
protected:
|
||||
LLFloaterCompileQueue(const std::string& name, const LLRect& rect);
|
||||
virtual ~LLFloaterCompileQueue();
|
||||
@@ -200,12 +202,10 @@ public:
|
||||
protected:
|
||||
LLFloaterResetQueue(const std::string& name, const LLRect& rect);
|
||||
virtual ~LLFloaterResetQueue();
|
||||
|
||||
|
||||
// This is called by inventoryChanged
|
||||
virtual void handleInventory(LLViewerObject* viewer_obj,
|
||||
LLInventoryObject::object_list_t* inv);
|
||||
|
||||
protected:
|
||||
LLInventoryObject::object_list_t* inv);
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -224,12 +224,10 @@ public:
|
||||
protected:
|
||||
LLFloaterRunQueue(const std::string& name, const LLRect& rect);
|
||||
virtual ~LLFloaterRunQueue();
|
||||
|
||||
|
||||
// This is called by inventoryChanged
|
||||
virtual void handleInventory(LLViewerObject* viewer_obj,
|
||||
LLInventoryObject::object_list_t* inv);
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -252,8 +250,6 @@ protected:
|
||||
// This is called by inventoryChanged
|
||||
virtual void handleInventory(LLViewerObject* viewer_obj,
|
||||
LLInventoryObject::object_list_t* inv);
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
#endif // LL_LLCOMPILEQUEUE_H
|
||||
|
||||
@@ -1064,7 +1064,7 @@ bool idle_startup()
|
||||
gSavedSettings.getControl("_NACL_AntiSpamAmount")->getSignal()->connect(boost::bind(&NACLAntiSpamRegistry::handleNaclAntiSpamAmountChanged, _2));
|
||||
// NaCl End
|
||||
|
||||
//good as place as any to create user windlight directories
|
||||
//good a place as any to create user windlight directories
|
||||
std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
|
||||
LLFile::mkdir(user_windlight_path_name.c_str());
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
|
||||
if (rlv_handler_t::isEnabled())
|
||||
if ( (object) && (rlv_handler_t::isEnabled()) )
|
||||
{
|
||||
if (!gRlvHandler.canEdit(object))
|
||||
{
|
||||
@@ -109,7 +109,7 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi
|
||||
}
|
||||
}
|
||||
|
||||
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && (object) && ((!object->isAttachment()) || (!object->permYouOwner())) &&
|
||||
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && ((!object->isAttachment()) || (!object->permYouOwner())) &&
|
||||
(dist_vec_squared(gAgent.getPositionAgent(), object->getPositionRegion()) > 1.5f * 1.5f) )
|
||||
{
|
||||
// NOTE-RLVa: see behaviour notes for a rather lengthy explanation of why we're doing things this way
|
||||
|
||||
@@ -280,8 +280,8 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
|
||||
{
|
||||
// This warning will always trigger if you've hacked the avatar to show as incomplete.
|
||||
// Ignore the warning if that's the case.
|
||||
static const LLCachedControl<bool> rener_unloaded_avatar("RenderUnloadedAvatar");
|
||||
if (!rener_unloaded_avatar)
|
||||
static const LLCachedControl<bool> render_unloaded_avatar("RenderUnloadedAvatar", false);
|
||||
if (!render_unloaded_avatar)
|
||||
{
|
||||
llwarns << "Layerset without composite" << llendl;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,11 @@
|
||||
|
||||
LLVLManager gVLManager;
|
||||
|
||||
// Extended land layer for Aurora Sim
|
||||
const char AURORA_LAND_LAYER_CODE = 'M';
|
||||
const char AURORA_WIND_LAYER_CODE = '9';
|
||||
const char AURORA_CLOUD_LAYER_CODE = ':';
|
||||
|
||||
LLVLManager::~LLVLManager()
|
||||
{
|
||||
S32 i;
|
||||
@@ -56,15 +61,15 @@ LLVLManager::~LLVLManager()
|
||||
|
||||
void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size)
|
||||
{
|
||||
if (LAND_LAYER_CODE == vl_datap->mType)
|
||||
if (LAND_LAYER_CODE == vl_datap->mType || AURORA_LAND_LAYER_CODE == vl_datap->mType)
|
||||
{
|
||||
mLandBits += mesg_size * 8;
|
||||
}
|
||||
else if (WIND_LAYER_CODE == vl_datap->mType)
|
||||
else if (WIND_LAYER_CODE == vl_datap->mType || AURORA_WIND_LAYER_CODE == vl_datap->mType)
|
||||
{
|
||||
mWindBits += mesg_size * 8;
|
||||
}
|
||||
else if (CLOUD_LAYER_CODE == vl_datap->mType)
|
||||
else if (CLOUD_LAYER_CODE == vl_datap->mType || AURORA_CLOUD_LAYER_CODE == vl_datap->mType)
|
||||
{
|
||||
mCloudBits += mesg_size * 8;
|
||||
}
|
||||
@@ -93,12 +98,16 @@ void LLVLManager::unpackData(const S32 num_packets)
|
||||
{
|
||||
datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, FALSE);
|
||||
}
|
||||
else if (WIND_LAYER_CODE == datap->mType)
|
||||
else if (AURORA_LAND_LAYER_CODE == datap->mType)
|
||||
{
|
||||
datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, TRUE);
|
||||
}
|
||||
else if (WIND_LAYER_CODE == datap->mType || AURORA_WIND_LAYER_CODE == datap->mType)
|
||||
{
|
||||
datap->mRegionp->mWind.decompress(bit_pack, &goph);
|
||||
|
||||
}
|
||||
else if (CLOUD_LAYER_CODE == datap->mType)
|
||||
else if (CLOUD_LAYER_CODE == datap->mType || AURORA_CLOUD_LAYER_CODE == datap->mType)
|
||||
{
|
||||
#if ENABLE_CLASSIC_CLOUDS
|
||||
datap->mRegionp->mCloudLayer.decompress(bit_pack, &goph);
|
||||
|
||||
@@ -935,12 +935,6 @@ EmeraldGlobalBoobConfig LLVOAvatar::sBoobConfig;
|
||||
static F32 calc_bouncy_animation(F32 x);
|
||||
static U32 calc_shame(LLVOVolume* volume, std::set<LLUUID> &textures);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Debug setting caches.
|
||||
//-----------------------------------------------------------------------------
|
||||
static LLCachedControl<bool> const freeze_time("FreezeTime", false);
|
||||
static LLCachedControl<bool> const render_unloaded_avatar("RenderUnloadedAvatar", false);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLVOAvatar()
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -953,7 +947,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
mAttachmentGeometryBytes(0),
|
||||
mAttachmentSurfaceArea(0.f),
|
||||
mTurning(FALSE),
|
||||
mFreezeTimeLangolier(freeze_time),
|
||||
mFreezeTimeDead(false),
|
||||
mLastSkeletonSerialNum( 0 ),
|
||||
mIsSitting(FALSE),
|
||||
@@ -990,7 +983,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
mSupportsAlphaLayers(FALSE),
|
||||
mLoadedCallbacksPaused(FALSE),
|
||||
mHasPelvisOffset( FALSE ),
|
||||
mRenderUnloadedAvatar(render_unloaded_avatar),
|
||||
mLastRezzedStatus(-1),
|
||||
mFirstSetActualBoobGravRan( false ),
|
||||
mSupportsPhysics( false ),
|
||||
@@ -999,6 +991,9 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
mCCSChatTextOverride(false)
|
||||
// </edit>
|
||||
{
|
||||
static LLCachedControl<bool> const freeze_time("FreezeTime", false);
|
||||
mFreezeTimeLangolier = freeze_time;
|
||||
|
||||
LLMemType mt(LLMemType::MTYPE_AVATAR);
|
||||
//VTResume(); // VTune
|
||||
|
||||
@@ -6659,9 +6654,11 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
|
||||
|
||||
BOOL LLVOAvatar::isFullyLoaded() const
|
||||
{
|
||||
static LLCachedControl<bool> const render_unloaded_avatar("RenderUnloadedAvatar", false);
|
||||
|
||||
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: 2010-09-22 (Catznip-2.2.0a) | Added: Catznip-2.2.0a
|
||||
// Changes to LLAppearanceMgr::updateAppearanceFromCOF() expect this function to actually return mFullyLoaded for gAgentAvatarp
|
||||
if ( (!isSelf()) && (mRenderUnloadedAvatar) )
|
||||
if ( (!isSelf()) && render_unloaded_avatar )
|
||||
return TRUE;
|
||||
else
|
||||
return mFullyLoaded;
|
||||
|
||||
@@ -465,8 +465,6 @@ private:
|
||||
F32 mImpostorDistance;
|
||||
F32 mImpostorPixelArea;
|
||||
LLVector3 mLastAnimExtents[2];
|
||||
|
||||
LLCachedControl<bool> mRenderUnloadedAvatar;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Wind rippling in clothes
|
||||
|
||||
@@ -42,11 +42,13 @@
|
||||
<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.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"/>
|
||||
<check_box bottom_delta="0" control_name="ColorEstateOwnerChat" follows="top" height="20" label="" left_delta="54" name="color_estate_owner_check" width="44" tool_tip="Color Estate Managers Chat"/>
|
||||
<check_box bottom_delta="0" control_name="ColorLindenChat" follows="top" height="20" label="" left_delta="54" name="color_linden_check" width="44" tool_tip="Color Linden Chat"/>
|
||||
<check_box bottom_delta="0" control_name="ColorMutedChat" follows="top" height="20" label="" left_delta="54" name="color_muted_check" width="44" tool_tip="Color Muted Chat"/>
|
||||
<!--check_box bottom_delta="0" control_name="ColorCustomChat" follows="top" height="20" label="" left_delta="54" name="color_custom_check" width="44" tool_tip="Color Custom Chat"/ Not implemented, yet.-->
|
||||
</panel>
|
||||
<panel border="true" left="1" bottom="-190" height="180" width="500" label="Body Dynamics" name="Body Dynamics">
|
||||
<check_box bottom_delta="-25" follows="top" height="16" label="Enable enhanced physics on avatar breasts" left="10" name="EmBreastsToggle" control_name="EmeraldBreastPhysicsToggle" tool_tip="You must hit apply before these controls will activate or deactivate"/>
|
||||
|
||||
Reference in New Issue
Block a user