Merge branch 'V2MultiWear' of git://github.com/Lirusaito/SingularityViewer into V2MultiWear

This commit is contained in:
Siana Gearz
2012-06-09 03:01:54 +02:00
47 changed files with 804 additions and 428 deletions

View File

@@ -5,27 +5,25 @@ project(llaudio)
include(00-Common)
include(Audio)
include(LLAudio)
if(FMODEX)
include(FMODEX)
if(FMODEX)
set(FMOD OFF)
endif(FMODEX)
endif(FMODEX)
if(NOT FMODEX)
include(FMOD)
endif(NOT FMODEX)
if (FMODEX)
include(FMODEX)
set(FMOD OFF)
endif (FMODEX)
if (NOT FMODEX)
include(FMOD)
endif (NOT FMODEX)
include(OPENAL)
include(LLCommon)
include(LLMath)
include(LLMessage)
include(LLVFS)
if(FMODEX)
include_directories(${FMODEX_INCLUDE_DIR})
if (FMODEX)
include_directories(${FMODEX_INCLUDE_DIR})
endif(FMODEX)
if(FMOD)
include_directories(${FMOD_INCLUDE_DIR})
endif(FMOD)
include_directories(${FMOD_INCLUDE_DIR})
endif (FMOD)
include_directories(
${LLAUDIO_INCLUDE_DIRS}

View File

@@ -242,8 +242,8 @@ BOOL LLVorbisDecodeState::initDecode()
llwarns << "No default bitstream found" << llendl;
}
// <edit>
// This magic value is equivilent to 150MiB of data.
// Prevents griffers from utilizin a huge xbox sound the size of god to instafry the viewer
// This magic value is equivalent to 150MiB of data.
// Prevents griefers from utilizing a huge xbox sound the size of god to instafry the viewer
if(size_guess >= 157286400)
{
llwarns << "Bad sound caught by zmagic" << llendl;
@@ -616,7 +616,8 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
llwarns << mCurrentDecodep->getUUID() << " has invalid vorbis data, aborting decode" << llendl;
mCurrentDecodep->flushBadFile();
LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID());
adp->setHasValidData(FALSE);
adp->setHasValidData(false);
adp->setHasCompletedDecode(true);
mCurrentDecodep = NULL;
done = TRUE;
}
@@ -631,11 +632,16 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
if (mCurrentDecodep->finishDecode())
{
// We finished!
if (mCurrentDecodep->isValid() && mCurrentDecodep->isDone())
LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID());
if (!adp)
{
LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID());
adp->setHasDecodedData(TRUE);
adp->setHasValidData(TRUE);
llwarns << "Missing LLAudioData for decode of " << mCurrentDecodep->getUUID() << llendl;
}
else if (mCurrentDecodep->isValid() && mCurrentDecodep->isDone())
{
adp->setHasCompletedDecode(true);
adp->setHasDecodedData(true);
adp->setHasValidData(true);
// At this point, we could see if anyone needs this sound immediately, but
// I'm not sure that there's a reason to - we need to poll all of the playing
@@ -644,7 +650,8 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
}
else
{
llinfos << "Vorbis decode failed!!!" << llendl;
adp->setHasCompletedDecode(true);
llinfos << "Vorbis decode failed for " << mCurrentDecodep->getUUID() << llendl;
}
mCurrentDecodep = NULL;
}
@@ -712,15 +719,18 @@ BOOL LLAudioDecodeMgr::addDecodeRequest(const LLUUID &uuid)
if (gAudiop->hasDecodedFile(uuid))
{
// Already have a decoded version, don't need to decode it.
//llinfos << "addDecodeRequest for " << uuid << " has decoded file already" << llendl;
return TRUE;
}
if (gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND))
{
// Just put it on the decode queue.
//llinfos << "addDecodeRequest for " << uuid << " has local asset file already" << llendl;
mImpl->mDecodeQueue.push(uuid);
return TRUE;
}
//llinfos << "addDecodeRequest for " << uuid << " no file available" << llendl;
return FALSE;
}

View File

@@ -1275,10 +1275,11 @@ void LLAudioEngine::assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::E
// Need to mark data as bad to avoid constant rerequests.
LLAudioData *adp = gAudiop->getAudioData(uuid);
if (adp)
{
{ // Make sure everything is cleared
adp->setHasValidData(false);
adp->setHasLocalData(false);
adp->setHasDecodedData(false);
adp->setHasCompletedDecode(true);
}
}
else
@@ -1291,9 +1292,10 @@ void LLAudioEngine::assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::E
}
else
{
// llinfos << "Got asset callback with good audio data for " << uuid << ", making decode request" << llendl;
adp->setHasValidData(true);
adp->setHasLocalData(true);
gAudioDecodeMgrp->addDecodeRequest(uuid);
adp->setHasLocalData(true);
gAudioDecodeMgrp->addDecodeRequest(uuid);
}
}
gAudiop->mCurrentTransfer = LLUUID::null;
@@ -1380,16 +1382,18 @@ void LLAudioSource::update()
if (!getCurrentBuffer())
{
if (getCurrentData())
LLAudioData *adp = getCurrentData();
if (adp)
{
// Hack - try and load the sound. Will do this as a callback
// on decode later.
if (getCurrentData()->load() && getCurrentData()->getBuffer())
if (adp->load() && adp->getBuffer())
{
play(getCurrentData()->getID());
play(adp->getID());
}
else
else if (adp->hasCompletedDecode()) // Only mark corrupted after decode is done
{
llwarns << "Marking LLAudioSource corrupted for " << adp->getID() << llendl;
mCorrupted = true ;
}
}
@@ -1812,6 +1816,7 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :
mBufferp(NULL),
mHasLocalData(false),
mHasDecodedData(false),
mHasCompletedDecode(false),
mHasValidData(true)
{
if (uuid.isNull())
@@ -1823,12 +1828,13 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :
if (gAudiop && gAudiop->hasDecodedFile(uuid))
{
// Already have a decoded version, don't need to decode it.
mHasLocalData = true;
mHasDecodedData = true;
setHasLocalData(true);
setHasDecodedData(true);
setHasCompletedDecode(true);
}
else if (gAssetStorage && gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND))
{
mHasLocalData = true;
setHasLocalData(true);
}
}

View File

@@ -408,10 +408,12 @@ public:
bool hasLocalData() const { return mHasLocalData; }
bool hasDecodedData() const { return mHasDecodedData; }
bool hasCompletedDecode() const { return mHasCompletedDecode; }
bool hasValidData() const { return mHasValidData; }
void setHasLocalData(const bool hld) { mHasLocalData = hld; }
void setHasDecodedData(const bool hdd) { mHasDecodedData = hdd; }
void setHasCompletedDecode(const bool hcd) { mHasCompletedDecode = hcd; }
void setHasValidData(const bool hvd) { mHasValidData = hvd; }
friend class LLAudioEngine; // Severe laziness, bad.
@@ -419,9 +421,10 @@ public:
protected:
LLUUID mID;
LLAudioBuffer *mBufferp; // If this data is being used by the audio system, a pointer to the buffer will be set here.
bool mHasLocalData;
bool mHasDecodedData;
bool mHasValidData;
bool mHasLocalData; // Set true if the sound asset file is available locally
bool mHasDecodedData; // Set true if the sound file has been decoded
bool mHasCompletedDecode; // Set true when the sound is decoded
bool mHasValidData; // Set false if decoding failed, meaning the sound asset is bad
};

View File

