Merge branch 'master' of https://bitbucket.org/Ansariel/phoenix-firestorm-webrtc-voice
commit
b0a053d447
|
|
@ -1976,18 +1976,6 @@
|
|||
</map>
|
||||
<key>mikktspace</key>
|
||||
<map>
|
||||
<key>canonical_repo</key>
|
||||
<string>https://bitbucket.org/lindenlab/3p-mikktspace</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) 2011 by Morten S. Mikkelsen, Copyright (C) 2022 Blender Authors</string>
|
||||
<key>description</key>
|
||||
<string>Mikktspace Tangent Generator</string>
|
||||
<key>license</key>
|
||||
<string>Apache 2.0</string>
|
||||
<key>license_file</key>
|
||||
<string>mikktspace.txt</string>
|
||||
<key>name</key>
|
||||
<string>mikktspace</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin64</key>
|
||||
|
|
@ -2033,8 +2021,20 @@
|
|||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
<string>Apache 2.0</string>
|
||||
<key>license_file</key>
|
||||
<string>mikktspace.txt</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) 2011 by Morten S. Mikkelsen, Copyright (C) 2022 Blender Authors</string>
|
||||
<key>version</key>
|
||||
<string>1</string>
|
||||
<key>name</key>
|
||||
<string>mikktspace</string>
|
||||
<key>canonical_repo</key>
|
||||
<string>https://bitbucket.org/lindenlab/3p-mikktspace</string>
|
||||
<key>description</key>
|
||||
<string>Mikktspace Tangent Generator</string>
|
||||
</map>
|
||||
<key>minizip-ng</key>
|
||||
<map>
|
||||
|
|
@ -3002,6 +3002,8 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<string>LICENSE</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2000-2012, Linden Research, Inc.</string>
|
||||
<key>version</key>
|
||||
<string>3.0-f14b5ec</string>
|
||||
<key>name</key>
|
||||
<string>viewer-manager</string>
|
||||
<key>description</key>
|
||||
|
|
@ -3010,8 +3012,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<string>https://bitbucket.org/lindenlab/vmp-standalone</string>
|
||||
<key>source_type</key>
|
||||
<string>hg</string>
|
||||
<key>version</key>
|
||||
<string>3.0-f14b5ec</string>
|
||||
</map>
|
||||
<key>vlc-bin</key>
|
||||
<map>
|
||||
|
|
@ -3160,11 +3160,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0a0a972036f2b2c9c97dead40c91f7443b8ab339</string>
|
||||
<string>baabb11f324be350253b1fb58cf262c1aa19fa70</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.61-debug/webrtc-m114.5735.08.61-debug.9571929057-darwin64-9571929057.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.67-debug/webrtc-m114.5735.08.67-debug.10190042668-darwin64-10190042668.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -3174,11 +3174,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>8725ad23f33d946bd5a4e5f28e8c8324925c71a7</string>
|
||||
<string>a13776c8f99f8975665be66ff8b51a80ba46c718</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.61-debug/webrtc-m114.5735.08.61-debug.9571929057-linux64-9571929057.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.67-debug/webrtc-m114.5735.08.67-debug.10190042668-linux64-10190042668.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -3188,11 +3188,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>db560661807db276a3c7d1e7d9531198c9268f68</string>
|
||||
<string>965ef5d65a14191a52ee9ec6a9a8a1d2ce3f2ffb</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.61-debug/webrtc-m114.5735.08.61-debug.9571929057-windows64-9571929057.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.67-debug/webrtc-m114.5735.08.67-debug.10190042668-windows64-10190042668.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -3205,7 +3205,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>copyright</key>
|
||||
<string>Copyright (c) 2011, The WebRTC project authors. All rights reserved.</string>
|
||||
<key>version</key>
|
||||
<string>m114.5735.08.61-debug.9571929057</string>
|
||||
<string>m114.5735.08.67-debug.10190042668</string>
|
||||
<key>name</key>
|
||||
<string>webrtc</string>
|
||||
<key>vcs_branch</key>
|
||||
|
|
|
|||
|
|
@ -154,7 +154,8 @@ void LLCustomProcessor::Process(webrtc::AudioBuffer *audio_in)
|
|||
// LLWebRTCImpl implementation
|
||||
//
|
||||
|
||||
LLWebRTCImpl::LLWebRTCImpl() :
|
||||
LLWebRTCImpl::LLWebRTCImpl(LLWebRTCLogCallback* logCallback) :
|
||||
mLogSink(new LLWebRTCLogSink(logCallback)),
|
||||
mPeerCustomProcessor(nullptr),
|
||||
mMute(true),
|
||||
mTuningMode(false),
|
||||
|
|
@ -173,6 +174,7 @@ void LLWebRTCImpl::init()
|
|||
// Normal logging is rather spammy, so turn it off.
|
||||
rtc::LogMessage::LogToDebug(rtc::LS_NONE);
|
||||
rtc::LogMessage::SetLogToStderr(true);
|
||||
rtc::LogMessage::AddLogToStream(mLogSink, rtc::LS_VERBOSE);
|
||||
|
||||
mTaskQueueFactory = webrtc::CreateDefaultTaskQueueFactory();
|
||||
|
||||
|
|
@ -312,6 +314,7 @@ void LLWebRTCImpl::terminate()
|
|||
mPeerDeviceModule = nullptr;
|
||||
mTaskQueueFactory = nullptr;
|
||||
});
|
||||
rtc::LogMessage::RemoveLogToStream(mLogSink);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -1327,9 +1330,9 @@ void freePeerConnection(LLWebRTCPeerConnectionInterface* peer_connection)
|
|||
}
|
||||
|
||||
|
||||
void init()
|
||||
void init(LLWebRTCLogCallback* logCallback)
|
||||
{
|
||||
gWebRTCImpl = new LLWebRTCImpl();
|
||||
gWebRTCImpl = new LLWebRTCImpl(logCallback);
|
||||
gWebRTCImpl->init();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,20 @@
|
|||
namespace llwebrtc
|
||||
{
|
||||
|
||||
class LLWebRTCLogCallback
|
||||
{
|
||||
public:
|
||||
typedef enum {
|
||||
LOG_LEVEL_VERBOSE = 0,
|
||||
LOG_LEVEL_INFO,
|
||||
LOG_LEVEL_WARNING,
|
||||
LOG_LEVEL_ERROR
|
||||
} LogLevel;
|
||||
|
||||
virtual void LogMessage(LogLevel level, const std::string& message) = 0;
|
||||
};
|
||||
|
||||
|
||||
// LLWebRTCVoiceDevice is a simple representation of the
|
||||
// components of a device, used to communicate this
|
||||
// information to the viewer.
|
||||
|
|
@ -262,7 +276,7 @@ class LLWebRTCPeerConnectionInterface
|
|||
// exports.
|
||||
|
||||
// This library must be initialized before use.
|
||||
LLSYMEXPORT void init();
|
||||
LLSYMEXPORT void init(LLWebRTCLogCallback* logSink);
|
||||
|
||||
// And should be terminated as part of shutdown.
|
||||
LLSYMEXPORT void terminate();
|
||||
|
|
|
|||
|
|
@ -69,6 +69,54 @@ namespace llwebrtc
|
|||
|
||||
class LLWebRTCPeerConnectionImpl;
|
||||
|
||||
class LLWebRTCLogSink : public rtc::LogSink {
|
||||
public:
|
||||
LLWebRTCLogSink(LLWebRTCLogCallback* callback) :
|
||||
mCallback(callback)
|
||||
{
|
||||
}
|
||||
|
||||
// Destructor: close the log file
|
||||
~LLWebRTCLogSink() override
|
||||
{
|
||||
}
|
||||
|
||||
void OnLogMessage(const std::string& msg,
|
||||
rtc::LoggingSeverity severity) override
|
||||
{
|
||||
if (mCallback)
|
||||
{
|
||||
switch(severity)
|
||||
{
|
||||
case rtc::LS_VERBOSE:
|
||||
mCallback->LogMessage(LLWebRTCLogCallback::LOG_LEVEL_VERBOSE, msg);
|
||||
break;
|
||||
case rtc::LS_INFO:
|
||||
mCallback->LogMessage(LLWebRTCLogCallback::LOG_LEVEL_VERBOSE, msg);
|
||||
break;
|
||||
case rtc::LS_WARNING:
|
||||
mCallback->LogMessage(LLWebRTCLogCallback::LOG_LEVEL_VERBOSE, msg);
|
||||
break;
|
||||
case rtc::LS_ERROR:
|
||||
mCallback->LogMessage(LLWebRTCLogCallback::LOG_LEVEL_VERBOSE, msg);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnLogMessage(const std::string& message) override
|
||||
{
|
||||
if (mCallback)
|
||||
{
|
||||
mCallback->LogMessage(LLWebRTCLogCallback::LOG_LEVEL_VERBOSE, message);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
LLWebRTCLogCallback* mCallback;
|
||||
};
|
||||
|
||||
// Implements a class allowing capture of audio data
|
||||
// to determine audio level of the microphone.
|
||||
|
|
@ -139,8 +187,11 @@ class LLCustomProcessor : public webrtc::CustomProcessing
|
|||
class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceSink
|
||||
{
|
||||
public:
|
||||
LLWebRTCImpl();
|
||||
~LLWebRTCImpl() {}
|
||||
LLWebRTCImpl(LLWebRTCLogCallback* logCallback);
|
||||
~LLWebRTCImpl()
|
||||
{
|
||||
delete mLogSink;
|
||||
}
|
||||
|
||||
void init();
|
||||
void terminate();
|
||||
|
|
@ -228,6 +279,8 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
|
|||
void setRecording(bool recording);
|
||||
|
||||
protected:
|
||||
LLWebRTCLogSink* mLogSink;
|
||||
|
||||
// The native webrtc threads
|
||||
std::unique_ptr<rtc::Thread> mNetworkThread;
|
||||
std::unique_ptr<rtc::Thread> mWorkerThread;
|
||||
|
|
|
|||
|
|
@ -2999,7 +2999,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled, const LLVector3 &
|
|||
// Notice the calls to "gAwayTimer.reset()". This resets the timer that determines how long the avatar has been
|
||||
// "away", so that the avatar doesn't lapse into away-mode (and slump over) while the user is still talking.
|
||||
//-----------------------------------------------------------------------------------------------------------------
|
||||
if (LLVoiceClient::getInstance()->getIsSpeaking( mID ))
|
||||
if (LLVoiceClient::getInstance()->getIsSpeaking( mID ) && (!isInMuteList() || isSelf()))
|
||||
{
|
||||
if (!mVoiceVisualizer->getCurrentlySpeaking())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -768,6 +768,7 @@ LLVoiceChannelP2P::LLVoiceChannelP2P(const LLUUID &session_id,
|
|||
mReceivedCall(false),
|
||||
mOutgoingCallInterface(outgoing_call_interface)
|
||||
{
|
||||
mChannelInfo = LLVoiceClient::getInstance()->getP2PChannelInfoTemplate(other_user_id);
|
||||
}
|
||||
|
||||
void LLVoiceChannelP2P::handleStatusChange(EStatusType type)
|
||||
|
|
|
|||
|
|
@ -889,7 +889,7 @@ void LLVoiceClient::removeObserver(LLVoiceClientParticipantObserver* observer)
|
|||
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
|
||||
}
|
||||
|
||||
std::string LLVoiceClient::sipURIFromID(const LLUUID &id)
|
||||
std::string LLVoiceClient::sipURIFromID(const LLUUID &id) const
|
||||
{
|
||||
if (mNonSpatialVoiceModule)
|
||||
{
|
||||
|
|
@ -905,6 +905,22 @@ std::string LLVoiceClient::sipURIFromID(const LLUUID &id)
|
|||
}
|
||||
}
|
||||
|
||||
LLSD LLVoiceClient::getP2PChannelInfoTemplate(const LLUUID& id) const
|
||||
{
|
||||
if (mNonSpatialVoiceModule)
|
||||
{
|
||||
return mNonSpatialVoiceModule->getP2PChannelInfoTemplate(id);
|
||||
}
|
||||
else if (mSpatialVoiceModule)
|
||||
{
|
||||
return mSpatialVoiceModule->getP2PChannelInfoTemplate(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
return LLSD();
|
||||
}
|
||||
}
|
||||
|
||||
LLVoiceEffectInterface* LLVoiceClient::getVoiceEffectInterface() const
|
||||
{
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -284,7 +284,8 @@ public:
|
|||
virtual void removeObserver(LLVoiceClientParticipantObserver* observer)=0;
|
||||
//@}
|
||||
|
||||
virtual std::string sipURIFromID(const LLUUID &id)=0;
|
||||
virtual std::string sipURIFromID(const LLUUID &id) const=0;
|
||||
virtual LLSD getP2PChannelInfoTemplate(const LLUUID& id) const=0;
|
||||
//@}
|
||||
|
||||
};
|
||||
|
|
@ -519,7 +520,8 @@ public:
|
|||
void addObserver(LLVoiceClientParticipantObserver* observer);
|
||||
void removeObserver(LLVoiceClientParticipantObserver* observer);
|
||||
|
||||
std::string sipURIFromID(const LLUUID &id);
|
||||
std::string sipURIFromID(const LLUUID &id) const;
|
||||
LLSD getP2PChannelInfoTemplate(const LLUUID& id) const;
|
||||
|
||||
//////////////////////////
|
||||
/// @name Voice effects
|
||||
|
|
|
|||
|
|
@ -298,7 +298,6 @@ LLVivoxVoiceClient::LLVivoxVoiceClient() :
|
|||
mDevicesListUpdated(false),
|
||||
|
||||
mAudioSession(), // TBD - should be NULL
|
||||
mAudioSessionChanged(false),
|
||||
mNextAudioSession(),
|
||||
|
||||
mCurrentParcelLocalID(0),
|
||||
|
|
@ -1742,7 +1741,6 @@ bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
|
|||
LL_INFOS("Voice") << "Adding or joining voice session " << nextSession->mHandle << LL_ENDL;
|
||||
|
||||
mAudioSession = nextSession;
|
||||
mAudioSessionChanged = true;
|
||||
if (!mAudioSession || !mAudioSession->mReconnect)
|
||||
{
|
||||
mNextAudioSession.reset();
|
||||
|
|
@ -2001,9 +1999,8 @@ bool LLVivoxVoiceClient::terminateAudioSession(bool wait)
|
|||
|
||||
sessionStatePtr_t oldSession = mAudioSession;
|
||||
|
||||
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL); // needs mAudioSession for uri
|
||||
mAudioSession.reset();
|
||||
// We just notified status observers about this change. Don't do it again.
|
||||
mAudioSessionChanged = false;
|
||||
|
||||
// The old session may now need to be deleted.
|
||||
reapSession(oldSession);
|
||||
|
|
@ -2011,9 +2008,9 @@ bool LLVivoxVoiceClient::terminateAudioSession(bool wait)
|
|||
else
|
||||
{
|
||||
LL_WARNS("Voice") << "terminateAudioSession(" << wait << ") with NULL mAudioSession" << LL_ENDL;
|
||||
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL);
|
||||
}
|
||||
|
||||
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL);
|
||||
|
||||
// Always reset the terminate request flag when we get here.
|
||||
// Some slower PCs have a race condition where they can switch to an incoming P2P call faster than the state machine leaves
|
||||
|
|
@ -3971,7 +3968,6 @@ void LLVivoxVoiceClient::joinedAudioSession(const sessionStatePtr_t &session)
|
|||
sessionStatePtr_t oldSession = mAudioSession;
|
||||
|
||||
mAudioSession = session;
|
||||
mAudioSessionChanged = true;
|
||||
|
||||
// The old session may now need to be deleted.
|
||||
reapSession(oldSession);
|
||||
|
|
@ -5285,7 +5281,7 @@ bool LLVivoxVoiceClient::inProximalChannel()
|
|||
return result;
|
||||
}
|
||||
|
||||
std::string LLVivoxVoiceClient::sipURIFromID(const LLUUID &id)
|
||||
std::string LLVivoxVoiceClient::sipURIFromID(const LLUUID &id) const
|
||||
{
|
||||
std::string result;
|
||||
result = "sip:";
|
||||
|
|
@ -5296,6 +5292,14 @@ std::string LLVivoxVoiceClient::sipURIFromID(const LLUUID &id)
|
|||
return result;
|
||||
}
|
||||
|
||||
LLSD LLVivoxVoiceClient::getP2PChannelInfoTemplate(const LLUUID& id) const
|
||||
{
|
||||
LLSD result;
|
||||
result["channel_uri"] = sipURIFromID(id);
|
||||
result["voice_server_type"] = VIVOX_VOICE_SERVER_TYPE;
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string LLVivoxVoiceClient::sipURIFromAvatar(LLVOAvatar *avatar)
|
||||
{
|
||||
std::string result;
|
||||
|
|
@ -5310,7 +5314,7 @@ std::string LLVivoxVoiceClient::sipURIFromAvatar(LLVOAvatar *avatar)
|
|||
return result;
|
||||
}
|
||||
|
||||
std::string LLVivoxVoiceClient::nameFromID(const LLUUID &uuid)
|
||||
std::string LLVivoxVoiceClient::nameFromID(const LLUUID &uuid) const
|
||||
{
|
||||
std::string result;
|
||||
|
||||
|
|
@ -6290,7 +6294,6 @@ void LLVivoxVoiceClient::deleteSession(const sessionStatePtr_t &session)
|
|||
if(mAudioSession == session)
|
||||
{
|
||||
mAudioSession.reset();
|
||||
mAudioSessionChanged = true;
|
||||
}
|
||||
|
||||
// ditto for the next audio session
|
||||
|
|
@ -6399,9 +6402,10 @@ void LLVivoxVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESta
|
|||
}
|
||||
}
|
||||
|
||||
LLSD channel_info = getAudioSessionChannelInfo();
|
||||
LL_DEBUGS("Voice")
|
||||
<< " " << LLVoiceClientStatusObserver::status2string(status)
|
||||
<< ", session channelInfo " << getAudioSessionChannelInfo()
|
||||
<< ", session channelInfo " << channel_info
|
||||
<< ", proximal is " << inSpatialChannel()
|
||||
<< LL_ENDL;
|
||||
|
||||
|
|
@ -6416,7 +6420,7 @@ void LLVivoxVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESta
|
|||
)
|
||||
{
|
||||
LLVoiceClientStatusObserver* observer = *it;
|
||||
observer->onChange(status, getAudioSessionChannelInfo(), inSpatialChannel());
|
||||
observer->onChange(status, channel_info, inSpatialChannel());
|
||||
// In case onError() deleted an entry.
|
||||
it = mStatusObservers.upper_bound(observer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,7 +221,8 @@ public:
|
|||
void removeObserver(LLVoiceClientParticipantObserver* observer) override;
|
||||
//@}
|
||||
|
||||
std::string sipURIFromID(const LLUUID &id) override;
|
||||
std::string sipURIFromID(const LLUUID &id) const override;
|
||||
LLSD getP2PChannelInfoTemplate(const LLUUID& id) const override;
|
||||
//@}
|
||||
|
||||
/// @name LLVoiceEffectInterface virtual implementations
|
||||
|
|
@ -706,7 +707,6 @@ private:
|
|||
|
||||
std::string mChannelName; // Name of the channel to be looked up
|
||||
sessionStatePtr_t mAudioSession; // Session state for the current audio session
|
||||
bool mAudioSessionChanged; // set to true when the above pointer gets changed, so observers can be notified.
|
||||
|
||||
sessionStatePtr_t mNextAudioSession; // Session state for the audio session we're trying to join
|
||||
|
||||
|
|
@ -748,7 +748,7 @@ private:
|
|||
bool switchChannel(std::string uri = std::string(), bool spatial = true, bool no_reconnect = false, bool is_p2p = false, std::string hash = "");
|
||||
void joinSession(const sessionStatePtr_t &session);
|
||||
|
||||
std::string nameFromID(const LLUUID &id);
|
||||
std::string nameFromID(const LLUUID &id) const;
|
||||
bool IDFromName(const std::string name, LLUUID &uuid);
|
||||
std::string sipURIFromAvatar(LLVOAvatar *avatar);
|
||||
std::string sipURIFromName(std::string &name);
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ LLWebRTCVoiceClient::~LLWebRTCVoiceClient()
|
|||
void LLWebRTCVoiceClient::init(LLPumpIO* pump)
|
||||
{
|
||||
// constructor will set up LLVoiceClient::getInstance()
|
||||
llwebrtc::init();
|
||||
llwebrtc::init(this);
|
||||
|
||||
mWebRTCDeviceInterface = llwebrtc::getDeviceInterface();
|
||||
mWebRTCDeviceInterface->setDevicesObserver(this);
|
||||
|
|
@ -279,6 +279,29 @@ void LLWebRTCVoiceClient::cleanUp()
|
|||
LL_DEBUGS("Voice") << "Exiting" << LL_ENDL;
|
||||
}
|
||||
|
||||
void LLWebRTCVoiceClient::LogMessage(llwebrtc::LLWebRTCLogCallback::LogLevel level, const std::string& message)
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case llwebrtc::LLWebRTCLogCallback::LOG_LEVEL_VERBOSE:
|
||||
LL_DEBUGS("Voice") << message << LL_ENDL;
|
||||
break;
|
||||
case llwebrtc::LLWebRTCLogCallback::LOG_LEVEL_INFO:
|
||||
LL_INFOS("Voice") << message << LL_ENDL;
|
||||
break;
|
||||
case llwebrtc::LLWebRTCLogCallback::LOG_LEVEL_WARNING:
|
||||
LL_WARNS("Voice") << message << LL_ENDL;
|
||||
break;
|
||||
case llwebrtc::LLWebRTCLogCallback::LOG_LEVEL_ERROR:
|
||||
// use WARN so that we don't crash on a webrtc error.
|
||||
// webrtc will force a crash on a fatal error.
|
||||
LL_WARNS("Voice") << message << LL_ENDL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------
|
||||
|
||||
const LLVoiceVersionInfo& LLWebRTCVoiceClient::getVersion()
|
||||
|
|
@ -2067,11 +2090,16 @@ void LLWebRTCVoiceClient::avatarNameResolved(const LLUUID &id, const std::string
|
|||
}
|
||||
|
||||
// Leftover from vivox PTSN
|
||||
std::string LLWebRTCVoiceClient::sipURIFromID(const LLUUID& id)
|
||||
std::string LLWebRTCVoiceClient::sipURIFromID(const LLUUID& id) const
|
||||
{
|
||||
return id.asString();
|
||||
}
|
||||
|
||||
LLSD LLWebRTCVoiceClient::getP2PChannelInfoTemplate(const LLUUID& id) const
|
||||
{
|
||||
return LLSD();
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////
|
||||
// LLVoiceWebRTCConnection
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ extern const std::string WEBRTC_VOICE_SERVER_TYPE;
|
|||
class LLWebRTCVoiceClient : public LLSingleton<LLWebRTCVoiceClient>,
|
||||
virtual public LLVoiceModuleInterface,
|
||||
public llwebrtc::LLWebRTCDevicesObserver,
|
||||
public LLMuteListObserver
|
||||
public LLMuteListObserver,
|
||||
public llwebrtc::LLWebRTCLogCallback
|
||||
{
|
||||
LLSINGLETON(LLWebRTCVoiceClient);
|
||||
LOG_CLASS(LLWebRTCVoiceClient);
|
||||
|
|
@ -84,7 +85,15 @@ public:
|
|||
// Returns true if WebRTC has successfully logged in and is not in error state
|
||||
bool isVoiceWorking() const override;
|
||||
|
||||
std::string sipURIFromID(const LLUUID &id) override;
|
||||
std::string sipURIFromID(const LLUUID &id) const override;
|
||||
LLSD getP2PChannelInfoTemplate(const LLUUID& id) const override;
|
||||
|
||||
|
||||
///////////////////
|
||||
/// @name Logging
|
||||
/// @{
|
||||
void LogMessage(llwebrtc::LLWebRTCLogCallback::LogLevel level, const std::string& message) override;
|
||||
//@}
|
||||
|
||||
/////////////////////
|
||||
/// @name Tuning
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
<combo_box.item label="Bütün avatarlar və obyektlər" name="3"/>
|
||||
<combo_box.item label="Hər şeyi əksləndir" name="4"/>
|
||||
</combo_box>
|
||||
<text name="local lights_label" tool_tip="Əlavə işıqlandırma modeli söndürüldüyü zaman təqdim edilən işıqlandırma mənbələrinin sayına təsir edir. Yenidən başlatma tələb olunur">
|
||||
<text name="local lights_label" tool_tip="Göstərilən işıq mənbələrinin sayına təsir göstərir. Yenidən başlatma tələb olunur">
|
||||
Nöqtəvi işıqlandırma:
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail">
|
||||
|
|
|
|||
|
|
@ -421,7 +421,7 @@
|
|||
layout="topleft"
|
||||
left_delta="-5"
|
||||
name="local lights_label"
|
||||
tool_tip="Affects the number of rendered. A restart is required to change mode.">
|
||||
tool_tip="Affects the number of rendered light sources. A restart is required to change mode.">
|
||||
Point Lighting (restart required)
|
||||
</text>
|
||||
<combo_box
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
<combo_box.item label="Todos los avatares y objetos" name="3"/>
|
||||
<combo_box.item label="Todo" name="4"/>
|
||||
</combo_box>
|
||||
<text name="local lights_label" width="180" tool_tip="Afecta al número de fuentes de luz dibujadas cuando 'Modelo avanzado de iluminación' está desactivado. Se requiere reiniciar para efectuar los cambios.">
|
||||
<text name="local lights_label" width="180" tool_tip="Afecta al número de fuentes de luz dibujadas. Se requiere reiniciar para efectuar los cambios.">
|
||||
Puntos de luz (requiere reiniciar):
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail" width="165">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<combo_box.item label="Manuels & terrain" name="2"/>
|
||||
<combo_box.item label="Scène complète" name="3"/>
|
||||
</combo_box>
|
||||
<text width="185" name="local lights_label" tool_tip="Affecte le nombre de sources de lumière lorsque l'éclairage avancé est désactivé. Un redémarrage est requis pour changer de mode.">
|
||||
<text width="185" name="local lights_label" tool_tip="Affecte le nombre de sources de lumière. Un redémarrage est requis pour changer de mode.">
|
||||
Éclairage ponctuel (redémarrage) :
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail">
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
<layout_stack name="camera_view_layout_stack">
|
||||
<layout_panel name="camera_rotate_layout_panel">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Orbita la camera intorno al centro focale"/>
|
||||
<button name="roll_left" tool_tip="Inclina la camera a sinistra" />
|
||||
<button name="roll_right" tool_tip="Inclina la camera a destra" />
|
||||
</layout_panel>
|
||||
<layout_panel name="camera_zoom_layout_panel">
|
||||
<slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
<layout_stack name="camera_view_layout_stack">
|
||||
<layout_panel name="camera_rotate_layout_panel">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Orbita la camera intorno al centro focale"/>
|
||||
<button name="roll_left" tool_tip="Inclina la camera a sinistra" />
|
||||
<button name="roll_right" tool_tip="Inclina la camera a destra" />
|
||||
</layout_panel>
|
||||
<layout_panel name="camera_zoom_layout_panel">
|
||||
<slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/>
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@
|
|||
<button name="chat_search_btn" tool_tip="Cerca nella chat" />
|
||||
</layout_panel>
|
||||
<layout_panel name="support_panel">
|
||||
<check_box label="Specifica versione" name="FSSupportGroupChatPrefix_toggle" tool_tip="Aggiunge la versione del viewer e le info sulla modalità in testa ai messaggi inviati a questo gruppo; questo può aiutare il gruppo di supporto a diagnosticare i problemi e può migliorare l'accuratezza delle risposte"/>
|
||||
<check_box label="Specifica versione" name="FSSupportGroupChatPrefix_toggle" tool_tip="Aggiungi la versione, la skin del viewer, il sistema operativo e lo stato RLVa davanti ai tuoi messaggi in questa chat di gruppo. Questo aiuterà il team di supporto a diagnosticare correttamente i tuoi problemi e a migliorare la precisione delle risposte alle tue domande."/>
|
||||
</layout_panel>
|
||||
<layout_panel name="testing_panel">
|
||||
<check_box label="Specifica versione" name="FSSupportGroupChatPrefixTesting_toggle" tool_tip="Aggiungi la versione e la skin del viewer, il sistema operativo e lo stato RLVa davanti ai messaggi inviati da te a questo gruppo, il che aiuterà il team di supporto a diagnosticare correttamente i tuoi problemi e a migliorare la precisione nel rispondere alle tue domande. (questo è separato dai gruppi di supporto)" />
|
||||
<check_box label="Specifica build" name="FSSupportGroupChatPrefixTesting_toggle" tool_tip="Aggiungi il numero di build, la skin del viewer, il sistema operativo e lo stato RLVa davanti ai tuoi messaggi in questa chat di gruppo. Questo aiuterà il team di supporto a diagnosticare correttamente i tuoi problemi e a migliorare la precisione delle risposte alle tue domande. Questa opzione non ha effetto nel gruppo di supporto." />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<layout_stack name="chat_stack">
|
||||
|
|
|
|||
|
|
@ -52,8 +52,10 @@
|
|||
</combo_box>
|
||||
<check_box label="Interfaccia" name="ui_check"/>
|
||||
<check_box label="Credito L$" name="currency_check" />
|
||||
<check_box label="Cattura schermo (tutto schermo)" name="freeze_frame_check"/>
|
||||
<check_box label="HUD" name="hud_check" />
|
||||
<check_box label="Fermo immagine (tutto schermo)" name="freeze_frame_check"/>
|
||||
<check_box label="Aggiornamento automatico" name="auto_snapshot_check"/>
|
||||
<check_box label="Nessuna post-elaborazione" name="no_post_check" />
|
||||
<text name="filter_list_label">
|
||||
Filtro:
|
||||
</text>
|
||||
|
|
@ -79,7 +81,7 @@
|
|||
</text>
|
||||
</view>
|
||||
<text name="image_res_text">
|
||||
[WIDTH] px (larghezza) x [HEIGHT] px (altezza)
|
||||
[WIDTH] x [HEIGHT] pixel (base x altezza)
|
||||
</text>
|
||||
<button label="Foto a 360°" name="360_label" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -48,6 +48,6 @@
|
|||
<button name="btn_add" label="Aggiungi" />
|
||||
<button name="btn_remove" label="Rimuovi" />
|
||||
<button name="btn_reload" label="Ricarica" />
|
||||
<button name="btn_clear" label="Cancella Param." />
|
||||
<button name="btn_clear" label="Cancella" />
|
||||
<button name="btn_rez" label="Rez Selezion." tool_tip="Crea una mesh vuota nel mondo e applica ad essa la mesh locale scelta. Questo crea un oggetto vuoto nel mondo." />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1501,7 +1501,7 @@ La texture del terreno [TEXTURE_NUM] non è completamente caricata, ma sembra co
|
|||
|
||||
Se la texture [TEXTURE_NUM] è opaca, attendi fino al completo caricamento, quindi fai clic su "Applica" di nuovo.
|
||||
|
||||
L'alfa è supportata solo per i materiali del terreno (rugosità metallica PBR) quando alphaMode="MASK" e doubleSided=false.
|
||||
L'alfa è supportata solo per i materiali del terreno (rugosità/metallicità PBR) quando alphaMode="MASK" e doubleSided=false.
|
||||
</notification>
|
||||
<notification name="InvalidTerrainAlpha">
|
||||
Impossibile impostare le texture della regione:
|
||||
|
|
@ -1509,7 +1509,7 @@ La texture del terreno [TEXTURE_NUM] contiene trasparenza. La trasparenza attual
|
|||
|
||||
Sostituisci la texture [TEXTURE_NUM] con una RGB opaca, quindi fai clic su "Applica" di nuovo.
|
||||
|
||||
L'alfa è supportata solo per i materiali del terreno (rugosità metallica PBR) quando alphaMode="MASK" e doubleSided=false.
|
||||
L'alfa è supportata solo per i materiali del terreno (rugosità/metallicità PBR) quando alphaMode="MASK" e doubleSided=false.
|
||||
</notification>
|
||||
<notification name="InvalidTerrainSize">
|
||||
Impossibile impostare le texture della regione:
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<texture_picker name="normal_map_picker" label="Normale" tool_tip="Clicca per scegliere la mappa normale" />
|
||||
<texture_picker name="emissive_map_picker" label="Emissiva" tool_tip="Clicca per scegliere la mappa emissiva" />
|
||||
<color_swatch name="emissive_color_tint_picker" label="Tinta" tool_tip="Clicca per scegliere la tonalità di colore di emissività" />
|
||||
<texture_picker name="metallic_map_picker" tool_tip="Clicca per scegliere la mappa di rugosità metallica, che può contenere un canale di occlusione opzionale" />
|
||||
<texture_picker name="metallic_map_picker" tool_tip="Clicca per scegliere la mappa di rugosità/metallicità, che può contenere un canale di occlusione opzionale" />
|
||||
</panel>
|
||||
<panel name="panel_material_parameters">
|
||||
<check_box label="Doppia faccia" name="double sided" />
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<combo_box.item label="Maschera" name="Alpha masking" />
|
||||
</combo_box>
|
||||
<spinner label="Ritaglio" name="alpha cutoff" />
|
||||
<spinner label="Metallità" name="metalness factor" />
|
||||
<spinner label="Metallicità" name="metalness factor" />
|
||||
<spinner label="Rugosità" name="roughness factor" />
|
||||
<button name="save_selected_pbr" label="Salva" />
|
||||
</panel>
|
||||
|
|
@ -151,10 +151,10 @@
|
|||
<button name="btn_select_same_spec" tool_tip="Seleziona tutte le facce con la stessa mappa speculare di questa" />
|
||||
</layout_panel>
|
||||
<layout_panel name="panel_blinn_phong_options">
|
||||
<check_box label="Max luminos." name="checkbox fullbright" width="90" />
|
||||
<check_box label="Max lumin." name="checkbox fullbright" width="90" />
|
||||
<spinner name="ColorTrans" label="Trasparenza" />
|
||||
<text name="label alphamode">
|
||||
Modalità alfa
|
||||
Modal. alfa
|
||||
</text>
|
||||
<combo_box name="combobox alphamode">
|
||||
<combo_box.item label="Nessuna" name="None" />
|
||||
|
|
@ -162,7 +162,7 @@
|
|||
<combo_box.item label="Maschera alfa" name="Alpha masking" />
|
||||
<combo_box.item label="Maschera emissiva" name="Emissive mask" />
|
||||
</combo_box>
|
||||
<spinner label="Ritaglio maschera" name="maskcutoff" label_width="90" />
|
||||
<spinner label="Ritaglio maschera" name="maskcutoff" label_width="100" />
|
||||
<text name="label bumpiness">
|
||||
Superficie
|
||||
</text>
|
||||
|
|
@ -301,5 +301,5 @@
|
|||
</panel>
|
||||
<button name="copy_face_btn" tool_tip="Copia i parametri della texture negli appunti" />
|
||||
<button name="paste_face_btn" tool_tip="Incolla i parametri della texture dagli appunti" />
|
||||
<spinner label="Bagliore" name="glow" label_width="43" />
|
||||
<spinner label="Bagliore" name="glow" label_width="44" />
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="panel_gltf_material">
|
||||
<check_box label="Doppio lato" name="double sided"/>
|
||||
<check_box label="Doppia faccia" name="double sided"/>
|
||||
<panel name="base_color_texture_pnl">
|
||||
<text name="base_color_lbl">
|
||||
Colore di base:
|
||||
</text>
|
||||
<texture_picker name="base_color_texture" tool_tip="Mappa del colore di base. Il canale alfa è facoltativo e viene utilizzato per la trasparenza."/>
|
||||
<text name="base_color_upload_fee">
|
||||
Nessun costo upload
|
||||
No costi di upload
|
||||
</text>
|
||||
<text name="base_color_tint_lbl">
|
||||
Tinta
|
||||
|
|
@ -29,14 +29,14 @@
|
|||
</panel>
|
||||
<panel name="metallic_texture_pnl">
|
||||
<text name="metallic_roughness_lbl">
|
||||
Metallità-Rugosità:
|
||||
Metallicità-Rugosità:
|
||||
</text>
|
||||
<texture_picker name="metallic_roughness_texture" tool_tip="Mappa di metallità-rugosità GLTF con occlusione opzionale. Il canale rosso è l'occlusione, il canale verde è la rugosità, il canale blu è la metallità."/>
|
||||
<texture_picker name="metallic_roughness_texture" tool_tip="Mappa di metallicità-rugosità GLTF con occlusione opzionale. Il canale rosso è l'occlusione, il canale verde è la rugosità, il canale blu è la metallicità."/>
|
||||
<text name="metallic_upload_fee">
|
||||
Nessun costo upload
|
||||
No costi di upload
|
||||
</text>
|
||||
<text name="metallic_factor_lbl">
|
||||
Fattore metallità
|
||||
Fattore metallicità
|
||||
</text>
|
||||
<text name="roughness_factor_lbl">
|
||||
Fattore rugosità
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
Emissiva:
|
||||
</text>
|
||||
<text name="emissive_upload_fee">
|
||||
Nessun costo upload
|
||||
No costi di upload
|
||||
</text>
|
||||
<text name="emissive_tint_lbl">
|
||||
Tinta
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
Normale:
|
||||
</text>
|
||||
<text name="normal_upload_fee">
|
||||
Nessun costo upload
|
||||
No costi di upload
|
||||
</text>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="panel_outfit_snapshot_inventory">
|
||||
<text name="title">
|
||||
Inventario
|
||||
</text>
|
||||
<text name="hint_lbl">
|
||||
Il caricamento di un'immagine costa [UPLOAD_COST]L$.
|
||||
|
||||
La tariffa dipende dal livello di abbonamento. Ai livelli più alti le tariffe sono inferiori.
|
||||
</text>
|
||||
<button label="Annulla" name="cancel_btn" />
|
||||
<button label="Salva" name="save_btn" />
|
||||
</panel>
|
||||
|
|
@ -46,12 +46,12 @@
|
|||
<combo_box.item label="Senza limiti per gli HUD" name="ScriptDialogOption_4"/>
|
||||
<combo_box.item label="Senza limiti" name="ScriptDialogOption_5" />
|
||||
</combo_box>
|
||||
<check_box label="Togli bottone "Blocca"" name="FSRemoveScriptBlockButton"/>
|
||||
<check_box label="Togli pulsante "Blocca"" name="FSRemoveScriptBlockButton"/>
|
||||
<text name="ScriptDialogsPositionLabel">
|
||||
Posizione dialogo script:
|
||||
</text>
|
||||
<combo_box name="ScriptDialogsPositionDropdown" tool_tip="Dove compaiono le finestre di dialogo (menu) degli script sullo schermo.">
|
||||
<combo_box.item label="Attacca a messaggi" name="ScriptDialogPositionOption_1" />
|
||||
<combo_box.item label="Ancorato al chiclet" name="ScriptDialogPositionOption_1" />
|
||||
<combo_box.item label="Alto sinistra" name="ScriptDialogPositionOption_2"/>
|
||||
<combo_box.item label="Alto destra" name="ScriptDialogPositionOption_3"/>
|
||||
<combo_box.item label="Basso sinistra" name="ScriptDialogPositionOption_4" />
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
<combo_box.item label="Tutti gli avatar e gli oggetti" name="3"/>
|
||||
<combo_box.item label="Tutto" name="4"/>
|
||||
</combo_box> -->
|
||||
<text name="local lights_label" tool_tip="Imposta il numero di punti luce resi quando 'Ombre ambiente' non è attivo. Richiede riavvio per cambiare modalità">
|
||||
<text name="local lights_label" tool_tip="Imposta il numero di punti luce resi. Richiede riavvio per cambiare modalità">
|
||||
Punti Luce (richiede riavvio):
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail">
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
Le impostazioni ambientali non sono disponibili in questa regione.
|
||||
</string>
|
||||
<string name="str_disallowed">
|
||||
Il gestore della proprietà immobiliare non permette di cambiare l'ambiente del lotto in questa regione.
|
||||
Il gestore della regione non permette di cambiare l'ambiente del lotto.
|
||||
</string>
|
||||
<string name="str_too_small">
|
||||
Il lotto deve essere di almeno 128 metri quadri per supportare le funzionalità per l'ambiente.
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<text name="detail_material_text">
|
||||
Materiali terreno
|
||||
</text>
|
||||
<check_box label="Rugosità metallica PBR" name="terrain_material_type" tool_tip="Se selezionato, utilizza materiali di rugosità metallica PBR per il terreno. Altrimenti, usa le texture." />
|
||||
<check_box label="Rugosità/Metallicità PBR" name="terrain_material_type" tool_tip="Se selezionato, utilizza i materiali PBR per il terreno, altrimenti utilizza le texture." />
|
||||
<text name="height_text_lbl">
|
||||
1 (basso)
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
|
||||
<combo_box.item label="Personalizza" name="Custom"/>
|
||||
</combo_box>
|
||||
<spinner label="L x A" name="inventory_snapshot_width"/>
|
||||
<spinner label="Base x Altezza" name="inventory_snapshot_width"/>
|
||||
<check_box label="Mantieni proporzioni" name="inventory_keep_aspect_check"/>
|
||||
<check_box label="Temporaneo" name="inventory_temp_upload" />
|
||||
<text name="hint_lbl">
|
||||
Per salvare come texture, selezionare un formato quadrato.
|
||||
Per salvare come texture, seleziona un formato quadrato.
|
||||
</text>
|
||||
<button label="▶ Seleziona" name="cancel_btn"/>
|
||||
<button label="Salva" name="save_btn"/>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="panel_snapshot_local">
|
||||
<text name="title">
|
||||
Disco
|
||||
Disco fisso
|
||||
</text>
|
||||
<combo_box label="Risoluzione" name="local_size_combo">
|
||||
<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
|
||||
<combo_box.item label="Personalizza" name="Custom"/>
|
||||
</combo_box>
|
||||
<spinner label="L x A" name="local_snapshot_width"/>
|
||||
<spinner label="Base x Altezza" name="local_snapshot_width"/>
|
||||
<check_box label="Mantieni le proporzioni" name="local_keep_aspect_check"/>
|
||||
<text name="local_format_label"> <!-- width="50" -->
|
||||
Formato:
|
||||
</text>
|
||||
<combo_box label="Formato" name="local_format_combo">
|
||||
<combo_box.item label="PNG (senza perdite)" name="PNG"/>
|
||||
<combo_box.item label="BMP (senza perdite)" name="BMP"/>
|
||||
|
|
|
|||
|
|
@ -2,19 +2,13 @@
|
|||
<panel name="panel_snapshot_options">
|
||||
<layout_stack name="option_buttons">
|
||||
<layout_panel name="lp_download">
|
||||
<button label="Salva su disco" name="save_to_computer_btn"/>
|
||||
<button label="Salva sul disco fisso" name="save_to_computer_btn"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="lp_inventory">
|
||||
<button label="Salva in inventario (L$[AMOUNT])" name="save_to_inventory_btn"/>
|
||||
<button label="Salva in inventario ([AMOUNT]L$)" name="save_to_inventory_btn"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="lp_profile">
|
||||
<button label="Carica su profilo web" name="save_to_profile_btn"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="lp_facebook">
|
||||
<button label="Carica su Facebook" name="send_to_facebook_btn"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="lp_twitter">
|
||||
<button label="Carica su Twitter" name="send_to_twitter_btn"/>
|
||||
<button label="Condividi sul feed" name="save_to_profile_btn"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="lp_flickr">
|
||||
<button label="Carica su Flickr" name="send_to_flickr_btn"/>
|
||||
|
|
@ -23,4 +17,7 @@
|
|||
<button label="Invia per e-mail" name="save_to_email_btn"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<text name="fee_hint_lbl">
|
||||
La tariffa dipende dal livello di abbonamento. Ai livelli più alti le tariffe sono inferiori.
|
||||
</text>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="panel_snapshot_profile">
|
||||
<text name="title">
|
||||
Profilo web
|
||||
Feed Profilo
|
||||
</text>
|
||||
<combo_box label="Risoluzione" name="profile_size_combo">
|
||||
<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
|
||||
<combo_box.item label="Personalizza" name="Custom"/>
|
||||
</combo_box>
|
||||
<spinner label="L x A" name="profile_snapshot_width"/>
|
||||
<spinner label="Base x Altezza" name="profile_snapshot_width"/>
|
||||
<check_box label="Mantieni le proporzioni" name="profile_keep_aspect_check"/>
|
||||
<text name="caption_label">
|
||||
Didascalia:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<radio_group name="radio_pbr_type">
|
||||
<radio_item label="Materiale completo" name="Complete material"/>
|
||||
<radio_item label="Colore di base" name="Base color"/>
|
||||
<radio_item label="Metallità/rugosità" name="Metallic/roughness"/>
|
||||
<radio_item label="Metallicità/rugosità" name="Metallic/roughness"/>
|
||||
<radio_item label="Emissiva" name="Emissive"/>
|
||||
<radio_item label="Normale" name="Normal"/>
|
||||
</radio_group>
|
||||
|
|
|
|||
|
|
@ -1801,7 +1801,7 @@ Se il messaggio persiste, contattare il supporto Second Life per assistenza http
|
|||
in aggiornamento...
|
||||
</string>
|
||||
<string name="UploadFeeInfo">
|
||||
Il costo si basa sul tuo livello di iscrizione. Più alto è il livello, più basso è il costo. [https://secondlife.com/my/account/membership.php? Scopri di più]
|
||||
La tariffa dipende dal livello di abbonamento. Ai livelli più alti le tariffe sono inferiori. [https://secondlife.com/my/account/membership.php? Scopri di più]
|
||||
</string>
|
||||
<string name="Open landmarks">
|
||||
Apri segnaposto
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
<combo_box.item label="Ręczne + podłoże" name="2" />
|
||||
<combo_box.item label="Pełna scena" name="3" />
|
||||
</combo_box>
|
||||
<text name="local lights_label" tool_tip="Wpływa na liczbę renderowanych źródeł światła, gdy 'zaawansowane oświetlenie' jest wyłączone. Aby zmienić tryb wymagany jest restart.">
|
||||
<text name="local lights_label" tool_tip="Wpływa na liczbę renderowanych źródeł światła. Aby zmienić tryb wymagany jest restart.">
|
||||
Oświetlenie punktowe:
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail">
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
<combo_box.item label="Вручную + местность" name="2"/>
|
||||
<combo_box.item label="Полная сцена" name="3"/>
|
||||
</combo_box>
|
||||
<text name="local lights_label" tool_tip="Влияет на количество отрисованых источников света, когда расширенная модель освещения отключена. Требуется перезапуск">
|
||||
<text name="local lights_label" tool_tip="Влияет на количество отрисованых источников света. Требуется перезапуск">
|
||||
Точечное освещение:
|
||||
</text>
|
||||
<combo_box name="LocalLightsDetail">
|
||||
|
|
|
|||
Loading…
Reference in New Issue