This commit is contained in:
Siana Gearz
2012-11-12 04:12:57 +01:00
35 changed files with 1935 additions and 225 deletions

View File

@@ -66,7 +66,7 @@ if (EXISTS ${LIBS_CLOSED_DIR}llkdu AND NOT STANDALONE)
add_subdirectory(${LIBS_CLOSED_PREFIX}llkdu)
endif (EXISTS ${LIBS_CLOSED_DIR}llkdu AND NOT STANDALONE)
add_subdirectory(${LIBS_OPEN_PREFIX}lscript)
#add_subdirectory(${LIBS_OPEN_PREFIX}lscript)
if (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
add_subdirectory(${LIBS_CLOSED_PREFIX}copy_win_scripts)

View File

@@ -60,7 +60,7 @@ set(cmake_SOURCE_FILES
LLVFS.cmake
LLWindow.cmake
LLXML.cmake
LScript.cmake
# LScript.cmake
Linking.cmake
NDOF.cmake
OPENAL.cmake

View File

@@ -81,6 +81,33 @@ public:
virtual void traverse(const LLOctreeNode<T>* node);
};
struct OctreeGuard
{
template <typename T>
OctreeGuard(const LLOctreeNode<T>* node)
{mNode = (void*)node;getNodes().push_back(this);}
~OctreeGuard()
{llassert_always(getNodes().back() == this); getNodes().pop_back();}
template <typename T>
static bool checkGuarded(const LLOctreeNode<T>* node)
{
for(std::vector<OctreeGuard*>::const_iterator it=getNodes().begin();it != getNodes().end();++it)
{
if((*it)->mNode == node)
{
OCT_ERRS << "!!! MANIPULATING OCTREE BRANCH DURING ITERATION !!!" << llendl;
return true;
}
}
return false;
}
static std::vector<OctreeGuard*>& getNodes()
{
static std::vector<OctreeGuard*> gNodes;
return gNodes;
}
void* mNode;
};
template <class T>
class LLOctreeNode : public LLTreeNode<T>
{
@@ -246,8 +273,8 @@ public:
U32 getElementCount() const { return mElementCount; }
bool isEmpty() const { return mElementCount == 0; }
element_list& getData() { return mData; }
const element_list& getData() const { return mData; }
//element_list& getData() { return mData; }
//const element_list& getData() const { return mData; }
element_iter getDataBegin() { return mData; }
element_iter getDataEnd() { return mDataEnd; }
const_element_iter getDataBegin() const { return mData; }
@@ -317,6 +344,7 @@ public:
virtual bool insert(T* data)
{
OctreeGuard::checkGuarded(this);
if (data == NULL || data->getBinIndex() != -1)
{
OCT_ERRS << "!!! INVALID ELEMENT ADDED TO OCTREE BRANCH !!!" << llendl;
@@ -433,7 +461,7 @@ public:
void _remove(T* data, S32 i)
{ //precondition -- mElementCount > 0, idx is in range [0, mElementCount)
OctreeGuard::checkGuarded(this);
mElementCount--;
data->setBinIndex(-1);
@@ -463,6 +491,7 @@ public:
bool remove(T* data)
{
OctreeGuard::checkGuarded(this);
S32 i = data->getBinIndex();
if (i >= 0 && i < (S32)mElementCount)
@@ -508,6 +537,7 @@ public:
void removeByAddress(T* data)
{
OctreeGuard::checkGuarded(this);
for (U32 i = 0; i < mElementCount; ++i)
{
if (mData[i] == data)
@@ -527,6 +557,7 @@ public:
void clearChildren()
{
OctreeGuard::checkGuarded(this);
mChildCount = 0;
U32* foo = (U32*) mChildMap;
@@ -587,6 +618,7 @@ public:
OCT_ERRS <<"Octree node has too many children... why?" << llendl;
}
#endif
OctreeGuard::checkGuarded(this);
mChildMap[child->getOctant()] = mChildCount;
@@ -606,6 +638,8 @@ public:
void removeChild(S32 index, BOOL destroy = FALSE)
{
OctreeGuard::checkGuarded(this);
for (U32 i = 0; i < this->getListenerCount(); i++)
{
oct_listener* listener = getOctListener(i);

View File

@@ -48,6 +48,7 @@ extern LLGLSLShader gPostColorFilterProgram;
extern LLGLSLShader gPostNightVisionProgram;
extern LLGLSLShader gPostGaussianBlurProgram;
extern LLGLSLShader gPostPosterizeProgram;
extern LLGLSLShader gPostMotionBlurProgram;
static const unsigned int NOISE_SIZE = 512;
@@ -259,6 +260,55 @@ public:
}
};
class LLMotionShader : public LLPostProcessShader
{
private:
LLShaderSetting<bool> mEnabled;
LLShaderSetting<S32> mStrength;
public:
LLMotionShader() :
mEnabled("enable_motionblur",false),
mStrength("blur_strength",false)
{
mSettings.push_back(&mEnabled);
mSettings.push_back(&mStrength);
}
bool isEnabled() { return mEnabled && gPostMotionBlurProgram.mProgramObject; }
S32 getColorChannel() { return 0; }
S32 getDepthChannel() { return 1; }
QuadType bind()
{
if(!isEnabled())
{
return QUAD_NONE;
}
glh::matrix4f inv_proj(gGLModelView);
inv_proj.mult_left(gGLProjection);
inv_proj = inv_proj.inverse();
glh::matrix4f prev_proj(gGLPreviousModelView);
prev_proj.mult_left(gGLProjection);
LLVector2 screen_rect = LLPostProcess::getInstance()->getDimensions();
gPostMotionBlurProgram.bind();
gPostMotionBlurProgram.uniformMatrix4fv("prev_proj", 1, GL_FALSE, prev_proj.m);
gPostMotionBlurProgram.uniformMatrix4fv("inv_proj", 1, GL_FALSE, inv_proj.m);
gPostMotionBlurProgram.uniform2fv("screen_res", 1, screen_rect.mV);
gPostMotionBlurProgram.uniform1i("blur_strength", mStrength);
return QUAD_NORMAL;
}
bool draw(U32 pass)
{
return pass == 1;
}
void unbind()
{
gPostMotionBlurProgram.unbind();
}
};
LLPostProcess::LLPostProcess(void) :
mVBO(NULL),
mDepthTexture(0),
@@ -269,11 +319,13 @@ LLPostProcess::LLPostProcess(void) :
mSelectedEffectInfo(LLSD::emptyMap()),
mAllEffectInfo(LLSD::emptyMap())
{
mShaders.push_back(new LLMotionShader());
mShaders.push_back(new LLColorFilterShader());
mShaders.push_back(new LLNightVisionShader());
mShaders.push_back(new LLGaussBlurShader());
mShaders.push_back(new LLPosterizeShader());
/* Do nothing. Needs to be updated to use our current shader system, and to work with the move into llrender.*/
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL;

View File

@@ -142,6 +142,9 @@ private:
void drawOrthoQuad(QuadType type); //Finally draws fullscreen quad with the shader currently bound.
public:
LLVector2 getDimensions() { return LLVector2(mScreenWidth,mScreenHeight); }
// UI interaction
// Getters
inline LLSD const & getAllEffectInfo(void) const { return mAllEffectInfo; }

View File

@@ -42,6 +42,7 @@ LLRender gGL;
//Would be best to migrate these to LLMatrix4a and LLVector4a, but that's too divergent right now.
LL_ALIGN_16(F32 gGLModelView[16]);
LL_ALIGN_16(F32 gGLLastModelView[16]);
LL_ALIGN_16(F32 gGLPreviousModelView[16]);
LL_ALIGN_16(F32 gGLLastProjection[16]);
LL_ALIGN_16(F32 gGLProjection[16]);
LL_ALIGN_16(S32 gGLViewport[4]);

View File

@@ -474,6 +474,7 @@ private:
extern F32 gGLModelView[16];
extern F32 gGLLastModelView[16];
extern F32 gGLLastProjection[16];
extern F32 gGLPreviousModelView[16];
extern F32 gGLProjection[16];
extern S32 gGLViewport[4];

View File

@@ -34,7 +34,7 @@ include(LLUI)
include(LLVFS)
include(LLWindow)
include(LLXML)
include(LScript)
#include(LScript)
include(Linking)
include(NDOF)
include(GooglePerfTools)
@@ -69,8 +69,8 @@ include_directories(
${LLVFS_INCLUDE_DIRS}
${LLWINDOW_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
${LSCRIPT_INCLUDE_DIRS}
${LSCRIPT_INCLUDE_DIRS}/lscript_compile
# ${LSCRIPT_INCLUDE_DIRS}
# ${LSCRIPT_INCLUDE_DIRS}/lscript_compile
)
set(viewer_SOURCE_FILES
@@ -1556,7 +1556,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
${LLVFS_LIBRARIES}
${LLWINDOW_LIBRARIES}
${LLXML_LIBRARIES}
${LSCRIPT_LIBRARIES}
# ${LSCRIPT_LIBRARIES}
${LLMATH_LIBRARIES}
${LLCOMMON_LIBRARIES}
${NDOF_LIBRARY}

View File

@@ -0,0 +1,373 @@
<?xml version="1.0"?>
<llsd>
<map>
<!-- REGARDING NON SL-LSL FUNCTIONS (OSSL, aaFunctions, botFunctions) -->
<!-- These additions should be posted underneath the llFunctions -->
<!-- These functions pertain to OpenSimulator and are in no part applicable to SecondLife by Linden Labs -->
<!-- The Current State of these functions are in flux and development is ongoing. Not all the functions are presently -->
<!-- fully documented and therefore the description may be incomplete and require further attention. -->
<!-- OpenSim & Aurora-Sim are written in C# and not CPP therefore some values for example "double = float" etc. are different. -->
<!-- OSSL corrections and syntax additions added + set initially in same order as found in IOSSL_Api.cs of Aurora-Sim & OpenSim Source -->
<!-- updates added @ end of each subsection for update timeline maint. -->
<!-- Updates by WhiteStar Magic -->
<!-- OSSL Functions COMMON to OpenSim & Aurora-Sim -->
<key>osSetDynamicTextureURL</key>
<map/>
<key>osSetDynamicTextureURLBlend</key>
<map/>
<key>osSetDynamicTextureURLBlendFace</key>
<map/>
<key>osSetDynamicTextureData</key>
<map/>
<key>osSetDynamicTextureDataBlend</key>
<map/>
<key>osSetDynamicTextureDataBlendFace</key>
<map/>
<key>osGetTerrainHeight</key>
<map/>
<key>osSetTerrainHeight</key>
<map/>
<key>osTerrainFlush</key>
<map/>
<key>osRegionRestart</key>
<map/>
<key>osRegionNotice</key>
<map/>
<key>osConsoleCommand</key>
<map/>
<key>osSetParcelMediaURL</key>
<map/>
<key>osSetPrimFloatOnWater</key>
<map/>
<key>osSetParcelSIPAddress</key>
<map/>
<key>osGetAgentIP</key>
<map/>
<key>osGetAgents</key>
<map/>
<key>osTeleportAgent</key>
<map/>
<key>osTeleportOwner</key>
<map/>
<key>osAvatarPlayAnimation</key>
<map/>
<key>osAvatarStopAnimation</key>
<map/>
<key>osForceAttachToAvatar</key>
<map/>
<key>osForceDetachFromAvatar</key>
<map/>
<key>osMovePen</key>
<map/>
<key>osDrawLine</key>
<map/>
<key>osDrawText</key>
<map/>
<key>osDrawEllipse</key>
<map/>
<key>osDrawRectangle</key>
<map/>
<key>osDrawFilledRectangle</key>
<map/>
<key>osDrawPolygon</key>
<map/>
<key>osDrawFilledPolygon</key>
<map/>
<key>osSetFontSize</key>
<map/>
<key>osSetFontName</key>
<map/>
<key>osSetPenSize</key>
<map/>
<key>osSetPenColor</key>
<map/>
<key>osSetPenCap</key>
<map/>
<key>osDrawImage</key>
<map/>
<key>osGetDrawStringSize</key>
<map/>
<key>osList2Double</key>
<map/>
<key>osSetRegionWaterHeight</key>
<map/>
<key>osSetRegionSunSettings</key>
<map/>
<key>osSetEstateSunSettings</key>
<map/>
<key>osGetCurrentSunHour</key>
<map/>
<key>osGetSunParam</key>
<map/>
<key>osSetSunParam</key>
<map/>
<key>osWindActiveModelPluginName</key>
<map/>
<key>osSetWindParam</key>
<map/>
<key>osGetWindParam</key>
<map/>
<key>osParcelJoin</key>
<map/>
<key>osParcelSubdivide</key>
<map/>
<key>osSetParcelDetails</key>
<map/>
<key>osGetScriptEngineName</key>
<map/>
<key>osGetSimulatorVersion</key>
<map/>
<key>osParseJSON</key>
<map/>
<key>osParseJSONNew</key>
<map/>
<key>osMessageObject</key>
<map/>
<key>osMakeNotecard</key>
<map/>
<key>osGetNotecardLine</key>
<map/>
<key>osGetNotecard</key>
<map/>
<key>osGetNumberOfNotecardLines</key>
<map/>
<key>osAvatarName2Key</key>
<map/>
<key>osKey2Name</key>
<map/>
<key>osGetGridNick</key>
<map/>
<key>osGetGridName</key>
<map/>
<key>osGetGridLoginURI</key>
<map/>
<key>osGetGridHomeURI</key>
<map/>
<key>osGetGridGatekeeperURI</key>
<map/>
<key>osGetGridCustom</key>
<map/>
<key>osFormatString</key>
<map/>
<key>osMatchString</key>
<map/>
<key>osReplaceString</key>
<map/>
<key>osLoadedCreationDate</key>
<map/>
<key>osLoadedCreationTime</key>
<map/>
<key>osLoadedCreationID</key>
<map/>
<key>osGetLinkPrimitiveParams</key>
<map/>
<key>osGetMapTexture</key>
<map/>
<key>osGetRegionMapTexture</key>
<map/>
<key>osGetRegionStats</key>
<map/>
<key>osGetSimulatorMemory</key>
<map/>
<key>osKickAvatar</key>
<map/>
<key>osSetSpeed</key>
<map/>
<key>osCauseDamage</key>
<map/>
<key>osCauseHealing</key>
<map/>
<key>osGetPrimitiveParams</key>
<map/>
<key>osSetPrimitiveParams</key>
<map/>
<key>osSetProjectionParams</key>
<map/>
<key>osGetAvatarList</key>
<map/>
<key>osUnixTimeToTimestamp</key>
<map/>
<key>osGetInventoryDesc</key>
<map/>
<key>osInviteToGroup</key>
<map/>
<key>osEjectFromGroup</key>
<map/>
<key>osSetTerrainTexture</key>
<map/>
<key>osSetTerrainTextureHeight</key>
<map/>
<!-- OSSL Functions OpenSim Unique -->
<key>osSetStateEvents</key>
<map/>
<key>osIsNpc</key>
<map/>
<key>osNpcCreate</key>
<map/>
<key>osNpcSaveAppearance</key>
<map/>
<key>osNpcLoadAppearance</key>
<map/>
<key>osNpcGetPos</key>
<map/>
<key>osNpcMoveTo</key>
<map/>
<key>osNpcMoveToTarget</key>
<map/>
<key>osNpcGetOwner</key>
<map/>
<key>osNpcGetRot</key>
<map/>
<key>osNpcSetRot</key>
<map/>
<key>osNpcStopMoveToTarget</key>
<map/>
<key>osNpcSay</key>
<map/>
<key>osNpcSay</key>
<map/>
<key>osNpcSit</key>
<map/>
<key>osNpcStand</key>
<map/>
<key>osNpcRemove</key>
<map/>
<key>osNpcPlayAnimation</key>
<map/>
<key>osNpcStopAnimation</key>
<map/>
<key>osOwnerSaveAppearance</key>
<map/>
<key>osAgentSaveAppearance</key>
<map/>
<key>osNpcShout</key>
<map/>
<key>osNpcWhisper</key>
<map/>
<!-- OSSL Functions Aurora-Sim Unique -->
<key>osReturnObject</key>
<map/>
<key>osReturnObjects</key>
<map/>
<key>osShutDown</key>
<map/>
<key>osAddAgentToGroup</key>
<map/>
<key>osRezObject</key>
<map/>
<!-- LightShare functions (Careminster Variant) -->
<key>cmSetWindlightScene</key>
<map/>
<key>cmSetWindlightSceneTargeted</key>
<map/>
<key>cmGetWindlightScene</key>
<map/>
<!-- LightShare functions - alternate versions (os & aa variant) -->
<key>lsSetWindlightScene</key>
<map/>
<key>lsSetWindlightSceneTargeted</key>
<map/>
<key>lsGetWindlightScene</key>
<map/>
<!-- aaFunctions Aurora-Sim ONLY -->
<key>aaSetCloudDensity</key>
<map/>
<key>aaUpdateDatabase</key>
<map/>
<key>aaQueryDatabase</key>
<map/>
<key>aaDeserializeXMLValues</key>
<map/>
<key>aaDeserializeXMLKeys</key>
<map/>
<key>aaSetConeOfSilence</key>
<map/>
<key>aaSerializeXML</key>
<map/>
<key>aaGetTeam</key>
<map/>
<key>aaGetHealth</key>
<map/>
<key>aaJoinCombat</key>
<map/>
<key>aaLeaveCombat</key>
<map/>
<key>aaJoinCombatTeam</key>
<map/>
<key>aaRequestCombatPermission</key>
<map/>
<key>aaThawAvatar</key>
<map/>
<key>aaFreezeAvatar</key>
<map/>
<key>aaGetTeamMembers</key>
<map/>
<key>aaGetLastOwner</key>
<map/>
<key>aaSayDistance</key>
<map/>
<key>aaSayTo</key>
<map/>
<key>aaGetWalkDisabled</key>
<map/>
<key>aaSetWalkDisabled</key>
<map/>
<key>aaGetFlyDisabled</key>
<map/>
<key>aaSetFlyDisabled</key>
<map/>
<key>aaAvatarFullName2Key</key>
<map/>
<key>aaRaiseError</key>
<map/>
<key>aaGetText</key>
<map/>
<key>aaGetTextColor</key>
<map/>
<key>aaSetEnv</key>
<map/>
<key>aaGetIsInfiniteRegion</key>
<map/>
<!-- botFunctions Aurora-Sim ONLY -->
<key>botGetWaitingTime</key>
<map/>
<key>botSetMap</key>
<map/>
<key>botCreateBot</key>
<map/>
<key>botRemoveBot</key>
<map/>
<key>botPauseMovement</key>
<map/>
<key>botResumeMovement</key>
<map/>
<key>botFollowAvatar</key>
<map/>
<key>botStopFollowAvatar</key>
<map/>
<key>botSendChatMessage</key>
<map/>
<key>botSendIM</key>
<map/>
<key>botSetShouldFly</key>
<map/>
<key>botSitObject</key>
<map/>
<key>botStandUp</key>
<map/>
<key>botTouchObject</key>
<map/>
<key>botAddTag</key>
<map/>
<key>botGetBotsWithTag</key>
<map/>
<key>botRemoveBotsWithTag</key>
<map/>
</map>
</llsd>

File diff suppressed because it is too large Load Diff

View File

@@ -973,6 +973,17 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>AntiSpamGroupFeeInvites</key>
<map>
<key>Comment</key>
<string>When true, dialogs from group invites that require an entry fee will be blocked.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AntiSpamGroupNotices</key>
<map>
<key>Comment</key>

View File

@@ -0,0 +1,55 @@
/**
* @file colorFilterF.glsl
*
* Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
* $License$
*/
#extension GL_ARB_texture_rectangle : enable
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
#define frag_color gl_FragColor
#endif
uniform sampler2DRect tex0;
uniform sampler2DRect tex1;
uniform mat4 inv_proj;
uniform mat4 prev_proj;
uniform vec2 screen_res;
uniform int blur_strength;
VARYING vec2 vary_texcoord0;
#define SAMPLE_COUNT 10
vec4 getPosition(vec2 pos_screen, out vec4 ndc)
{
float depth = texture2DRect(tex1, pos_screen.xy).r;
vec2 sc = pos_screen.xy*2.0;
sc /= screen_res;
sc -= vec2(1.0,1.0);
ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
vec4 pos = inv_proj * ndc;
pos /= pos.w;
pos.w = 1.0;
return pos;
}
void main(void)
{
vec4 ndc;
vec4 pos = getPosition(vary_texcoord0,ndc);
vec4 prev_pos = prev_proj * pos;
prev_pos/=prev_pos.w;
prev_pos.w = 1.0;
vec2 vel = ((ndc.xy-prev_pos.xy) * .5) * screen_res * .001 * blur_strength;
vec3 color = texture2DRect(tex0, vary_texcoord0.st).rgb;
vec2 texcoord = vary_texcoord0 + vel;
for(int i = 1; i < SAMPLE_COUNT; ++i, texcoord += vel)
{
color += texture2DRect(tex0, texcoord.st).rgb;
}
frag_color = vec4(color / SAMPLE_COUNT, 1.0);
}

View File

@@ -175,6 +175,8 @@
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<boolean>0</boolean>
<key>gauss_blur_passes</key>
<integer>2</integer>
@@ -190,6 +192,8 @@
<real>1</real>
<key>posterize_layers</key>
<real>10</real>
<key>blur_strength</key>
<real>10</real>
</map>
</map>
</llsd>

View File

@@ -367,6 +367,7 @@ void LLPrefsAscentChat::refreshValues()
mBlockAlertSpam = gSavedSettings.getBOOL("AntiSpamAlerts");
mBlockFriendSpam = gSavedSettings.getBOOL("AntiSpamFriendshipOffers");
mBlockGroupInviteSpam = gSavedSettings.getBOOL("AntiSpamGroupInvites");
mBlockGroupFeeInviteSpam = gSavedSettings.getBOOL("AntiSpamGroupFeeInvites");
mBlockGroupNoticeSpam = gSavedSettings.getBOOL("AntiSpamGroupNotices");
mBlockItemOfferSpam = gSavedSettings.getBOOL("AntiSpamItemOffers");
mBlockScriptSpam = gSavedSettings.getBOOL("AntiSpamScripts");
@@ -583,6 +584,7 @@ void LLPrefsAscentChat::cancel()
gSavedSettings.setBOOL("AntiSpamFriendshipOffers", mBlockFriendSpam);
gSavedSettings.setBOOL("AntiSpamGroupNotices", mBlockGroupNoticeSpam);
gSavedSettings.setBOOL("AntiSpamGroupInvites", mBlockGroupInviteSpam);
gSavedSettings.setBOOL("AntiSpamGroupFeeInvites", mBlockGroupFeeInviteSpam);
gSavedSettings.setBOOL("AntiSpamItemOffers", mBlockItemOfferSpam);
gSavedSettings.setBOOL("AntiSpamScripts", mBlockScriptSpam);
gSavedSettings.setBOOL("AntiSpamTeleports", mBlockTeleportSpam);

View File

@@ -96,6 +96,7 @@ protected:
BOOL mBlockFriendSpam;
BOOL mBlockGroupNoticeSpam;
BOOL mBlockGroupInviteSpam;
BOOL mBlockGroupFeeInviteSpam;
BOOL mBlockItemOfferSpam;
BOOL mBlockScriptSpam;
BOOL mBlockTeleportSpam;

View File

@@ -50,7 +50,7 @@
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
#include "lscript_rt_interface.h"
//#include "lscript_rt_interface.h"
#include "llviewercontrol.h"
#include "llviewerobject.h"
#include "llviewerregion.h"
@@ -444,6 +444,16 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
data->mItemId, is_running, queue->mMono, queue->getID(),
script_data, script_size, data->mScriptName);
}
else
{
std::string text = LLTrans::getString("CompileQueueProblemUploading");
LLChat chat(text);
LLFloaterChat::addChat(chat);
buffer = text + LLTrans::getString(":") + " " + data->mScriptName;
llwarns << "Problem uploading script asset." << llendl;
if(queue) queue->removeItemByItemID(data->mItemId);
}
#if 0 //Client side compiling disabled.
else
{
// It's now in the file, now compile it.
@@ -478,6 +488,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
// Delete it after we're done compiling?
LLFile::remove(filename);
}
#endif
}
}
else
@@ -551,6 +562,7 @@ void LLFloaterCompileQueue::onSaveBytecodeComplete(const LLUUID& asset_id, void*
}
// compile the file given and save it out.
#if 0 //Client side compiling disabled.
void LLFloaterCompileQueue::compile(const std::string& filename,
const LLUUID& item_id)
{
@@ -590,6 +602,7 @@ void LLFloaterCompileQueue::compile(const std::string& filename,
(void*)data, FALSE);
}
}
#endif
void LLFloaterCompileQueue::removeItemByItemID(const LLUUID& asset_id)
{

View File

@@ -163,7 +163,9 @@ protected:
S32 status, LLExtStat ext_status);
// compile the file given and save it out.
#if 0 //Client side compiling disabled.
void compile(const std::string& filename, const LLUUID& asset_id);
#endif
// remove any object in mScriptScripts with the matching uuid.
void removeItemByAssetID(const LLUUID& asset_id);

View File

@@ -42,7 +42,7 @@
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
#include "lscript_rt_interface.h"
//#include "lscript_rt_interface.h"
#include "llviewercontrol.h"
#include "llviewerobject.h"
#include "llviewerregion.h"

View File

@@ -33,6 +33,7 @@
#include <algorithm>
// library
#include "llanimationstates.h"
#include "llaudioengine.h"
#include "lldatapacker.h"
#include "llinventory.h"
@@ -551,6 +552,13 @@ void LLGestureMgr::playGesture(LLMultiGesture* gesture)
|| anim_step->mFlags & ANIM_FLAG_STOP
|| gAssetStorage->hasLocalAsset(anim_id, LLAssetType::AT_ANIMATION)))
{
//Singu note: Don't attempt to fetch expressions/emotes.
const char* emote_name = gAnimLibrary.animStateToString(anim_id);
if(emote_name && strstr(emote_name,"express_")==emote_name)
{
break;
}
mLoadingAssets.insert(anim_id);
LLUUID* id = new LLUUID(gAgentID);

View File

@@ -53,8 +53,8 @@
#include "llscrollcontainer.h"
#include "llscrolllistctrl.h"
#include "llslider.h"
#include "lscript_rt_interface.h"
#include "lscript_export.h"
//#include "lscript_rt_interface.h"
//#include "lscript_export.h"
#include "lltextbox.h"
#include "lltooldraganddrop.h"
#include "llvfile.h"
@@ -92,6 +92,9 @@
#include "llviewercontrol.h"
#include "llappviewer.h"
#include "llpanelobjectinventory.h"
#include "llsdserialize.h"
// [RLVa:KB] - Checked: 2010-09-28 (RLVa-1.2.1f)
#include "rlvhandler.h"
#include "rlvlocks.h"
@@ -206,6 +209,34 @@ struct LLSECKeywordCompare
}
};
std::vector<LLScriptEdCore::LSLFunctionProps> LLScriptEdCore::mParsedFunctions;
//static
void LLScriptEdCore::parseFunctions(const std::string& filename)
{
std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, filename);
if(LLFile::isfile(filepath))
{
LLSD function_list;
llifstream importer(filepath);
if(importer.is_open())
{
LLSDSerialize::fromXMLDocument(function_list, importer);
importer.close();
for (LLSD::map_const_iterator it = function_list.beginMap(); it != function_list.endMap(); ++it)
{
LSLFunctionProps fn;
fn.mName = it->first;
fn.mSleepTime = it->second["sleep_time"].asFloat();
fn.mGodOnly = it->second["god_only"].asBoolean();
mParsedFunctions.push_back(fn);
}
}
}
}
LLScriptEdCore::LLScriptEdCore(
const std::string& name,
const LLRect& rect,
@@ -258,8 +289,8 @@ LLScriptEdCore::LLScriptEdCore(
std::vector<std::string> funcs;
std::vector<std::string> tooltips;
for (std::vector<LLScriptLibraryFunction>::const_iterator i = gScriptLibrary.mFunctions.begin();
i != gScriptLibrary.mFunctions.end(); ++i)
for (std::vector<LSLFunctionProps>::const_iterator i = mParsedFunctions.begin();
i != mParsedFunctions.end(); ++i)
{
// Make sure this isn't a god only function, or the agent is a god.
if (!i->mGodOnly || gAgent.isGodlike())
@@ -1472,10 +1503,20 @@ void LLPreviewLSL::saveIfNeeded()
{
uploadAssetViaCaps(url, filename, mItemUUID);
}
else
{
LLSD row;
row["columns"][0]["value"] = LLTrans::getString("CompileQueueProblemUploading");
row["columns"][0]["font"] = "SANSSERIF_SMALL";
mScriptEd->mErrorList->addElement(row);
LLFile::remove(filename);
}
#if 0 //Client side compiling disabled.
else if (gAssetStorage)
{
uploadAssetLegacy(filename, mItemUUID, tid);
}
#endif
}
}
@@ -1497,6 +1538,7 @@ void LLPreviewLSL::uploadAssetViaCaps(const std::string& url,
LLHTTPClient::post(url, body, new LLUpdateAgentInventoryResponder(body, filename, LLAssetType::AT_LSL_TEXT));
}
#if 0 //Client side compiling disabled.
void LLPreviewLSL::uploadAssetLegacy(const std::string& filename,
const LLUUID& item_id,
const LLTransactionID& tid)
@@ -1580,7 +1622,7 @@ void LLPreviewLSL::uploadAssetLegacy(const std::string& filename,
LLFile::remove(err_filename);
LLFile::remove(dst_filename);
}
#endif
// static
void LLPreviewLSL::onSaveComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
@@ -2375,10 +2417,20 @@ void LLLiveLSLEditor::saveIfNeeded()
uploadAssetViaCaps(url, filename, mObjectID,
mItemID, is_running);
}
else
{
LLSD row;
row["columns"][0]["value"] = LLTrans::getString("CompileQueueProblemUploading");
row["columns"][0]["font"] = "SANSSERIF_SMALL";
mScriptEd->mErrorList->addElement(row);
LLFile::remove(filename);
}
#if 0 //Client side compiling disabled.
else if (gAssetStorage)
{
uploadAssetLegacy(filename, object, tid, is_running);
}
#endif
}
void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url,
@@ -2397,6 +2449,7 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url,
new LLUpdateTaskInventoryResponder(body, filename, LLAssetType::AT_LSL_TEXT));
}
#if 0 //Client side compiling disabled.
void LLLiveLSLEditor::uploadAssetLegacy(const std::string& filename,
LLViewerObject* object,
const LLTransactionID& tid,
@@ -2495,6 +2548,7 @@ void LLLiveLSLEditor::uploadAssetLegacy(const std::string& filename,
runningCheckbox->setLabel(getString("script_running"));
runningCheckbox->setEnabled(TRUE);
}
#endif
void LLLiveLSLEditor::onSaveTextComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
{

View File

@@ -62,6 +62,7 @@ class LLScriptEdCore : public LLPanel, public LLEventTimer
friend class LLLiveLSLEditor;
public:
static void parseFunctions(const std::string& filename);
LLScriptEdCore(
const std::string& name,
const LLRect& rect,
@@ -169,6 +170,14 @@ private:
LLLiveLSLFile* mLiveFile;
LLUUID mObjectUUID;
LLUUID mItemUUID;
struct LSLFunctionProps
{
std::string mName;
F32 mSleepTime;
bool mGodOnly;
};
static std::vector<LSLFunctionProps> mParsedFunctions;
};

View File

@@ -1276,6 +1276,7 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)
LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);
setState(DEAD);
{OctreeGuard guard(mOctreeNode);
for (element_iter i = getDataBegin(); i != getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -1284,6 +1285,7 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)
drawable->setSpatialGroup(NULL);
}
}
}
//clean up avatar attachment stats
LLSpatialBridge* bridge = mSpatialPartition->asBridge();
@@ -1363,6 +1365,7 @@ void LLSpatialGroup::destroyGL(bool keep_occlusion)
}
OctreeGuard guard(mOctreeNode);
for (LLSpatialGroup::element_iter i = getDataBegin(); i != getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -2065,6 +2068,7 @@ public:
{
LLSpatialGroup::OctreeNode* branch = group->mOctreeNode;
OctreeGuard guard(branch);
for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getDataBegin(); i != branch->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -2189,6 +2193,7 @@ public:
LLSpatialGroup* group = (LLSpatialGroup*) state->getListener(0);
group->destroyGL();
{OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -2197,6 +2202,7 @@ public:
gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE);
}
}
}
for (LLSpatialGroup::bridge_list_t::iterator i = group->mBridgeList.begin(); i != group->mBridgeList.end(); ++i)
{
@@ -2502,6 +2508,7 @@ void renderOctree(LLSpatialGroup* group)
gGL.flush();
glLineWidth(1.f);
gGL.flush();
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -3358,6 +3365,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
void renderPhysicsShapes(LLSpatialGroup* group)
{
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::OctreeNode::const_element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -3885,6 +3893,7 @@ public:
}
}
{OctreeGuard guard(branch);
for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getDataBegin(); i != branch->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -3980,7 +3989,7 @@ public:
}
}
}
}
}}
for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i)
{
@@ -4070,6 +4079,7 @@ public:
return;
}
OctreeGuard guard(branch);
for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getDataBegin(); i != branch->getDataEnd(); ++i)
{
LLDrawable* drawable = *i;
@@ -4293,6 +4303,7 @@ public:
virtual void visit(const LLSpatialGroup::OctreeNode* branch)
{
OctreeGuard guard(branch);
for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getDataBegin(); i != branch->getDataEnd(); ++i)
{
check(*i);
@@ -4303,6 +4314,7 @@ public:
{
node->accept(this);
OctreeGuard guard(node);
for (U32 i = 0; i < node->getChildCount(); i++)
{
const LLSpatialGroup::OctreeNode* child = node->getChild(i);

View File

@@ -332,7 +332,7 @@ public:
void dirtyMesh() { setState(MESH_DIRTY); }
//octree wrappers to make code more readable
element_list& getData() { return mOctreeNode->getData(); }
//element_list& getData() { return mOctreeNode->getData(); }
element_iter getDataBegin() { return mOctreeNode->getDataBegin(); }
element_iter getDataEnd() { return mOctreeNode->getDataEnd(); }
U32 getElementCount() const { return mOctreeNode->getElementCount(); }

View File

@@ -999,6 +999,8 @@ bool idle_startup()
LL_INFOS("AppInit") << "Attempting login as: " << firstname << " " << lastname << LL_ENDL;
gDebugInfo["LoginName"] = firstname + " " + lastname;
}
LLScriptEdCore::parseFunctions("lsl_functions_sl.xml"); //Singu Note: This parsing function essentially replaces the entirety of the lscript_library library
gHippoGridManager->setCurrentGridAsConnected();
gHippoLimits->setLimits();
@@ -1008,6 +1010,7 @@ bool idle_startup()
LLTrans::setDefaultArg("[SECOND_LIFE]", gHippoGridManager->getConnectedGrid()->getGridName());
LLTrans::setDefaultArg("[SECOND_LIFE_GRID]", gHippoGridManager->getConnectedGrid()->getGridName() + " Grid");
LLTrans::setDefaultArg("[GRID_OWNER]", gHippoGridManager->getConnectedGrid()->getGridOwner());
LLScriptEdCore::parseFunctions("lsl_functions_os.xml"); //Singu Note: This appends to the base functions parsed from lsl_functions_sl.xml
}
// create necessary directories

View File

@@ -1025,6 +1025,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo
//when rendering next frame's occlusion queries
for (U32 i = 0; i < 16; i++)
{
gGLPreviousModelView[i] = gGLLastModelView[i];
gGLLastModelView[i] = gGLModelView[i];
gGLLastProjection[i] = gGLProjection[i];
}

View File

@@ -42,7 +42,7 @@
#include "llaudioengine.h"
#include "llavatarnamecache.h"
#include "indra_constants.h"
#include "lscript_byteformat.h"
#include "../lscript/lscript_byteformat.h" //Need LSCRIPTRunTimePermissionBits and SCRIPT_PERMISSION_*
#include "llfloaterbump.h"
#include "llassetstorage.h"
@@ -2558,8 +2558,25 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
break;
case IM_GROUP_INVITATION:
{
// Read the binary bucket for more information.
struct invite_bucket_t
{
S32 membership_fee;
LLUUID role_id;
}* invite_bucket;
// Make sure the binary bucket is the correct size.
if (binary_bucket_size != sizeof(invite_bucket_t))
{
LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL;
break;
}
invite_bucket = (struct invite_bucket_t*) &binary_bucket[0];
S32 membership_fee = ntohl(invite_bucket->membership_fee);
// NaCl - Antispam
if(antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites"))
if(antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites") || (membership_fee > 0 && gSavedSettings.getBOOL("AntiSpamGroupFeeInvites")))
return;
// NaCl End
//if (!is_linden && (is_busy || is_muted))
@@ -2571,22 +2588,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
else
{
LL_INFOS("Messaging") << "Received IM_GROUP_INVITATION message." << LL_ENDL;
// Read the binary bucket for more information.
struct invite_bucket_t
{
S32 membership_fee;
LLUUID role_id;
}* invite_bucket;
// Make sure the binary bucket is the correct size.
if (binary_bucket_size != sizeof(invite_bucket_t))
{
LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL;
break;
}
invite_bucket = (struct invite_bucket_t*) &binary_bucket[0];
S32 membership_fee = ntohl(invite_bucket->membership_fee);
LLSD payload;
payload["transaction_id"] = session_id;

View File

@@ -880,11 +880,14 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
LLMemType mt(LLMemType::MTYPE_OBJECT);
// Update globals
LLViewerObject::setVelocityInterpolate( gSavedSettings.getBOOL("VelocityInterpolate") );
LLViewerObject::setPingInterpolate( gSavedSettings.getBOOL("PingInterpolate") );
static const LLCachedControl<bool> VelocityInterpolate("VelocityInterpolate");
static const LLCachedControl<bool> PingInterpolate("PingInterpolate");
LLViewerObject::setVelocityInterpolate( VelocityInterpolate );
LLViewerObject::setPingInterpolate( PingInterpolate );
F32 interp_time = gSavedSettings.getF32("InterpolationTime");
F32 phase_out_time = gSavedSettings.getF32("InterpolationPhaseOut");
static LLCachedControl<F32> interp_time("InterpolationTime");
static LLCachedControl<F32> phase_out_time("InterpolationPhaseOut");
if (interp_time < 0.0 ||
phase_out_time < 0.0 ||
phase_out_time > interp_time)
@@ -896,7 +899,8 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
LLViewerObject::setPhaseOutUpdateInterpolationTime( interp_time );
LLViewerObject::setMaxUpdateInterpolationTime( phase_out_time );
gAnimateTextures = gSavedSettings.getBOOL("AnimateTextures");
static const LLCachedControl<bool> AnimateTextures("AnimateTextures");
gAnimateTextures = AnimateTextures;
// update global timer
F32 last_time = gFrameTimeSeconds;

View File

@@ -171,6 +171,7 @@ LLGLSLShader gPostColorFilterProgram(LLViewerShaderMgr::SHADER_EFFECT); //Not
LLGLSLShader gPostNightVisionProgram(LLViewerShaderMgr::SHADER_EFFECT); //Not in mShaderList
LLGLSLShader gPostGaussianBlurProgram(LLViewerShaderMgr::SHADER_EFFECT); //Not in mShaderList
LLGLSLShader gPostPosterizeProgram(LLViewerShaderMgr::SHADER_EFFECT); //Not in mShaderList
LLGLSLShader gPostMotionBlurProgram(LLViewerShaderMgr::SHADER_EFFECT); //Not in mShaderList
// Deferred rendering shaders
LLGLSLShader gDeferredImpostorProgram(LLViewerShaderMgr::SHADER_DEFERRED);
@@ -977,6 +978,26 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
gPostPosterizeProgram.uniform1i("tex0", 0);
}
}
{
vector<string> shaderUniforms;
shaderUniforms.reserve(3);
shaderUniforms.push_back("inv_proj");
shaderUniforms.push_back("prev_proj");
shaderUniforms.push_back("screen_res");
gPostMotionBlurProgram.mName = "Motion Blur Shader (Post)";
gPostMotionBlurProgram.mShaderFiles.clear();
gPostMotionBlurProgram.mShaderFiles.push_back(make_pair("effects/MotionBlurF.glsl", GL_FRAGMENT_SHADER_ARB));
gPostMotionBlurProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorV.glsl", GL_VERTEX_SHADER_ARB));
gPostMotionBlurProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
if(gPostMotionBlurProgram.createShader(NULL, &shaderUniforms))
{
gPostMotionBlurProgram.bind();
gPostMotionBlurProgram.uniform1i("tex0", 0);
gPostMotionBlurProgram.uniform1i("tex1", 1);
}
}
#endif
return success;

View File

@@ -645,6 +645,7 @@ void LLGrassPartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_count
mFaceList.clear();
LLViewerCamera* camera = LLViewerCamera::getInstance();
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawablep = *i;

View File

@@ -557,6 +557,7 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co
mFaceList.clear();
LLViewerCamera* camera = LLViewerCamera::getInstance();
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawablep = *i;

View File

@@ -3494,6 +3494,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST);
//get all the faces into a list
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
LLDrawable* drawablep = *drawable_iter;
@@ -3900,6 +3901,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
if (!LLPipeline::sDelayVBUpdate)
{
//drawables have been rebuilt, clear rebuild status
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
LLDrawable* drawablep = *drawable_iter;
@@ -3940,6 +3942,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
std::set<LLVertexBuffer*> mapped_buffers;
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
LLDrawable* drawablep = *drawable_iter;
@@ -4012,6 +4015,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
llwarns << "Not all mapped vertex buffers are unmapped!" << llendl ;
warningsCount = 1;
}
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
LLDrawable* drawablep = *drawable_iter;
@@ -4484,6 +4488,7 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun
//for each drawable
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
{
LLDrawable* drawablep = *drawable_iter;

View File

@@ -2820,6 +2820,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
else
{
group->setVisible();
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
markVisible(*i, camera);
@@ -2908,6 +2909,7 @@ void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera)
LLMemType mt(LLMemType::MTYPE_PIPELINE_STATE_SORT);
if (!sSkipUpdate && group->changeLOD())
{
OctreeGuard guard(group->mOctreeNode);
for (LLSpatialGroup::element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
{
LLDrawable* drawablep = *i;
@@ -3044,6 +3046,7 @@ void forAllDrawables(LLCullResult::sg_iterator begin,
{
for (LLCullResult::sg_iterator i = begin; i != end; ++i)
{
OctreeGuard guard((*i)->mOctreeNode);
for (LLSpatialGroup::element_iter j = (*i)->getDataBegin(); j != (*i)->getDataEnd(); ++j)
{
func(*j);
@@ -6706,7 +6709,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
{ //combine result based on alpha
if (multisample)
{
mDeferredLight.bindTarget();
mDeferredScreen.bindTarget();
glViewport(0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
}
else
@@ -6749,7 +6752,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
if (multisample)
{
mDeferredLight.flush();
mDeferredScreen.flush();
}
}
}
@@ -6757,7 +6760,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
{
if (multisample)
{
mDeferredLight.bindTarget();
mDeferredScreen.bindTarget();
}
LLGLSLShader* shader = &gDeferredPostNoDoFProgram;
@@ -6785,7 +6788,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
if (multisample)
{
mDeferredLight.flush();
mDeferredScreen.flush();
}
}
@@ -6806,7 +6809,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
if (channel > -1)
{
mDeferredLight.bindTexture(0, channel);
mDeferredScreen.bindTexture(0, channel);
}
gGL.begin(LLRender::TRIANGLE_STRIP);

View File

@@ -1,230 +1,249 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater bottom="-350" can_close="true" can_drag_on_left="false" can_minimize="true"
can_resize="false" height="400" left="50" min_height="400"
min_width="300" mouse_opaque="true" name="Post-Process Floater"
title="Post-Process Settings" width="400">
<tab_container bottom="-400" follows="left|top" height="400" left="0"
mouse_opaque="false" name="Post-Process Tabs" tab_position="bottom"
width="400">
<panel border="true" bottom="-400" follows="left|top|right|bottom" height="400"
label="Color Filter" left="1" mouse_opaque="false"
name="ColorFilterPanel" width="398">
<check_box bottom="-40" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="4" mouse_opaque="true" name="enable_color_filter" width="200" />
can_resize="false" height="400" left="50" min_height="400"
min_width="300" mouse_opaque="true" name="Post-Process Floater"
title="Post-Process Settings" width="400">
<tab_container bottom="-400" follows="left|top" height="384" left="0"
mouse_opaque="false" name="Post-Process Tabs" tab_position="left"
width="400">
<panel border="true" bottom="-400" follows="left|top|right|bottom" height="384"
label="Color Filter" left="1" mouse_opaque="false"
name="ColorFilterPanel" width="398">
<check_box bottom="-20" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="enable_color_filter" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterGammaText" v_pad="0"
width="355">
Gamma
</text>
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="2" follows="left"
height="18" increment="0.01" initial_val="1.0" label="" left="14"
max_val="10" min_val="-.25" mouse_opaque="true" name="gamma"
show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterGammaText" v_pad="0"
width="355">
Gamma
</text>
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="2" follows="left"
height="18" increment="0.01" initial_val="1.0" label="" left="14" val_width="35"
max_val="10" min_val="-.25" mouse_opaque="true" name="gamma"
show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterBrightnessText" v_pad="0"
width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterBrightnessText" v_pad="0"
width="355">
Brightness
</text>
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="2" follows="left"
height="18" increment="0.01" initial_val="1.0" label="" left="14" val_width="35"
max_val="4" min_val="0" mouse_opaque="true" name="brightness"
show_text="true" value="1.0" width="200" />
height="18" increment="0.01" initial_val="1.0" label="" left="14"
max_val="4" min_val="0" mouse_opaque="true" name="brightness"
show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterSaturationText" v_pad="0"
width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterSaturationText" v_pad="0"
width="355">
Saturation
</text>
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="2" follows="left"
height="18" increment="0.01" initial_val="1.0" label="" left="14" val_width="35"
max_val="2" min_val="-2" mouse_opaque="true"
name="saturation" show_text="true" value="1.0" width="200" />
height="18" increment="0.01" initial_val="1.0" label="" left="14"
max_val="2" min_val="-1" mouse_opaque="true"
name="saturation" show_text="true" value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterContrastText" v_pad="0"
width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterContrastText" v_pad="0"
width="355">
Contrast
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="2" follows="left" height="18" increment="0.01" val_width="35"
initial_val="1.0" label="" left="14" max_val="4" min_val="0"
mouse_opaque="true" name="contrast" show_text="true"
value="1.0" width="200" />
decimal_digits="2" follows="left" height="18" increment="0.01"
initial_val="1.0" label="" left="14" max_val="4" min_val="0"
mouse_opaque="true" name="contrast" show_text="true"
value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterBaseText" v_pad="0"
width="355">
Contrast Base Colors
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="ColorFilterBaseText" v_pad="0"
width="355">
Contrast Base Colora
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="R" label_width="7" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[0]" show_text="true" value="1.0"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="R" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[0]" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="true"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="G" label_width="7" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[1]" show_text="true" value="1.0"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="G" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[1]" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="true"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="B" label_width="7" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[2]" show_text="true" value="1.0"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.0" label="B" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[2]" show_text="true" value="1.0"
width="200" />
<slider bottom_delta="-20" can_edit_text="true"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="0.5" label="I" label_width="7" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[3]" show_text="true" value="1.0"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="0.5" label="I" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="contrast_base[3]" show_text="true" value="1.0"
width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Gauss Blur" left="1" mouse_opaque="false"
name="GaussBlurPanel" width="398">
<check_box bottom="-40" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="4" mouse_opaque="true" name="enable_gauss_blur" width="200" />
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="384"
label="Gauss Blur" left="1" mouse_opaque="false"
name="GaussBlurPanel" width="398">
<check_box bottom="-20" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="enable_gauss_blur" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="GaussBlurPassesText" v_pad="0"
width="355">
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="GaussBlurPassesText" v_pad="0"
width="355">
Passes to apply
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="0" follows="left"
height="18" increment="1" initial_val="9" label="" left="14"
max_val="25" min_val="1" mouse_opaque="true"
name="gauss_blur_passes" show_text="true" value="0.7" width="200" />
decimal_digits="0" follows="left"
height="18" increment="1" initial_val="9" label="" left="14"
max_val="25" min_val="1" mouse_opaque="true"
name="gauss_blur_passes" show_text="true" value="0.7" width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Night Vision" left="1" mouse_opaque="false"
name="NightVisionPanel" width="398">
<check_box bottom="-40" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="4" mouse_opaque="true" name="enable_night_vision" width="200" />
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="384"
label="Night Vision" left="1" mouse_opaque="false"
name="NightVisionPanel" width="398">
<check_box bottom="-20" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="enable_night_vision" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionBrightMultText" v_pad="0"
width="355">
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionBrightMultText" v_pad="0"
width="355">
Light Amplification Multiple
</text>
<slider bottom_delta="-30" can_edit_text="true" val_width="50"
decimal_digits="3" follows="left"
height="18" increment="0.01" initial_val="3.0" label="" left="14"
max_val="10" min_val="1" mouse_opaque="true"
name="brightness_multiplier" show_text="true" value="0.7" width="220" />
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="3" follows="left"
height="18" increment="0.01" initial_val="3.0" label="" left="14"
max_val="10" min_val="1" mouse_opaque="true"
name="brightness_multiplier" show_text="true" value="0.7" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionNoiseSizeText" v_pad="0"
width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionNoiseSizeText" v_pad="0"
width="355">
Noise Size
</text>
<slider bottom_delta="-30" can_edit_text="true" val_width="50"
decimal_digits="3" follows="left" height="18" increment="0.1"
initial_val="1" label="" left="14" max_val="100" min_val="1"
mouse_opaque="true" name="noise_size" show_text="true"
value="1.0" width="220" />
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="3" follows="left" height="18" increment="0.1"
initial_val="1" label="" left="14" max_val="100" min_val="1"
mouse_opaque="true" name="noise_size" show_text="true"
value="1.0" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionNoiseStrengthText"
v_pad="0" width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="NightVisionNoiseStrengthText"
v_pad="0" width="355">
Noise Strength
</text>
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="3" val_width="50"
follows="left" height="18" increment="0.01" initial_val="0.3" label=""
left="14" max_val="1" min_val="0" mouse_opaque="true"
name="noise_strength" show_text="true" value="1.0" width="220" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Posterize" left="1" mouse_opaque="false"
name="PosterizePanel" width="398">
<check_box bottom="-40" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="4" mouse_opaque="true" name="enable_posterize" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="PosterLayersText" v_pad="0"
width="355">
Layer Count
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="3" follows="left"
height="18" increment="1" initial_val="10" label="" left="14"
max_val="20" min_val="1" mouse_opaque="true"
name="posterize_layers" show_text="true" value="10" width="200" />
<slider bottom_delta="-30" can_edit_text="true" decimal_digits="3"
follows="left" height="18" increment="0.01" initial_val="0.3" label=""
left="14" max_val="1" min_val="0" mouse_opaque="true"
name="noise_strength" show_text="true" value="1.0" width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="384"
label="Posterize" left="1" mouse_opaque="false"
name="PosterizePanel" width="398">
<check_box bottom="-20" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="enable_posterize" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="PosterLayersText" v_pad="0"
width="355">
Layer Count
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="3" follows="left"
height="18" increment="1" initial_val="10" label="" left="14"
max_val="20" min_val="1" mouse_opaque="true"
name="posterize_layers" show_text="true" value="10" width="200" />
</panel>
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="384"
label="MotionBlur" left="1" mouse_opaque="false"
name="MotionBlurPanel" width="398">
<check_box bottom="-20" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="enable_motionblur" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="MotionBlurText" v_pad="0"
width="355">
Motionblur Strength
</text>
<slider bottom_delta="-30" can_edit_text="true"
decimal_digits="0" follows="left"
height="18" increment="1" initial_val="8" label="" left="14"
max_val="30" min_val="1" mouse_opaque="true"
name="blur_strength" show_text="true" value="0.7" width="200" />
</panel>
<!--<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Bloom" left="1" mouse_opaque="true"
name="BloomPanel" width="398">
<check_box bottom="-40" control_name="BloomToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="4" mouse_opaque="true" name="BloomToggle" width="200" />
label="Bloom" left="1" mouse_opaque="true"
name="BloomPanel" width="398">
<check_box bottom="-20" control_name="BloomToggle" follows="left|top"
font="SansSerifSmall" height="16" initial_value="false" label="Enable"
left="14" mouse_opaque="true" name="BloomToggle" width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomExtractText" v_pad="0"
width="355">
bottom_delta="-21" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomExtractText" v_pad="0"
width="355">
Luminosity Extraction
</text>
<slider bottom_delta="-30" can_edit_text="true" control_name="BloomExtract"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="0.9" label="" left="14" max_val="1" min_val="0" val_width="41"
mouse_opaque="true" name="BloomExtract" show_text="true" value="0.7"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="0.9" label="" left="14" max_val="1" min_val="0"
mouse_opaque="true" name="BloomExtract" show_text="true" value="0.7"
width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomSizeText" v_pad="0" width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomSizeText" v_pad="0" width="355">
Bloom Size
</text>
<slider bottom_delta="-30" can_edit_text="true" control_name="BloomSize"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="3.0" label="" left="14" max_val="20" min_val="0" val_width="41"
mouse_opaque="true" name="BloomSize" show_text="true" value="1.0"
width="200" />
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="3.0" label="" left="14" max_val="20" min_val="0"
mouse_opaque="true" name="BloomSize" show_text="true" value="1.0"
width="200" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomStrengthText" v_pad="0"
width="355">
bottom_delta="-20" drop_shadow_visible="true" follows="left|top|right"
font="SansSerif" h_pad="0" halign="left" height="16"
left="10" mouse_opaque="true" name="BloomStrengthText" v_pad="0"
width="355">
Bloom Strength
</text>
<slider bottom_delta="-30" can_edit_text="true" control_name="BloomStrength"
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.2" label="" left="14" max_val="10" min_val="0" val_width="41"
mouse_opaque="true" name="BloomStrength" show_text="true" value="1.0"
width="200" />
</panel>-->
decimal_digits="3" follows="left" height="18" increment="0.01"
initial_val="1.2" label="" left="14" max_val="10" min_val="0"
mouse_opaque="true" name="BloomStrength" show_text="true" value="1.0"
width="200" />
</panel>-->
<panel border="true" bottom="-180" follows="left|top|right|bottom" height="400"
label="Extras" left="1" mouse_opaque="false" name="Extras"
width="398">
<combo_box allow_text_entry="false" bottom="-43" follows="left|top" height="18"
left="15" max_chars="20" mouse_opaque="true" name="PPEffectsCombo"
width="150" />
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-86"
enabled="true" follows="left|right|bottom" font="SansSerif"
handle_edit_keys_directly="false" height="20"
label="Effect Name" left="15" max_length="40" mouse_opaque="true"
name="PPEffectNameEditor" select_all_on_focus_received="false"
select_on_focus="false" tab_group="1" width="150" />
<button bottom="-44" enabled="true" font="SansSerif" halign="center" height="20"
label="Load Effect" label_selected="Load Effect" left_delta="170"
mouse_opaque="true" name="PPLoadEffect" scale_image="true" width="100" />
<button bottom="-70" enabled="true" font="SansSerif" halign="center" height="20"
label="Save Effect" label_selected="Save Effect"
mouse_opaque="true" name="PPSaveEffect" scale_image="true" width="100" />
label="Extras" left="1" mouse_opaque="false" name="Extras"
width="398">
<button bottom="-33" enabled="true" font="SansSerif" halign="center" height="20"
label="LoadEffect" label_selected="LoadEffect" left="15"
mouse_opaque="true" name="PPLoadEffect" scale_image="true" width="100" />
<button bottom="-60" enabled="true" font="SansSerif" halign="center" height="20"
label="SaveEffect" label_selected="SaveEffect" left="15"
mouse_opaque="true" name="PPSaveEffect" scale_image="true" width="100" />
<combo_box allow_text_entry="false" bottom="-33" follows="left|top" height="18"
left_delta="120" max_chars="20" mouse_opaque="true" name="PPEffectsCombo"
width="150" />
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-75"
enabled="true" follows="left|right|bottom" font="SansSerif"
handle_edit_keys_directly="false" height="20"
label="Effect Name" left="135" max_length="40" mouse_opaque="true"
name="PPEffectNameEditor" select_all_on_focus_received="false"
select_on_focus="false" tab_group="1" width="150" />
</panel>
</tab_container>
</floater>

View File

@@ -81,11 +81,12 @@
<text name="Block All Dialogs From" left="10" bottom_delta="-10">Block All Dialogs From</text>
<check_box control_name="AntiSpamAlerts" height="16" label="Alerts" name="Alerts" left="14" bottom_delta="-23"/>
<check_box control_name="AntiSpamFriendshipOffers" height="16" label="Friendship Offers" name="Friendship Offers" bottom_delta="0" left_delta="120"/>
<check_box control_name="AntiSpamGroupInvites" height="16" label="Group Invites" name="Group Invites" 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="AntiSpamGroupInvites" height="16" label="All Group Invites" name="Group Invites" bottom_delta="0" left_delta="120"/>
<check_box control_name="AntiSpamGroupFeeInvites" height="16" label="Group Fee Invites" name="Group Fee Invites" bottom_delta="0" left_delta="120"/>
<check_box control_name="AntiSpamItemOffers" height="16" label="Item Offers" name="Item Offers" left="14"/>
<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"/>
</panel>
<panel border="true" bottom="-580" height="525" label="Text Options" left="1" name="TextOptions" width="418">

View File

@@ -2921,6 +2921,7 @@ Where tag = tag string to match. Removes bot's matching the tag.
<string name="CompileQueueDownloadedCompiling">Downloaded, now compiling</string>
<string name="CompileQueueScriptNotFound">Script not found on server.</string>
<string name="CompileQueueProblemDownloading">Problem downloading</string>
<string name="CompileQueueProblemUploading">Sim lacking UpdateScriptTask capabilities. Unable to request recompile</string>
<string name="CompileQueueInsufficientPermDownload">Insufficient permissions to download a script.</string>
<string name="CompileQueueInsufficientPermFor">Insufficient permissions for</string>
<string name="CompileQueueUnknownFailure">Unknown failure to download</string>