@@ -105,10 +105,6 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
U32 version;
FMOD_RESULT result;
int numdrivers;
FMOD_SPEAKERMODE speakermode;
FMOD_CAPS caps;
char name[256];
LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() initializing FMOD" << LL_ENDL;
@@ -124,11 +120,16 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
if (version < FMOD_VERSION)
{
LL_WARNS("AppInit") << "Error : You are using the wrong FMOD version (" << version
<< ")! You should be using FMOD " << FMOD_VERSION << LL_ENDL;
LL_WARNS("AppInit") << "Error : You are using the wrong FMOD Ex version (" << version
<< ")! You should be using FMOD Ex" << FMOD_VERSION << LL_ENDL;
}
#if LL_WINDOWS
int numdrivers;
FMOD_SPEAKERMODE speakermode;
FMOD_CAPS caps;
char name[256];
//Is this block applicable to linux?
{
result = mSystem->getNumDrivers(&numdrivers);
@@ -173,7 +174,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
#endif //LL_WINDOWS
// In this case, all sounds, PLUS wind and stream will be software.
result = mSystem->setSoftwareChannels(num_channels+2);
result = mSystem->setSoftwareChannels(num_channels + 2);
Check_FMOD_Error(result,"FMOD::System::setSoftwareChannels");
U32 fmod_flags = FMOD_INIT_NORMAL;
@@ -181,73 +182,67 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
fmod_flags |= FMOD_INIT_ENABLE_PROFILE;
#if LL_LINUX
// If we don't set an output method, Linux FMOD always
// decides on OSS and fails otherwise. So we'll manually
// try ESD, then OSS, then ALSA.
// Why this order? See SL-13250, but in short, OSS emulated
// on top of ALSA is ironically more reliable than raw ALSA.
// Ack, and ESD has more reliable failure modes - but has worse
// latency - than all of them, so wins for now.
bool audio_ok = false;
if (!audio_ok)
{
if (NULL == getenv("LL_BAD_FMODEX_ESD")) /*Flawfinder: ignore*/
if (NULL == getenv("LL_BAD_FMOD_PULSEAUDIO")) /*Flawfinder: ignore*/
{
LL_DEBUGS("AppInit") << "Trying ESD audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_ESD) == FMOD_OK &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK)
LL_DEBUGS("AppInit") << "Trying PulseAudio audio output..." << LL_ENDL;
if(mSystem->setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) == FMOD_OK &&
(result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{
LL_DEBUGS("AppInit") << "ESD audio output initialized OKAY" << LL_ENDL;
LL_DEBUGS("AppInit") << "PulseAudio output initialized OKAY" << LL_ENDL;
audio_ok = true;
}
else
{
Check_FMOD_Error(result, "ESD audio output FAILED to initialize");
Check_FMOD_Error(result, "PulseAudio audio output FAILED to initialize");
}
}
else
{
LL_DEBUGS("AppInit") << "ESD audio output SKIPPED" << LL_ENDL;
LL_DEBUGS("AppInit") << "PulseAudio audio output SKIPPED" << LL_ENDL;
}
}
if (!audio_ok)
{
if (NULL == getenv("LL_BAD_FMODEX_OSS")) /*Flawfinder: ignore*/
if (NULL == getenv("LL_BAD_FMOD_ALSA")) /*Flawfinder: ignore*/
{
LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_OSS) == FMOD_OK &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK)
LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
if(mSystem->setOutput(FMOD_OUTPUTTYPE_ALSA) == FMOD_OK &&
(result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{
LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
audio_ok = true;
}
else
{
Check_FMOD_Error(result, "OSS audio output FAILED to initialize" << LL_ENDL;
Check_FMOD_Error(result, "ALSA audio output FAILED to initialize");
}
}
else
{
LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
LL_DEBUGS("AppInit") << "ALSA audio output SKIPPED" << LL_ENDL;
}
}
if (!audio_ok)
{
if (NULL == getenv("LL_BAD_FMODEX_ALSA")) /*Flawfinder: ignore*/
if (NULL == getenv("LL_BAD_FMOD_OSS")) /*Flawfinder: ignore*/
{
LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_ALSA) &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK)
LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
if(mSystem->setOutput(FMOD_OUTPUTTYPE_OSS) == FMOD_OK &&
(result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{
LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
audio_ok = true;
}
else
{
Check_FMOD_Error(result, "ALSA audio output FAILED to initialize");
Check_FMOD_Error(result, "OSS audio output FAILED to initialize");
}
} else
}
else
{
LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
}
@@ -258,25 +253,20 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
return false;
}
// On Linux, FMOD causes a SIGPIPE for some netstream error
// conditions (an FMOD bug); ignore SIGPIPE so it doesn't crash us.
// NOW FIXED in FMOD 3.x since 2006-10-01.
//signal(SIGPIPE, SIG_IGN);
// We're interested in logging which output method we
// ended up with, for QA purposes.
FMOD_OUTPUTTYPE output_type;
mSystem->getOutput(output_type);
mSystem->getOutput(&output_type);
switch (output_type)
{
case FSOUND_OUTPUT_NOSOUND:
LL_DEBUGS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
case FSOUND_OUTPUT_OSS:
LL_DEBUGS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
case FSOUND_OUTPUT_ESD:
LL_DEBUGS("AppInit") << "Audio output: ESD" << LL_ENDL; break;
case FSOUND_OUTPUT_ALSA:
LL_DEBUGS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
case FMOD_OUTPUTTYPE_NOSOUND:
LL_INFOS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
case FMOD_OUTPUTTYPE_PULSEAUDIO:
LL_INFOS("AppInit") << "Audio output: PulseAudio" << LL_ENDL; break;
case FMOD_OUTPUTTYPE_ALSA:
LL_INFOS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
case FMOD_OUTPUTTYPE_OSS:
LL_INFOS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
default:
LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
};
@@ -297,7 +287,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
*/
result = mSystem->init( num_channels + 2, fmod_flags, 0);
}
if(Check_FMOD_Error(result, "Error initializing FMOD"))
if(Check_FMOD_Error(result, "Error initializing FMOD Ex"))
return false;
#endif
@@ -305,7 +295,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
if (!getStreamingAudioImpl()) // no existing implementation added
setStreamingAudioImpl(new LLStreamingAudio_FMODEX(mSystem));
LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() FMOD initialized correctly" << LL_ENDL;
LL_INFOS("AppInit") << "LLAudioEngine_FMODEX::init() FMOD Ex initialized correctly" << LL_ENDL;
mInited = true;
@@ -321,10 +311,10 @@ std::string LLAudioEngine_FMODEX::getDriverName(bool verbose)
U32 version;
if(!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion"))
{
return llformat("FMOD version %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
return llformat("FMOD Ex %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
}
}
return "FMOD";
return "FMODEx";
}
@@ -342,12 +332,13 @@ void LLAudioEngine_FMODEX::shutdown()
{
stopInternetStream();
llinfos << "About to LLAudioEngine::shutdown()" << llendl;
LLAudioEngine::shutdown();
llinfos << "LLAudioEngine_FMODEX::shutdown() closing FMOD" << llendl;
llinfos << "LLAudioEngine_FMODEX::shutdown() closing FMOD Ex" << llendl;
mSystem->close();
mSystem->release();
llinfos << "LLAudioEngine_FMODEX::shutdown() done closing FMOD" << llendl;
llinfos << "LLAudioEngine_FMODEX::shutdown() done closing FMOD Ex" << llendl;
delete mListenerp;
mListenerp = NULL;

View File

@@ -89,7 +89,7 @@ S32 check_for_invalid_wav_formats(const std::string& in_fname, std::string& erro
// ********************************
LLAPRFile infile ;
infile.open(in_fname,LL_APR_RB);
infile.open(in_fname,LL_APR_RB);
// ********************************
if (!infile.getFileHandle())
{

View File

@@ -35,6 +35,8 @@
#if LL_WINDOWS
#include <windows.h>
#else
#include <unistd.h>
#endif
#include "linden_common.h"

View File

@@ -42,6 +42,7 @@
#if LL_DARWIN || LL_LINUX
// not required or present on Win32
#include <sys/wait.h>
#include <unistd.h>
#endif
LLProcessLauncher::LLProcessLauncher()

View File

@@ -416,7 +416,7 @@ public:
{ //we have data
mData.erase(data);
mElementCount = mData.size();
notifyRemoval(data);
this->notifyRemoval(data);
checkAlive();
return true;
}
@@ -454,7 +454,7 @@ public:
{
mData.erase(data);
mElementCount = mData.size();
notifyRemoval(data);
this->notifyRemoval(data);
llwarns << "FOUND!" << llendl;
checkAlive();
return;
@@ -663,7 +663,7 @@ public:
//(don't notify listeners of addition)
for (U32 i = 0; i < child->getChildCount(); i++)
{
addChild(child->getChild(i), TRUE);
this->addChild(child->getChild(i), TRUE);
}
//destroy child
@@ -707,10 +707,10 @@ public:
return false;
}
if (this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup()))
if (this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup()))
{
//we got it, just act like a branch
oct_node* node = getNodeAt(data);
oct_node* node = this->getNodeAt(data);
if (node == this)
{
LLOctreeNode<T>::insert(data);
@@ -723,7 +723,7 @@ public:
else if (this->getChildCount() == 0)
{
//first object being added, just wrap it up
while (!(this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup())))
while (!(this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup())))
{
LLVector4a center, size;
center = this->getCenter();
@@ -738,7 +738,7 @@ public:
}
else
{
while (!(this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup())))
while (!(this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup())))
{
//the data is outside the root node, we need to grow
LLVector4a center(this->getCenter());
@@ -764,7 +764,7 @@ public:
//clear our children and add the root copy
this->clearChildren();
addChild(newnode);
this->addChild(newnode);
}
//insert the data

View File

@@ -704,9 +704,9 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)
{
color->set(LLColor4::orange6);
}
else if ( "clear" == color_name )
else if ( "clear" == color_name || "transparent" == color_name )
{
color->set(0.f, 0.f, 0.f, 0.f);
color->set(LLColor4::transparent);
}
else
{

View File

@@ -202,8 +202,8 @@ void LLCurl::Responder::completedHeader(U32 status, const std::string& reason, c
}
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLCurl::Responder* p)
{
++p->mReferenceCount;
@@ -216,7 +216,7 @@ namespace boost
delete p;
}
}
};
//};
//////////////////////////////////////////////////////////////////////////////

View File

@@ -378,11 +378,11 @@ private:
void cleanupMulti(LLCurl::Multi* multi) ;
} ;
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLCurl::Responder* p);
void intrusive_ptr_release(LLCurl::Responder* p);
};
//};
class LLCurlRequest

View File

@@ -55,11 +55,11 @@ void pump_debug(const char *file, S32 line);
/**
* intrusive pointer support
*/
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLIOPipe* p);
void intrusive_ptr_release(LLIOPipe* p);
};
//};
/**
* @class LLIOPipe
@@ -250,13 +250,13 @@ protected:
LLPumpIO* pump) = 0;
private:
friend void boost::intrusive_ptr_add_ref(LLIOPipe* p);
friend void boost::intrusive_ptr_release(LLIOPipe* p);
friend void /*boost::*/intrusive_ptr_add_ref(LLIOPipe* p);
friend void /*boost::*/intrusive_ptr_release(LLIOPipe* p);
U32 mReferenceCount;
};
namespace boost
{
//namespace boost
//{
inline void intrusive_ptr_add_ref(LLIOPipe* p)
{
++p->mReferenceCount;
@@ -268,7 +268,7 @@ namespace boost
delete p;
}
}
};
//};
#if 0

View File

@@ -32,8 +32,8 @@
#include "net.h"
#include "message.h"
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p)
{
++p->mReferenceCount;
@@ -46,7 +46,7 @@ namespace boost
delete p;
}
}
};
//};
LLRegionPresenceVerifier::Response::~Response()
{

View File

@@ -89,10 +89,10 @@ public:
};
};
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p);
void intrusive_ptr_release(LLRegionPresenceVerifier::Response* p);
};
//};
#endif //LL_LLREGIONPRESENCEVERIFIER_H

View File

@@ -36,6 +36,7 @@
#include <winsock2.h>
#include <windows.h>
#else
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

View File

@@ -77,8 +77,8 @@ void LLCurl::Responder::result(LLSD const&)
{
}
namespace boost
{
//namespace boost
//{
void intrusive_ptr_add_ref(LLCurl::Responder* p)
{
++p->mReferenceCount;
@@ -91,5 +91,5 @@ namespace boost
delete p;
}
}
};
//};

View File

@@ -90,6 +90,7 @@ class LLGLFence
public:
virtual void placeFence() = 0;
virtual void wait() = 0;
virtual ~LLGLFence() {}
};
//============================================================================

View File

@@ -7,6 +7,7 @@ class LLDeleteJob
{
public:
virtual BOOL work(U32& completed);
virtual ~LLDeleteJob() {}
};
class LLViewDeleteJob : public LLDeleteJob
{

View File

@@ -2372,7 +2372,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
if (mCanSelect)
{
// Ignore capslock
mask = mask;
//mask = mask; //Why was this here?
if (mask == MASK_NONE)
{

View File

@@ -54,6 +54,7 @@ static bool isProcessAlive(U32 pid)
}
#else //Everyone Else
#include <unistd.h>
static U32 getPID() {
return getpid();

View File

@@ -2621,8 +2621,9 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
if (sortpat)
{
// Sort the list of system fonts from most-to-least-desirable.
FcResult fresult;
fs = FcFontSort(NULL, sortpat, elide_unicode_coverage,
NULL, NULL);
NULL, &fresult);
FcPatternDestroy(sortpat);
}

View File

@@ -838,7 +838,7 @@ namespace LLInitParam
BaseBlock::addParam(block_descriptor, param_descriptor, name);
}
setValue(value);
this->setValue(value);
}
bool isProvided() const { return Param::anyProvided(); }
@@ -926,7 +926,7 @@ namespace LLInitParam
void set(value_assignment_t val, bool flag_as_provided = true)
{
param_value_t::clearValueName();
setValue(val);
this->setValue(val);
setProvided(flag_as_provided);
}
@@ -1068,7 +1068,7 @@ namespace LLInitParam
// assign block contents to this param-that-is-a-block
void set(value_assignment_t val, bool flag_as_provided = true)
{
setValue(val);
this->setValue(val);
param_value_t::clearValueName();
// force revalidation of block
// next call to isProvided() will update provision status based on validity
@@ -1723,7 +1723,7 @@ namespace LLInitParam
Optional& operator =(value_assignment_t val)
{
set(val);
this->set(val);
return *this;
}
@@ -1752,7 +1752,7 @@ namespace LLInitParam
Mandatory& operator =(value_assignment_t val)
{
set(val);
this->set(val);
return *this;
}

View File

@@ -487,10 +487,34 @@ void LLScriptLibrary::init()
addFunction(10.f, 0.f, dummy_func, "llSetContentType", NULL, "ki");
addFunction(10.f, 0.f, dummy_func, "llLinkSitTarget", NULL, "ivr");
addFunction(10.f, 0.f, dummy_func, "llAvatarOnLinkSitTarget", "k", "i");
/* No info on these new functions yet....
* addFunction(10.f, 0.f, dummy_func, "llSetVelocity", "", "");
* addFunction(10.f, 0.f, dummy_func, "llSetRotationalVelocity", "", "");
*/
addFunction(10.f, 0.f, dummy_func, "llGetMassMKS", "f", NULL);
addFunction(10.f, 0.f, dummy_func, "llGetMemoryLimit", "i", NULL);
addFunction(10.f, 0.f, dummy_func, "llGetParcelMusicURL", "s", NULL);
addFunction(10.f, 0.f, dummy_func, "llGetPhysicsMaterial", "l", NULL);
addFunction(10.f, 0.f, dummy_func, "llManageEstateAccess", "i", "ik");
addFunction(10.f, 0.f, dummy_func, "llSetAngularVelocity", NULL, "vi");
addFunction(10.f, 0.f, dummy_func, "llSetKeyframedMotion", NULL, "ll");
addFunction(10.f, 0.f, dummy_func, "llSetPhysicsMaterial", NULL, "iffff");
addFunction(10.f, 0.f, dummy_func, "llSetRegionPos", "i", "v");
addFunction(10.f, 0.f, dummy_func, "llSetVelocity", NULL, "vi");
addFunction(10.f, 0.f, dummy_func, "llTransferLindenDollars", "k", "ki");
//Pathfinder functions. Current state: alpha, thus subject to change.
//This and the preceding line are to be removed in future revisions of this file.
addFunction(10.f, 0.f, dummy_func, "llCreateCharacter", NULL, "l");
addFunction(10.f, 0.f, dummy_func, "llDeleteCharacter", NULL, NULL);
addFunction(10.f, 0.f, dummy_func, "llEvade", NULL, "kl");
addFunction(10.f, 0.f, dummy_func, "llExecCharacterCmd", NULL, "il");
addFunction(10.f, 0.f, dummy_func, "llGetClosestNavPoint", "l", "vl");
addFunction(10.f, 0.f, dummy_func, "llFleeFrom", NULL, "vfl");
addFunction(10.f, 0.f, dummy_func, "llNavigateTo", NULL, "vl");
addFunction(10.f, 0.f, dummy_func, "llPatrolPoints", NULL, "ll");
addFunction(10.f, 0.f, dummy_func, "llPursue", NULL, "kl");
addFunction(10.f, 0.f, dummy_func, "llUpdateCharacter", NULL, "l");
addFunction(10.f, 0.f, dummy_func, "llWanderWithin", NULL, "vfl");
// REGARDING OSSL FUNCTIONS
// These additions should be posted underneath the llFunctions
@@ -624,6 +648,16 @@ void LLScriptLibrary::init()
addFunction(10.f, 0.f, dummy_func, "osNpcGetPos", "v", "k");
addFunction(10.f, 0.f, dummy_func, "osNpcStopMoveToTarget", NULL, "k");
addFunction(10.f, 0.f, dummy_func, "osIsNpc", "i", "k");
addFunction(10.f, 0.f, dummy_func, "osNpcGetOwner", "k", "k");
addFunction(10.f, 0.f, dummy_func, "osGetGridCustom", "s", "s");
addFunction(10.f, 0.f, dummy_func, "osGetGridHomeURI", "s", NULL);
addFunction(10.f, 0.f, dummy_func, "osNpcPlayAnimation", NULL, "ks");
addFunction(10.f, 0.f, dummy_func, "osNpcSit", NULL, "kki");
addFunction(10.f, 0.f, dummy_func, "osNpcStand", NULL, "k");
addFunction(10.f, 0.f, dummy_func, "osNpcStopAnimation", NULL, "ks");
addFunction(10.f, 0.f, dummy_func, "osSetRot", NULL, "kq");
}
LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only)

View File

@@ -1354,39 +1354,40 @@ if (OPENAL)
endif (OPENAL)
if (FMOD OR FMODEX)
if(FMODEX)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
endif(FMODEX)
if(FMOD)
if (FMODEX)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
endif (FMODEX)
if (FMOD)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD")
endif(FMOD)
endif (FMOD)
if (NOT WINDOWS)
if (DARWIN)
set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
if(FMOD AND FMODEX)
set(fmodwrapper_needed_LIBRARIES "${FMODEX_LIBRARY} ${FMOD_LIBRARY}")
else(FMOD AND FMODEX)
if(FMODEX)
set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY})
endif(FMODEX)
if(FMOD)
set(fmodwrapper_needed_LIBRARIES "${FMOD_LIBRARY}")
endif(FMOD)
endif(FMOD AND FMODEX)
if (DARWIN)
list(APPEND fmodwrapper_needed_LIBRARIES ${CARBON_LIBRARY})
set_target_properties(
fmodwrapper
PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources"
LINK_FLAGS "-unexported_symbols_list \"${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp\""
)
endif (DARWIN)
if (FMODEX)
set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY})
endif (FMODEX)
if (FMOD)
set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY})
endif (FMOD)
set_target_properties(
fmodwrapper
PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources"
LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp"
)
set(FMODWRAPPER_LIBRARY fmodwrapper)
target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
endif (NOT WINDOWS)
else (DARWIN)
# fmodwrapper unnecessary on linux or windows, for fmod and fmodex
if (FMODEX)
set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
endif (FMODEX)
if (FMOD)
set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY})
endif (FMOD)
endif (DARWIN)
endif (FMOD OR FMODEX)
set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")

View File

@@ -51,6 +51,8 @@ changed changed( integer change ):Triggered various event change the task:(tes
remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests
http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL
transaction_result transaction_result(key id, integer success, string data):Triggered when task receives asynchronous data.
path_update path_update(integer type, list reserved):Triggered when the state of a pathfinder character changes. Note; "list reserved" is not currently used
# integer constants
[word .1, .1, .5]
@@ -605,6 +607,121 @@ WL_CLOUD_SCROLL_Y_LOCK Windlight Cloud Scroll Y Lock
WL_CLOUD_SCROLL_X_LOCK Windlight Cloud Scroll X Lock
WL_DRAW_CLASSIC_CLOUDS Windlight Draw Classic Clouds
# OSSL constants
STATS_TIME_DILATION
STATS_SIM_FPS
STATS_PHYSICS_FPS
STATS_AGENT_UPDATES
STATS_ROOT_AGENTS
STATS_CHILD_AGENTS
STATS_TOTAL_PRIMS
STATS_ACTIVE_PRIMS
STATS_FRAME_MS
STATS_NET_MS
STATS_PHYSICS_MS
STATS_IMAGE_MS
STATS_OTHER_MS
STATS_IN_PACKETS_PER_SECOND
STATS_OUT_PACKETS_PER_SECOND
STATS_UNACKED_BYTES
STATS_AGENT_MS
STATS_PENDING_DOWNLOADS
STATS_PENDING_UPLOADS
STATS_ACTIVE_SCRIPTS
STATS_SCRIPT_LPS
## Constants for osNpc* functions
NPC
OS_NPC_CREATOR_OWNED
OS_NPC_NOT_OWNED
OS_NPC_SENSE_AS_AGENT
OS_NPC_FLY
OS_NPC_NO_FLY
OS_NPC_LAND_AT_TARGET
OS_NPC_SIT_NOW
## Missing LSL constants (from http://wiki.secondlife.com/wiki/Category:LSL_Constants)
## Adding now, sorting later
ATTACH_HUD_BOTTOM
ATTACH_HUD_BOTTOM_LEFT
ATTACH_HUD_BOTTOM_RIGHT
ATTACH_HUD_CENTER_1
ATTACH_HUD_CENTER_2
ATTACH_HUD_TOP_CENTER
ATTACH_HUD_TOP_LEFT
ATTACH_HUD_TOP_RIGHT
ATTACH_LEFT_PEC
ATTACH_RIGHT_PEC
HTTP_VERBOSE_THROTTLE
OBJECT_PRIM_EQUIVALENCE
PARCEL_MEDIA_COMMAND_LOOP_SET
PRIM_LINK_TARGET
PRIM_OMEGA
PRIM_PHYSICS_MATERIAL
PRIM_PHYSICS_SHAPE_TYPE
PRIM_POS_LOCAL
PRIM_ROT_LOCAL
PROFILE_NONE
PROFILE_SCRIPT_MEMORY
RCERR_CAST_TIME_EXCEEDED
RCERR_SIM_PERF_LOW
RCERR_UNKNOWN
RC_DATA_FLAGS
RC_DETECT_PHANTOM
RC_GET_LINK_NUM
RC_GET_NORMAL
RC_GET_ROOT_KEY
RC_MAX_HITS
RC_REJECT_AGENTS
RC_REJECT_LAND
RC_REJECT_NONPHYSICAL
RC_REJECT_PHYSICAL
RC_REJECT_TYPES
STATUS_BLOCK_GRAB_OBJECT
#Even more missing constants, thanks to Justin Clark Casey for pointing me into the right direction
CAMERA_FOCUS_OFFSET_X
CAMERA_FOCUS_OFFSET_Y
CAMERA_FOCUS_OFFSET_Z
CAMERA_FOCUS_X
CAMERA_FOCUS_Y
CAMERA_FOCUS_Z
CAMERA_POSITION_X
CAMERA_POSITION_Y
CAMERA_POSITION_Z
CHANGED_ANIMATION
CHANGED_REGION_RESTART
DATA_SIM_RELEASE
ESTATE_ACCESS_ALLOWED_AGENT_ADD
ESTATE_ACCESS_ALLOWED_AGENT_REMOVE
ESTATE_ACCESS_ALLOWED_GROUP_ADD
ESTATE_ACCESS_ALLOWED_GROUP_REMOVE
ESTATE_ACCESS_BANNED_AGENT_ADD
ESTATE_ACCESS_BANNED_AGENT_REMOVE
LIST_STAT_HARMONIC_MEAN
PARCEL_DETAILS_CLAIMDATE
PERMISSION_CHANGE_JOINTS
PERMISSION_CHANGE_PERMISSIONS
PERMISSION_RELEASE_OWNERSHIP
PERMISSION_REMAP_CONTROLS
VEHICLE_FLAG_LOCK_HOVER_HEIGHT
VEHICLE_FLAG_LOCK_ROTATION
VEHICLE_FLAG_NO_DEFLECTION
VEHICLE_FLAG_NO_X
VEHICLE_FLAG_NO_Y
VEHICLE_FLAG_NO_Z
VEHICLE_RANGE_BLOCK
VEHICLE_ROLL_FRAME
LSL_STATUS_BOUNDS_ERROR
LSL_STATUS_INTERNAL_ERROR
LSL_STATUS_MALFORMED_PARAMS
LSL_STATUS_NOT_FOUND
LSL_STATUS_NOT_SUPPORTED
LSL_STATUS_OK
LSL_STATUS_TYPE_MISMATCH
LSL_STATUS_WHITELIST_FAILED
# string constants
[word .1, .3, .5]
NULL_KEY Indicates an empty key

View File

@@ -5115,6 +5115,17 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>EnableGestureSoundsSelf</key>
<map>
<key>Comment</key>
<string>Play sounds from your gestures when EnableGestureSounds is false. (Useless otherewise)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>EnableMouselook</key>
<map>
<key>Comment</key>
@@ -7234,6 +7245,39 @@
<key>Value</key>
<real>1.0</real>
</map>
<key>InventoryOutboxMaxFolderCount</key>
<map>
<key>Comment</key>
<string>Maximum number of subfolders allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>21</integer>
</map>
<key>InventoryOutboxMaxFolderDepth</key>
<map>
<key>Comment</key>
<string>Maximum number of nested levels of subfolders allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>4</integer>
</map>
<key>InventoryOutboxMaxItemCount</key>
<map>
<key>Comment</key>
<string>Maximum number of items allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>200</integer>
</map>
<key>InventorySortOrder</key>
<map>
<key>Comment</key>
@@ -8174,7 +8218,7 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>MemoryLogFrequency</key>
<key>MemoryLogFrequency</key>
<map>
<key>Comment</key>
<string>Seconds between display of Memory in log (0 for never)</string>
@@ -8284,17 +8328,6 @@
<key>Value</key>
<real>0</real>
</map>
<key>MeshUploadTimeOut</key>
<map>
<key>Comment</key>
<string>Maximum time in seconds for llcurl to execute a mesh uploading request</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<real>600</real>
</map>
<key>MeshUploadFakeErrors</key>
<map>
<key>Comment</key>
@@ -8306,8 +8339,18 @@
<key>Value</key>
<real>0</real>
</map>
<key>MigrateCacheDirectory</key>
<key>MeshUploadTimeOut</key>
<map>
<key>Comment</key>
<string>Maximum time in seconds for llcurl to execute a mesh uploading request</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<real>600</real>
</map>
<key>MigrateCacheDirectory</key>
<map>
<key>Comment</key>
<string>Check for old version of disk cache to migrate to current location</string>
@@ -9993,32 +10036,32 @@
<key>RenderShadowNearDist</key>
<map>
<key>Comment</key>
<string>Near clip plane of shadow camera (affects precision of depth shadows).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>256</real>
<real>256</real>
<real>256</real>
</array>
</map>
<key>RenderShadowClipPlanes</key>
<map>
<key>Comment</key>
<string>Near clip plane split distances for shadow map frusta.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>1.0</real>
<real>12.0</real>
<real>32.0</real>
</array>
<string>Near clip plane of shadow camera (affects precision of depth shadows).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>256</real>
<real>256</real>
<real>256</real>
</array>
</map>
<key>RenderShadowClipPlanes</key>
<map>
<key>Comment</key>
<string>Near clip plane split distances for shadow map frusta.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>1.0</real>
<real>12.0</real>
<real>32.0</real>
</array>
</map>
<key>RenderShadowSplitExponent</key>
<map>
@@ -10083,55 +10126,55 @@
<key>Value</key>
<real>0.5</real>
</map>
<key>RenderSSAOScale</key>
<map>
<key>Comment</key>
<string>Scaling factor for the area to sample for occluders (pixels at 1 meter away, inversely varying with distance)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>500.0</real>
</map>
<key>RenderSSAOMaxScale</key>
<map>
<key>Comment</key>
<string>Maximum screen radius for sampling (pixels)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>200</integer>
</map>
<key>RenderSSAOFactor</key>
<map>
<key>Comment</key>
<string>Occlusion sensitivity factor for ambient occlusion (larger is more)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.30</real>
</map>
<key>RenderSSAOEffect</key>
<map>
<key>Comment</key>
<string>Multiplier for (1) value and (2) saturation (HSV definition), for areas which are totally occluded. Blends with original color for partly-occluded areas. (Third component is unused.)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>0.80</real>
<real>1.00</real>
<real>0.00</real>
</array>
</map>
<key>RenderBumpmapMinDistanceSquared</key>
<key>RenderSSAOScale</key>
<map>
<key>Comment</key>
<string>Scaling factor for the area to sample for occluders (pixels at 1 meter away, inversely varying with distance)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>500.0</real>
</map>
<key>RenderSSAOMaxScale</key>
<map>
<key>Comment</key>
<string>Maximum screen radius for sampling (pixels)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>200</integer>
</map>
<key>RenderSSAOFactor</key>
<map>
<key>Comment</key>
<string>Occlusion sensitivity factor for ambient occlusion (larger is more)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.30</real>
</map>
<key>RenderSSAOEffect</key>
<map>
<key>Comment</key>
<string>Multiplier for (1) value and (2) saturation (HSV definition), for areas which are totally occluded. Blends with original color for partly-occluded areas. (Third component is unused.)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Vector3</string>
<key>Value</key>
<array>
<real>0.80</real>
<real>1.00</real>
<real>0.00</real>
</array>
</map>
<key>RenderBumpmapMinDistanceSquared</key>
<map>
<key>Comment</key>
<string>Maximum distance at which to render bumpmapped primitives (distance in meters, squared)</string>
@@ -10142,17 +10185,17 @@
<key>Value</key>
<real>100.0</real>
</map>
<key>RenderNormalMapScale</key>
<map>
<key>Comment</key>
<string>Scaler applied to height map when generating normal maps</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>64</real>
</map>
<key>RenderNormalMapScale</key>
<map>
<key>Comment</key>
<string>Scaler applied to height map when generating normal maps</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>64</real>
</map>
<key>RenderCubeMap</key>
<map>
<key>Comment</key>
@@ -10230,29 +10273,29 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderDelayCreation</key>
<map>
<key>Comment</key>
<string>Throttle creation of drawables.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderDelayCreation</key>
<map>
<key>Comment</key>
<string>Throttle creation of drawables.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderAnimateRes</key>
<map>
<key>Comment</key>
<string>Animate rezing prims.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderAnimateRes</key>
<map>
<key>Comment</key>
<string>Animate rezing prims.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderBakeSunlight</key>
<map>
@@ -10265,7 +10308,7 @@
<key>Value</key>
<integer>0</integer>
</map>
<!--<key>RenderAnimateTrees</key>
<map>
<key>Comment</key>
@@ -10314,27 +10357,27 @@
</map>
<key>RenderDeferredAlphaSoften</key>
<map>
<key>Comment</key>
<string>Scalar for softening alpha surfaces (for soft particles).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.75</real>
</map>
<key>RenderDeferredNoise</key>
<map>
<key>Comment</key>
<string>Noise scalar to hide banding in deferred render.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>4</real>
</map>
<map>
<key>Comment</key>
<string>Scalar for softening alpha surfaces (for soft particles).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.75</real>
</map>
<key>RenderDeferredNoise</key>
<map>
<key>Comment</key>
<string>Noise scalar to hide banding in deferred render.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>4</real>
</map>
<key>RenderDeferredSpotShadowBias</key>
<map>
<key>Comment</key>
@@ -10380,7 +10423,6 @@
<key>Value</key>
<real>0.01</real>
</map>
<key>RenderShadowBiasError</key>
<map>
<key>Comment</key>
@@ -10602,14 +10644,14 @@
<key>RenderDeferred</key>
<map>
<key>Comment</key>
<string>Use deferred rendering pipeline.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<string>Use deferred rendering pipeline.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderDeferredSun</key>
<map>
@@ -10661,25 +10703,25 @@
<key>RenderDeferredSunWash</key>
<map>
<key>Comment</key>
<string>Amount local lights are washed out by sun.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.5</real>
</map>
<key>RenderShadowNoise</key>
<map>
<key>Comment</key>
<string>Magnitude of noise on shadow samples.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>-0.0001</real>
<key>Comment</key>
<string>Amount local lights are washed out by sun.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.5</real>
</map>
<key>RenderShadowNoise</key>
<map>
<key>Comment</key>
<string>Magnitude of noise on shadow samples.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>-0.0001</real>
</map>
<key>RenderShadowErrorCutoff</key>
<map>
@@ -10733,15 +10775,15 @@
</map>
<key>RenderShadowBlurSamples</key>
<map>
<key>Comment</key>
<string>Number of samples to take for each pass of shadow blur (value range 1-16). Actual number of samples is value * 2 - 1.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<real>4</real>
</map>
<key>Comment</key>
<string>Number of samples to take for each pass of shadow blur (value range 1-16). Actual number of samples is value * 2 - 1.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<real>4</real>
</map>
<key>RenderShadowBlurDistFactor</key>
<map>
<key>Comment</key>
@@ -10754,7 +10796,7 @@
<real>0.1</real>
</map>
<key>RenderDynamicLOD</key>
<key>RenderDynamicLOD</key>
<map>
<key>Comment</key>
<string>Dynamically adjust level of detail.</string>
@@ -11511,28 +11553,28 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderUseShaderLOD</key>
<map>
<key>Comment</key>
<string>Whether we want to have different shaders for LOD</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderUseShaderNearParticles</key>
<map>
<key>Comment</key>
<string>Whether we want to use shaders on near particles</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderUseShaderLOD</key>
<map>
<key>Comment</key>
<string>Whether we want to have different shaders for LOD</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderUseShaderNearParticles</key>
<map>
<key>Comment</key>
<string>Whether we want to use shaders on near particles</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderVBOEnable</key>
<map>
<key>Comment</key>
@@ -11710,18 +11752,18 @@
<key>Value</key>
<integer>32</integer>
</map>
<key>RunBtnState</key>
<map>
<key>Comment</key>
<string/>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RunMultipleThreads</key>
<key>RunBtnState</key>
<map>
<key>Comment</key>
<string/>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RunMultipleThreads</key>
<map>
<key>Comment</key>
<string>If TRUE keep background threads active during render</string>

View File

@@ -6,15 +6,20 @@
## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD Ex audio driver.
#export LL_BAD_FMODEX_DRIVER=x
## - Avoids using any FMOD audio driver.
#export LL_BAD_FMOD_DRIVER=x
## - Avoids using the FMOD ESD audio driver.
#export LL_BAD_FMOD_ESD=x
## - Avoids using the FMOD OSS audio driver.
#export LL_BAD_FMOD_OSS=x
## - Avoids using the FMOD ALSA audio driver.
## - Avoids using the FMOD Ex PulseAudio audio driver.
#export LL_BAD_FMOD_PULSEAUDIO=x
## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
#export LL_BAD_FMOD_ALSA=x
## - Avoids using the FMOD or FMOD Ex OSS audio driver.
#export LL_BAD_FMOD_OSS=x
## - Avoids using the FMOD or FMOD Ex ESD audio driver.
#export LL_BAD_FMOD_ESD=x
## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but

View File

@@ -4001,7 +4001,7 @@ void LLAgent::sendAgentSetAppearance()
llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl;
if(transmitted_params < 218) {
LLNotificationsUtil::add("SGIncompleteAppearence");
LLNotificationsUtil::add("SGIncompleteAppearance");
}
sendReliableMessage();
}

View File

@@ -1791,7 +1791,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
(glow << 24);
U32 vec[4];
vec[0] = vec[1] = vec[2] = vec[3] = glow32;
std::fill_n(vec,4,glow32);
src.loadua((F32*) vec);

View File

@@ -178,6 +178,7 @@ class AIFilePicker;
class LLInventoryFVBridgeBuilder
{
public:
LLInventoryFVBridgeBuilder() {}
virtual ~LLInventoryFVBridgeBuilder() {}
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
LLAssetType::EType actual_asset_type,
@@ -627,6 +628,7 @@ public:
class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
{
public:
LLRecentInventoryBridgeBuilder(): LLInventoryFVBridgeBuilder() {}
// Overrides FolderBridge for Recent Inventory Panel.
// It use base functionality for bridges other than FolderBridge.
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,

View File

@@ -1435,10 +1435,10 @@ bool idle_startup()
{
case LLUserAuth::E_OK:
response = LLUserAuth::getInstance()->getResponse();
login_response = response["login"];
reason_response = response["reason"];
message_response = response["message"];
message_id = response["message_id"];
login_response = response["login"].asString();
reason_response = response["reason"].asString();
message_response = response["message"].asString();
message_id = response["message_id"].asString();
if(login_response == "true")
{
@@ -4293,45 +4293,45 @@ bool process_login_success_response(std::string& password)
// Override grid info with anything sent in the login response
std::string tmp = response["gridname"];
std::string tmp = response["gridname"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setGridName(tmp);
tmp = response["loginuri"];
tmp = response["loginuri"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginUri(tmp);
tmp = response["welcome"];
tmp = response["welcome"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp);
tmp = response["loginpage"];
tmp = response["loginpage"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp);
tmp = response["economy"];
tmp = response["economy"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp);
tmp = response["helperuri"];
tmp = response["helperuri"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp);
tmp = response["about"];
tmp = response["about"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp);
tmp = response["website"];
tmp = response["website"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp);
tmp = response["help"];
tmp = response["help"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp);
tmp = response["support"];
tmp = response["support"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp);
tmp = response["register"];
tmp = response["register"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp);
tmp = response["account"];
tmp = response["account"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp);
tmp = response["password"];
tmp = response["password"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp);
tmp = response["search"];
tmp = response["search"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp);
tmp = response["currency"];
tmp = response["currency"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp);
tmp = response["real_currency"];
tmp = response["real_currency"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp);
tmp = response["directory_fee"];
tmp = response["directory_fee"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setDirectoryFee(atoi(tmp.c_str()));
tmp = response["max_groups"];
tmp = response["max_groups"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
tmp = response["max-agent-groups"];
tmp = response["max-agent-groups"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
tmp = response["VoiceConnector"];
tmp = response["VoiceConnector"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp);
gHippoGridManager->saveFile();
gHippoLimits->setLimits();
@@ -4351,4 +4351,4 @@ bool process_login_success_response(std::string& password)
success = true;
}
return success;
}
}

View File

@@ -236,8 +236,8 @@ void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3
const F32 xyScaleInv = (1.f / xyScale)*(0.2222222222f);
F32 vec[3] = {
fmod((F32)(mOriginGlobal.mdV[0] + x)*xyScaleInv, 256.f),
fmod((F32)(mOriginGlobal.mdV[1] + y)*xyScaleInv, 256.f),
(F32)fmod((mOriginGlobal.mdV[0] + x)*xyScaleInv, 256.f),
(F32)fmod((mOriginGlobal.mdV[1] + y)*xyScaleInv, 256.f),
0.f
};
F32 rand_val = llclamp(noise2(vec)* 0.75f + 0.5f, 0.f, 1.f);

View File

@@ -9064,7 +9064,7 @@ class LLEditTakeOff : public view_listener_t
&& (gAgentWearables.getWearableCount(type) > 0))
{
// MULTI-WEARABLES: assuming user wanted to remove top shirt.
U32 wearable_index = gAgentWearables.getWearableCount(type) - 1;
S32 wearable_index = gAgentWearables.getWearableCount(type) - 1;
// [RLVa:KB] - Checked: 2010-06-09 (RLVa-1.2.0g) | Added: RLVa-1.2.0g
if ( (rlv_handler_t::isEnabled()) && (gRlvWearableLocks.hasLockedWearable(type)) )

View File

@@ -4873,7 +4873,9 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
// Don't play sounds from gestures if they are not enabled.
if (object_id == owner_id && !gSavedSettings.getBOOL("EnableGestureSounds"))
{
return;
// Don't mute own gestures, if they're not muted.
if(owner_id != gAgent.getID() || !gSavedSettings.getBOOL("EnableGestureSoundsSelf"))
return;
}
// <edit>

View File

@@ -1107,7 +1107,7 @@ public:
}
else if( i != you_index)
{
U32 loc = x << 16 | y << 8 | z; loc = loc;
//U32 loc = x << 16 | y << 8 | z; //Unused variable, why did this exist?
U32 pos = 0x0;
pos |= x;
pos <<= 8;

View File

@@ -89,7 +89,7 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
// ST_VERSION
StatAttributes("Version", TRUE, FALSE),
// ST_AVATAR_EDIT_SECONDS
StatAttributes("Seconds in Edit Appearence", FALSE, TRUE),
StatAttributes("Seconds in Edit Appearance", FALSE, TRUE),
// ST_TOOLBOX_SECONDS
StatAttributes("Seconds using Toolbox", FALSE, TRUE),
// ST_CHAT_COUNT

View File

@@ -842,7 +842,7 @@ void SHClientTagMgr::updateAvatarTag(LLVOAvatar* pAvatar)
std::map<LLUUID, LLSD>::iterator it = mAvatarTags.find(id);
LLSD new_tag = generateClientTag(pAvatar);
LLSD& old_tag = (it != mAvatarTags.end()) ? it->second : LLSD();
LLSD old_tag = (it != mAvatarTags.end()) ? it->second : LLSD();
bool dirty = old_tag.size() != new_tag.size() || !llsd_equals(new_tag,old_tag);
if(dirty)

View File

@@ -469,7 +469,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
case CURLE_SSL_CACERT:
case CURLE_SSL_CONNECT_ERROR:
message =
"Often this means that your computer\'s clock is set incorrectly.\n"
"Often this means that your computer's clock is set incorrectly.\n"
"Please go to Control Panels and make sure the time and date\n"
"are set correctly.\n"
"\n"

View File

@@ -22,7 +22,7 @@
follows="top|left"
font="SansSerif"
height="343"
bg_readonly_color="Transparent"
bg_readonly_color="transparent"
left="1"
max_length="65536"
name="support_editor"
@@ -49,7 +49,7 @@
<text_editor
enabled="false"
follows="left|top"
bg_readonly_color="Transparent"
bg_readonly_color="transparent"
left="1"
text_color="LtGray"
max_length="65536"

View File

@@ -911,7 +911,7 @@ Only large parcels can be listed in search.
height="16"
left="10"
length="1"
name="at URL:"
name="at URL2:"
type="string"
width="65">
Current URL:

View File

@@ -19,10 +19,10 @@
<button height="20" bottom_delta="-28" label="Save" font="SansSerif" left="20" name="save_btn" tool_tip="Save your new Display Name" width="113" />
<button height="20" bottom_delta="0" label="Reset" font="SansSerif" left_delta="123" name="reset_btn" tool_tip="Make Display Name the same as Username" width="113" />
<button height="20" bottom_delta="0" label="Cancel" font="SansSerif" left_delta="123" name="cancel_btn" tool_tip="Cancel and close this Dialog" width="113" />
<text left="20" bottom_delta="-25" width="360" height="18" font="SansSerif" name="name_confirm_label">
<text left="20" bottom_delta="-25" width="360" height="18" font="SansSerif" name="name_confirm_label2">
The name you give your avatar is called yours Display Name.
</text>
<text left="20" bottom_delta="-18" width="360" height="18" font="SansSerif" name="name_confirm_label">
<text left="20" bottom_delta="-18" width="360" height="18" font="SansSerif" name="name_confirm_label3">
You can change it once a week.
</text>
</floater>

View File

@@ -538,6 +538,20 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
yestext="Yes"/>
</notification>
<notification
icon="alertmodal.tga"
name="AttachmentDrop"
type="alertmodal">
You are about to drop your attachment.
Are you sure you want to continue?
<tag>confirm</tag>
<usetemplate
ignoretext="Confirm before dropping attachments"
name="okcancelignore"
notext="No"
yestext="Yes"/>
</notification>
<notification
icon="alertmodal.tga"
name="ClickPublishHelpLand"
@@ -7214,9 +7228,9 @@ Click 'Wear' to attach the Physics Wearable, or click 'Cancel' if you wish to ma
<notification
icon="alert.tga"
name="SGIncompleteAppearence"
name="SGIncompleteAppearance"
type="alert">
Sending incomplete appearence. You may appear to others as a cloud.
Sending incomplete appearance. You may appear to others as a cloud.
Your shape, skin, hair or eyes might be defect.
<usetemplate

View File

@@ -16,7 +16,7 @@
<view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="top|left" height="75"
left="235" name="CmdDivisor" width="0"/>
-->
<text bottom="-15" left="250" name="objects_link_text_box" width="300">Chat:</text>
<text bottom="-15" left="250" name="objects_link_text_box2" width="300">Chat:</text>
<check_box bottom_delta="-25" left_delta="-5" follows="left|top" control_name="PlayTypingSound" initial_value="true"
label="Play the typing sound for local chat" tool_tip="Silences the chatting type sound, making it quieter for things like performances." name="play_typing_sound_check"/>
<check_box bottom_delta="-20" follows="left|top" control_name="HideNotificationsInChat" initial_value="false"
@@ -25,7 +25,7 @@
label="Allow MU pose method." tool_tip="Allows the use of both /me and : to perform emotes." name="allow_mu_pose_check"/>
<check_box bottom_delta="-20" follows="left|top" control_name="AscentAutoCloseOOC"
label="Auto-close OOC comments." tool_tip="Will automatically append '))' to any message starting with '((', or visa versa." name="close_ooc_check"/>
<text bottom_delta="-15" follows="left|top" name="objects_link_text_box">Show links on chatting object names in chat history for:</text>
<text bottom_delta="-15" follows="left|top" name="objects_link_text_box3">Show links on chatting object names in chat history for:</text>
<radio_group bottom_delta="-26" control_name="LinksForChattingObjects" tool_tip="Enables a link to show you the owner of the speaking object."
follows="top" height="20" left="20" name="objects_link" width="350">
<radio_item bottom_delta="0" left_delta="5" name="no_object" width="48">No object</radio_item>
@@ -58,7 +58,7 @@
<check_box bottom_delta="-20" follows="left|top" initial_value="false" label="Send an item along with the response" name="AscentInstantMessageResponseItem" tool_tip="You can include an inventory item to send along with your auto response by dragging it from your inventory to the location below"/>
<text bottom_delta="120" left_delta="245" follows="left|top" height="18" name="text_box1">Response Text:</text>
<text_editor bottom_delta="-110" follows="left|top" height="110" max_length="1100" name="im_response" width="230" word_wrap="true" spell_check="true"/>
<text bottom_delta="-25" follows="left|top" height="18" name="text_box1">
<text bottom_delta="-25" follows="left|top" height="18" name="text_box2">
#f for user's first name, #l for last name,
#t for timestamp, #r for SLURL to you,
#i for your idle time. (e.g. "5 mins")

View File

@@ -24,7 +24,7 @@
<text bottom_delta="-26" follows="top" height="10" left="12" name="socks5_host_label">Socks 5 Host:</text>
<line_editor bottom_delta="-6" follows="top" font="SansSerif" height="20" left="90" name="socks5_proxy_host" tool_tip="The name or IP address of the SOCKS5 proxy you would like to use" width="311"/>
<spinner bottom_delta="-30" decimal_digits="0" follows="top" height="16" increment="1" initial_val="80" label="Port Number:" label_width="75" max_val="65535" min_val="0" name="socks5_proxy_port" width="140"/>
<text bottom_delta="-20" follows="top" height="10" left="12" name="socks5_auth_label">Socks5 Authentication:</text>
<text bottom_delta="-20" follows="top" height="10" left="12" name="socks5_auth_label2">Socks5 Authentication:</text>
<radio_group bottom_delta="-6" draw_border="false" follows="top" height="20" name="socks5_auth" width="420">
<radio_item bottom="0" height="20" left_delta="80" name="None" tool_tip="No authentication">None</radio_item>
<radio_item bottom="0" height="20" left_delta="50" name="UserPass" tool_tip="Username / Password authentication">Username/Password</radio_item>

View File

@@ -2527,4 +2527,144 @@ Sets value of param property for plugin module.
(OpenSim only.)
</string>
<string name="Unnamed">(Unnamed)</string>
<string name="LSLTipText_llGetMassMKS">
float llGetMassMKS()
Returns a float that is the mass (in
Kilograms) of the object that the
script is attached to.
</string>
<string name="LSLTipText_llGetMemoryLimit">
integer llGetMemoryLimit()
Get the maximum memory a script can use.
</string>
<string name="LSLTipText_llGetParcelMusicURL">
string llGetParcelMusicURL()
Returns a string containing the parcel streaming audio URL.
The object owner must also be the land owner.
</string>
<string name="LSLTipText_llGetPhysicsMaterial">
list llGetPhysicsMaterial()
Used to get the physical characteristics of an object.
Returns a list in the form [ float gravity_multiplier, float restitution, float friction, float density ]
</string>
<string name="LSLTipText_llManageEstateAccess">
integer llManageEstateAccess(integer action, key avatar)
Used to add or remove agents from the estate's agent access or ban lists or groups from the estate's group access list.
</string>
<string name="LSLTipText_llSetAngularVelocity">
llSetAngularVelocity(vector force, integer local)
Applies rotational velocity to object.
</string>
<string name="LSLTipText_llSetKeyframedMotion">
llSetKeyframedMotion(list keyframes, list options)
Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between keyframes by the simulator.
</string>
<string name="LSLTipText_llSetPhysicsMaterial">
llSetPhysicsMaterial(integer material, float gravity,
float restitution, float friction, float density)
Used for setting the physical characteristics of an object.
</string>
<string name="LSLTipText_llSetRegionPos">
integer llSetRegionPos(vector position)
Tries to move the entire object so that the root prim is within 0.1m of position
</string>
<string name="LSLTipText_llSetVelocity">
llSetVelocity(vector force, integer local)
Applies velocity to an object
</string>
<string name="LSLTipText_llTransferLindenDollars">
key llTransferLindenDollars(key destination, integer amount)
Transfer amount of L$ money from script owner to destination avatar.
</string>
<!-- Pathfinder functions. Current state: alpha -->
<string name="LSLTipText_llCreateCharacter">
llCreateCharacter(list options)
Creates a pathfinding entity, known as a "character" from the object containing the script.
</string>
<string name="LSLTipText_llDeleteCharacter">
llDeleteCharacter()
Convert the current linkset back to a standard object, removing all pathfinding properties.
</string>
<string name="LSLTipText_llEvade">
llEvade(key target, list options)
Characters will try to hide from their pursuers if there is a good hiding spot along their fleeing path.
</string>
<string name="LSLTipText_llExecCharacterCmd">
llExecCharacterCmd(integer command, list options)
Send a command to the pathing system.
</string>
<string name="LSLTipText_llGetClosestNavPoint">
list llGetClosestNavPoint(vector point, list options)
Finds the closest navpoint and returns a list with a single vector if succesful. Returns empty list when no navpoints found.
</string>
<string name="LSLTipText_llFleeFrom">
llFleeFrom(vector source, float distance, list options)
Tells an object to keep away from a defined position in the region or adjacent regions.
</string>
<string name="LSLTipText_llNavigateTo">
llNavigateTo(vector pos, list options)
Tells an object to travel to a defined position in the region or adjacent regions.
</string>
<string name="LSLTipText_llPatrolPoints">
llPatrolPoints(list patrolPoints, list options)
Sets the object patrolling between the points specified in patrolPoints.
</string>
<string name="LSLTipText_llPursue">
llPursue(key target, list options)
Causes the object to pursue a target.
</string>
<string name="LSLTipText_llUpdateCharacter">
llUpdateCharacter(list options)
Updates settings for a character.
</string>
<string name="LSLTipText_llWanderWithin">
llWanderWithin(vector origin, float dist, list options)
Sets a character to wander about a central spot within a specified radius.
</string>
<string name="LSLTipText_osIsNpc">
integer osIsNpc(key npc)
Returns TRUE if the given key is an NPC, false otherwise.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcGetOwner">
key osNpcGetOwner(key npc)
Return the owner key of the given NPC. If the NPC is unowned or the input key does not belong to an NPC then it returns NULL_KEY.
(OpenSim only.)
</string>
<string name="LSLTipText_osGetGridCustom">
string osGetGridCustom(string key)
Reads configuration strings from the [GridInfo] setion in OpenSim.ini.
(OpenSim only.)
</string>
<string name="LSLTipText_osGetGridHomeURI">
string osGetGridHomeURI()
Returns the hypergrid URI of the grid where the user logged in.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcPlayAnimation">
osNpcPlayAnimation(key npc, string animation)
Get an NPC to play an animation. The animation can either be a key or the name of an animation in the same object as the script.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcSit">
osNpcSit(key npc, key target, integer options)
Sit an NPC on a prim target. No options have been implemented yet, so always input 0.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcStand">
osNpcStand(key npc)
Make an NPC stand up.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcStopAnimation">
osNpcStopAnimation(key npc, string animation)
Get an NPC to stop playing an animation. The animation can either be a key or the name of an animation in the same inventory as the script.
(OpenSim only.)
</string>
<string name="LSLTipText_osSetRot">
osSetRot(key target, quaternion rotation)
Rotates an object or avatar.
(OpenSim only.)
</string>
</strings>

View File

@@ -40,6 +40,9 @@
#include "volume_catcher.h"
#ifndef LL_WINDOWS
#include <unistd.h>
#endif
extern "C" {
#include <glib.h>