Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts: # indra/cmake/LLPhysicsExtensions.cmake # indra/newview/llvoicewebrtc.cppmaster
commit
8a55580fc9
|
|
@ -265,7 +265,7 @@ jobs:
|
|||
|
||||
- name: Upload executable
|
||||
if: steps.build.outputs.viewer_app
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: "${{ steps.build.outputs.artifact }}-app"
|
||||
path: |
|
||||
|
|
@ -275,13 +275,13 @@ jobs:
|
|||
# artifact for that too.
|
||||
- name: Upload symbol file
|
||||
if: steps.build.outputs.symbolfile
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: "${{ steps.build.outputs.artifact }}-symbols"
|
||||
path: ${{ steps.build.outputs.symbolfile }}
|
||||
|
||||
- name: Upload metadata
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: "${{ steps.build.outputs.artifact }}-metadata"
|
||||
# emitted by build.sh, possibly multiple lines
|
||||
|
|
@ -289,7 +289,7 @@ jobs:
|
|||
${{ steps.build.outputs.metadata }}
|
||||
|
||||
- name: Upload physics package
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
# should only be set for viewer-private
|
||||
if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv
|
||||
with:
|
||||
|
|
@ -369,13 +369,13 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download viewer exe
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: Windows-app
|
||||
path: _artifacts
|
||||
- name: Download Windows Symbols
|
||||
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: Windows-symbols
|
||||
- name: Extract viewer pdb
|
||||
|
|
@ -405,7 +405,7 @@ jobs:
|
|||
steps:
|
||||
- name: Download Mac Symbols
|
||||
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: macOS-symbols
|
||||
- name: Post Mac symbols
|
||||
|
|
@ -425,11 +425,11 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
if: needs.setup.outputs.release_run
|
||||
steps:
|
||||
- uses: actions/download-artifact@v5
|
||||
- uses: actions/download-artifact@v6
|
||||
with:
|
||||
pattern: "*-installer"
|
||||
|
||||
- uses: actions/download-artifact@v5
|
||||
- uses: actions/download-artifact@v6
|
||||
with:
|
||||
pattern: "*-metadata"
|
||||
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ jobs:
|
|||
dumpSyms: false
|
||||
- name: Publish artifacts
|
||||
if: runner.os == 'Windows'
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{ matrix.grid }}-artifacts.zip
|
||||
path: |
|
||||
|
|
@ -491,7 +491,7 @@ jobs:
|
|||
|
||||
- name: publish Linux artifacts
|
||||
if: runner.os == 'Linux'
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip
|
||||
path: |
|
||||
|
|
@ -500,7 +500,7 @@ jobs:
|
|||
|
||||
- name: publish MacOS artifacts
|
||||
if: runner.os == 'macOS'
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip
|
||||
path: |
|
||||
|
|
@ -529,7 +529,7 @@ jobs:
|
|||
run: pip install discord-webhook
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
id: download
|
||||
with:
|
||||
path: to_deploy
|
||||
|
|
@ -581,7 +581,7 @@ jobs:
|
|||
|
||||
# Upload Build Info Artifact (note that this file is expected to be identical for each matrix run, so items like OS and VARIANT cannot be in this file.)
|
||||
- name: Upload Tag Info
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: build_info
|
||||
path: build_info.json
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ jobs:
|
|||
files_json=$(ls setup_exe_files | jq -R . | jq -s -c .)
|
||||
echo "setup_files=$files_json" >> $GITHUB_OUTPUT
|
||||
- name: Upload Setup.exe Files
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: setup-exe-files
|
||||
path: setup_exe_files/
|
||||
|
|
@ -86,7 +86,7 @@ jobs:
|
|||
shell: bash
|
||||
|
||||
- name: Download Setup.exe Files Artifact
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: setup-exe-files
|
||||
path: setup_exe_files
|
||||
|
|
@ -97,7 +97,7 @@ jobs:
|
|||
shell: bash
|
||||
# - name: Upload unsigned artifact
|
||||
# id: upload-unsigned-artifact
|
||||
# uses: actions/upload-artifact@v4
|
||||
# uses: actions/upload-artifact@v5
|
||||
# with:
|
||||
# name: unsigned-artifact-${{ matrix.file }}
|
||||
# path: to_sign/${{ matrix.file }}
|
||||
|
|
@ -115,7 +115,7 @@ jobs:
|
|||
# wait-for-completion: true
|
||||
# output-artifact-directory: 'application-signed'
|
||||
- name: Azure Trusted Signing
|
||||
uses: azure/trusted-signing-action@v0.5.9
|
||||
uses: azure/trusted-signing-action@v0.5.10
|
||||
with:
|
||||
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
|
|
@ -129,14 +129,14 @@ jobs:
|
|||
files-folder-filter: exe
|
||||
|
||||
# - name: Upload signed artifact
|
||||
# uses: actions/upload-artifact@v4
|
||||
# uses: actions/upload-artifact@v5
|
||||
# with:
|
||||
# name: signed-artifact-${{ matrix.file }}
|
||||
# path: ./application-signed
|
||||
# - name: Upload unsigned artifact
|
||||
- name: Upload signed artifact
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: unsigned-artifact-${{ matrix.file }}
|
||||
path: to_sign\${{ matrix.file }}
|
||||
|
|
|
|||
|
|
@ -720,11 +720,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>126e0fa4c16dfd433c9fb7d1d242da98f213d933</string>
|
||||
<string>2c81fa7aa03b427088ab54ce3b71088a0003126b</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139-darwin64-18353103947.tar.zst</string>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139-darwin64-18568015445.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -734,11 +734,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>209d031ae67bc66d8e8f8509c71d259014c65ceb</string>
|
||||
<string>8e06d060729250c5bfcb993c8f818f36ea17de16</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.14.0-r3/dullahan-1.14.0.202408091637_118.4.1_g3dd6078_chromium-118.0.5993.54-linux64-10322607516.tar.zst</string>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139-linux64-18568015445.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -748,11 +748,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>20de62c9e57d9e6539c1e2437ec4b46c3ca237bc</string>
|
||||
<string>7ca6db37f019b47e230c0861607c546d45535367</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081738_139.0.40_g465474a_chromium-139.0.7258.139-windows64-18353103947.tar.zst</string>
|
||||
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161628_139.0.40_g465474a_chromium-139.0.7258.139-windows64-18568015445.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -765,7 +765,7 @@
|
|||
<key>copyright</key>
|
||||
<string>Copyright (c) 2017, Linden Research, Inc.</string>
|
||||
<key>version</key>
|
||||
<string>1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139</string>
|
||||
<string>1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139</string>
|
||||
<key>name</key>
|
||||
<string>dullahan</string>
|
||||
<key>description</key>
|
||||
|
|
|
|||
|
|
@ -197,6 +197,8 @@ if (LINUX)
|
|||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-keep-memory -Wl,--build-id -Wl,-rpath,'$ORIGIN:$ORIGIN/../lib' -Wl,--exclude-libs,ALL")
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
# Prefer static libraries on Linux
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so;.a")
|
||||
endif (LINUX)
|
||||
|
||||
if (DARWIN)
|
||||
|
|
|
|||
|
|
@ -113,6 +113,9 @@ if(WINDOWS)
|
|||
elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1950) # Visual Studio 2022
|
||||
set(MSVC_VER 140)
|
||||
set(MSVC_TOOLSET_VER 143)
|
||||
elseif (MSVC_VERSION GREATER_EQUAL 1950 AND MSVC_VERSION LESS 1970) # Visual Studio 2026
|
||||
set(MSVC_VER 140)
|
||||
set(MSVC_TOOLSET_VER 145)
|
||||
else (MSVC80)
|
||||
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
|
||||
endif (MSVC80)
|
||||
|
|
@ -150,6 +153,7 @@ if(WINDOWS)
|
|||
msvcp${MSVC_VER}_atomic_wait.dll
|
||||
msvcp${MSVC_VER}_codecvt_ids.dll
|
||||
#msvcr${MSVC_VER}.dll # <FS:Ansariel> Can't build with older VS versions anyway - no need trying to copy this file
|
||||
vccorlib${MSVC_VER}.dll
|
||||
vcruntime${MSVC_VER}.dll
|
||||
vcruntime${MSVC_VER}_1.dll
|
||||
vcruntime${MSVC_VER}_threads.dll
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# -*- cmake -*-
|
||||
include(Prebuilt)
|
||||
include(GLIB) # <FS:Beq/> add glib includes
|
||||
if (NOT LINUX)
|
||||
return()
|
||||
endif()
|
||||
|
|
@ -10,4 +11,12 @@ use_system_binary(gstreamer10)
|
|||
|
||||
use_prebuilt_binary(gstreamer10)
|
||||
use_prebuilt_binary(libxml2)
|
||||
target_include_directories( ll::gstreamer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/gstreamer-1.0)
|
||||
# <FS:Beq> make sure glib is found
|
||||
set(_gstreamer10_include_dirs
|
||||
${LIBS_PREBUILT_DIR}/include/gstreamer-1.0
|
||||
${GLIB_INCLUDE_DIRS}
|
||||
)
|
||||
list(REMOVE_ITEM _gstreamer10_include_dirs "")
|
||||
# </FS:Beq>
|
||||
|
||||
target_include_directories( ll::gstreamer SYSTEM INTERFACE ${_gstreamer10_include_dirs})
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ if (USE_KDU)
|
|||
find_library(KDU_LIBRARY
|
||||
NAMES
|
||||
libkdu.a
|
||||
libkdu${ND_KDU_SUFFIX} // <FS> FS-specific naming
|
||||
libkdu${ND_KDU_SUFFIX}.a // <FS> FS-specific naming
|
||||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
endif (WINDOWS)
|
||||
|
|
|
|||
|
|
@ -56,3 +56,11 @@ find_library(COLLADADOM_LIBRARY
|
|||
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
target_link_libraries(ll::colladadom INTERFACE ${COLLADADOM_LIBRARY} ll::boost ll::libxml ll::minizip-ng)
|
||||
|
||||
# <FS> GLIB uses pcre, so we need to keep it for Linux builds
|
||||
if (LINUX)
|
||||
add_library( ll::pcre INTERFACE IMPORTED )
|
||||
use_prebuilt_binary(pcre)
|
||||
target_link_libraries( ll::pcre INTERFACE pcrecpp pcre )
|
||||
endif ()
|
||||
# </FS>
|
||||
|
|
@ -39,6 +39,10 @@
|
|||
#include "llframetimer.h"
|
||||
#include "llassettype.h"
|
||||
#include "llextendedstatus.h"
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Need to include for audio device mutex shared with other audio/voice systems.
|
||||
#include "inlinemutexs.h"
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
#include "lllistener.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,9 @@
|
|||
|
||||
#include "sound_ids.h"
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
constexpr U32 EXTRA_SOUND_CHANNELS = 10;
|
||||
|
||||
FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels);
|
||||
|
|
@ -113,8 +116,14 @@ static void set_device(FMOD::System* system, const LLUUID& device_uuid)
|
|||
}
|
||||
}
|
||||
|
||||
FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// According to FMOD, not having this method static is very bad.
|
||||
//FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
|
||||
static FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
|
||||
{
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
FMOD::System* sys = (FMOD::System*)system;
|
||||
LLAudioEngine_FMODSTUDIO* audio_engine = (LLAudioEngine_FMODSTUDIO*)userdata;
|
||||
|
||||
|
|
@ -124,6 +133,17 @@ FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE
|
|||
LL_DEBUGS("FMOD") << "FMOD system callback FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED" << LL_ENDL;
|
||||
if (sys && audio_engine)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
|
||||
return FMOD_OK; // Could be a FMOD_ERR_ALREADY_LOCKED;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
set_device(sys, audio_engine->getSelectedDeviceUUID());
|
||||
audio_engine->OnOutputDeviceListChanged(audio_engine->getDevices());
|
||||
}
|
||||
|
|
@ -132,6 +152,34 @@ FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE
|
|||
break;
|
||||
}
|
||||
return FMOD_OK;
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
return FMOD_ERR_ALREADY_LOCKED;
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
return FMOD_ERR_ALREADY_LOCKED;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
|
||||
return FMOD_ERR_ALREADY_LOCKED;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << " " << e.what() << LL_ENDL;
|
||||
return FMOD_ERR_ALREADY_LOCKED;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
|
||||
LLAudioEngine_FMODSTUDIO::LLAudioEngine_FMODSTUDIO(bool enable_profiler, U32 resample_method)
|
||||
|
|
@ -311,6 +359,11 @@ bool LLAudioEngine_FMODSTUDIO::init(void* userdata, const std::string &app_title
|
|||
LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init() FMOD Studio initialized correctly" << LL_ENDL;
|
||||
|
||||
FMOD_ADVANCEDSETTINGS settings_dump = { };
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// With the FMOD debug library used, turns out this object needs to have a size assigned to it otherwise it will fail.
|
||||
// So the viewer never got any advanced settings for the info below.
|
||||
settings_dump.cbSize = sizeof(FMOD_ADVANCEDSETTINGS);
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
mSystem->getAdvancedSettings(&settings_dump);
|
||||
LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): resampler=" << settings_dump.resamplerMethod << " bytes" << LL_ENDL;
|
||||
|
||||
|
|
@ -373,7 +426,47 @@ LLAudioEngine_FMODSTUDIO::output_device_map_t LLAudioEngine_FMODSTUDIO::getDevic
|
|||
void LLAudioEngine_FMODSTUDIO::setDevice(const LLUUID& device_uuid)
|
||||
{
|
||||
mSelectedDeviceUUID = device_uuid;
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
set_device(mSystem, device_uuid);
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
LL_WARNS() << "Exception FMOD: " << " " << e.what() << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
}
|
||||
|
||||
std::string LLAudioEngine_FMODSTUDIO::getDriverName(bool verbose)
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ set(llcommon_HEADER_FILES
|
|||
fsyspath.h
|
||||
function_types.h
|
||||
indra_constants.h
|
||||
inlinemutexs.h
|
||||
lazyeventapi.h
|
||||
linden_common.h
|
||||
llalignedarray.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* @file inlinemutexs.h
|
||||
* @brief Declaration of inline mutexs
|
||||
* @author minerjr@firestorm
|
||||
*
|
||||
* $LicenseInfo:firstyear=2025&license=fsviewerlgpl$
|
||||
* Phoenix Firestorm Viewer Source Code
|
||||
* Copyright (C) 2025, Minerjr
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
|
||||
* http://www.firestormviewer.org
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef INLINE_MUTEXS_HEADER
|
||||
#define INLINE_MUTEXS_HEADER
|
||||
#include <mutex>
|
||||
#include <chrono>
|
||||
#include <atomic>
|
||||
|
||||
// Audio device mutex to be shared between audio engine and Voice systems to
|
||||
// syncronize on when audio hardware accessed for disconnected/connecting hardware
|
||||
// Uses Timed Mutex so as to not lockup the threads forever.
|
||||
inline std::timed_mutex gAudioDeviceMutex;
|
||||
#endif
|
||||
|
|
@ -238,7 +238,22 @@ private:
|
|||
mParents.pop_back();
|
||||
}
|
||||
/// equality
|
||||
bool equal(const self_type& that) const { return this->mParents == that.mParents; }
|
||||
bool equal(const self_type& that) const
|
||||
{
|
||||
if (this == &that)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool empty = mParents.empty();
|
||||
const bool that_empty = that.mParents.empty();
|
||||
if (empty || that_empty)
|
||||
{
|
||||
return empty && that_empty;
|
||||
}
|
||||
|
||||
return mParents == that.mParents;
|
||||
}
|
||||
/// implement dereference/indirection operators
|
||||
ptr_type& dereference() const { return const_cast<ptr_type&>(mParents.back()); }
|
||||
|
||||
|
|
@ -373,7 +388,22 @@ private:
|
|||
mSkipChildren = false;
|
||||
}
|
||||
/// equality
|
||||
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
|
||||
bool equal(const self_type& that) const
|
||||
{
|
||||
if (this == &that)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool empty = mPending.empty();
|
||||
const bool that_empty = that.mPending.empty();
|
||||
if (empty || that_empty)
|
||||
{
|
||||
return empty && that_empty;
|
||||
}
|
||||
|
||||
return mPending == that.mPending;
|
||||
}
|
||||
/// implement dereference/indirection operators
|
||||
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.back()); }
|
||||
|
||||
|
|
@ -474,7 +504,22 @@ private:
|
|||
makeCurrent();
|
||||
}
|
||||
/// equality
|
||||
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
|
||||
bool equal(const self_type& that) const
|
||||
{
|
||||
if (this == &that)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool empty = mPending.empty();
|
||||
const bool that_empty = that.mPending.empty();
|
||||
if (empty || that_empty)
|
||||
{
|
||||
return empty && that_empty;
|
||||
}
|
||||
|
||||
return mPending == that.mPending;
|
||||
}
|
||||
/// implement dereference/indirection operators
|
||||
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.back().first); }
|
||||
|
||||
|
|
@ -611,7 +656,22 @@ private:
|
|||
mPending.push_back(*chi);
|
||||
}
|
||||
/// equality
|
||||
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
|
||||
bool equal(const self_type& that) const
|
||||
{
|
||||
if (this == &that)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool empty = mPending.empty();
|
||||
const bool that_empty = that.mPending.empty();
|
||||
if (empty || that_empty)
|
||||
{
|
||||
return empty && that_empty;
|
||||
}
|
||||
|
||||
return mPending == that.mPending;
|
||||
}
|
||||
/// implement dereference/indirection operators
|
||||
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.front()); }
|
||||
|
||||
|
|
|
|||
|
|
@ -1131,7 +1131,13 @@ bool LLDAELoader::OpenFile(const std::string& filename)
|
|||
LLModel* mdl = *i;
|
||||
if(mdl->getStatus() != LLModel::NO_ERRORS)
|
||||
{
|
||||
setLoadState(ERROR_MODEL + mdl->getStatus()) ;
|
||||
// <FS:Beq> Fix deprecated arithmetic between different enum types (ERROR_MODEL + EModelStatus)
|
||||
// Ugly fix. could use a helper instead but its only called in two places.
|
||||
// setLoadState(ERROR_MODEL + mdl->getStatus());
|
||||
setLoadState(
|
||||
static_cast<LLModelLoader::eLoadState>(
|
||||
static_cast<S32>(ERROR_MODEL) + static_cast<S32>(mdl->getStatus())));
|
||||
// </FS:Beq>
|
||||
return false; //abort
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -303,11 +303,8 @@ void LLAccordionCtrl::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top, S3
|
|||
return;
|
||||
LLRect panel_rect = panel->getRect();
|
||||
panel_rect.setLeftTopAndSize( left, top, width, height);
|
||||
if (panel->getRect() != panel_rect)
|
||||
{
|
||||
panel->reshape( width, height, 1);
|
||||
panel->setRect(panel_rect);
|
||||
}
|
||||
panel->reshape( width, height, 1);
|
||||
panel->setRect(panel_rect);
|
||||
}
|
||||
|
||||
void LLAccordionCtrl::ctrlShiftVertical(LLView* panel, S32 delta)
|
||||
|
|
|
|||
|
|
@ -27,6 +27,11 @@
|
|||
#include "llwebrtc_impl.h"
|
||||
#include <algorithm>
|
||||
#include <string.h>
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Needed for accessing the inline timed mutex for accessing audio hardware.
|
||||
#include <mutex>
|
||||
#include <chrono>
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
#include "api/audio_codecs/audio_decoder_factory.h"
|
||||
#include "api/audio_codecs/audio_encoder_factory.h"
|
||||
|
|
@ -39,6 +44,14 @@
|
|||
#include "modules/audio_mixer/audio_mixer_impl.h"
|
||||
#include "api/environment/environment_factory.h"
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Audio device mutex to be shared between audio engine and Voice systems to
|
||||
// syncronize on when audio hardware accessed for disconnected/connecting hardware
|
||||
// Uses Timed Mutex so as to not lockup the threads forever.
|
||||
inline std::timed_mutex gAudioDeviceMutex;
|
||||
// Need to use to access the 3 second timeout for the lock.
|
||||
using namespace std::chrono_literals;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
namespace llwebrtc
|
||||
{
|
||||
#if WEBRTC_WIN
|
||||
|
|
@ -269,7 +282,11 @@ void LLWebRTCImpl::init()
|
|||
webrtc::InitializeSSL();
|
||||
|
||||
// Normal logging is rather spammy, so turn it off.
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Turn on more verbose logging as we are looking for crashes.
|
||||
webrtc::LogMessage::LogToDebug(webrtc::LS_NONE);
|
||||
//webrtc::LogMessage::LogToDebug(webrtc::LS_VERBOSE);
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
webrtc::LogMessage::SetLogToStderr(true);
|
||||
webrtc::LogMessage::AddLogToStream(mLogSink, webrtc::LS_VERBOSE);
|
||||
|
||||
|
|
@ -463,8 +480,24 @@ void LLWebRTCImpl::unsetDevicesObserver(LLWebRTCDevicesObserver *observer)
|
|||
// must be run in the worker thread.
|
||||
void LLWebRTCImpl::workerDeployDevices()
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
if (!mDeviceModule)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022]
|
||||
// If the device is not avaiable, then make sure the flag for the WebRTC updated devices flag is turned off for the co-routine
|
||||
gWebRTCUpdateDevices = false;
|
||||
// </FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -489,6 +522,10 @@ void LLWebRTCImpl::workerDeployDevices()
|
|||
}
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
|
||||
gWebRTCUpdateDevices = true;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
mDeviceModule->StopPlayout();
|
||||
mDeviceModule->ForceStopRecording();
|
||||
#if WEBRTC_WIN
|
||||
|
|
@ -552,6 +589,10 @@ void LLWebRTCImpl::workerDeployDevices()
|
|||
{
|
||||
mDeviceModule->StartPlayout();
|
||||
}
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Finally signal to the co-routine everyting is OK.
|
||||
gWebRTCUpdateDevices = false;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
mSignalingThread->PostTask(
|
||||
[this]
|
||||
{
|
||||
|
|
@ -572,6 +613,38 @@ void LLWebRTCImpl::workerDeployDevices()
|
|||
mWorkerThread->PostTask([this] { workerDeployDevices(); });
|
||||
}
|
||||
});
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// Another thead may have alreayd called this method
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// This should not be reached
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Log any other message
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::setCaptureDevice(const std::string &id)
|
||||
|
|
@ -596,11 +669,27 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
|
|||
// updateDevices needs to happen on the worker thread.
|
||||
void LLWebRTCImpl::updateDevices()
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
if (!mDeviceModule)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
|
||||
gWebRTCUpdateDevices = true;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
int16_t renderDeviceCount = mDeviceModule->PlayoutDevices();
|
||||
|
||||
mPlayoutDeviceList.clear();
|
||||
|
|
@ -637,10 +726,46 @@ void LLWebRTCImpl::updateDevices()
|
|||
mRecordingDeviceList.emplace_back(name, guid);
|
||||
}
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Flag the device is no longer being interacted with for the Co-routine in case something goes wrong.
|
||||
gWebRTCUpdateDevices = false;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
for (auto &observer : mVoiceDevicesObserverList)
|
||||
{
|
||||
observer->OnDevicesChanged(mPlayoutDeviceList, mRecordingDeviceList);
|
||||
}
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// Another thead may have alreayd called this method
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// This should not be reached
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Log any other message
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::OnDevicesUpdated()
|
||||
|
|
@ -745,7 +870,56 @@ void LLWebRTCImpl::intSetMute(bool mute, int delay_ms)
|
|||
{
|
||||
if (mDeviceModule)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is
|
||||
// invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
|
||||
gWebRTCUpdateDevices = true;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
mDeviceModule->ForceStopRecording();
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Finally signal to the co-routine everyting is OK.
|
||||
gWebRTCUpdateDevices = false;
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// Another thead may have alreayd called this method
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// This should not be reached
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Log any other message
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
},
|
||||
webrtc::TimeDelta::Millis(delay_ms));
|
||||
|
|
@ -757,8 +931,57 @@ void LLWebRTCImpl::intSetMute(bool mute, int delay_ms)
|
|||
{
|
||||
if (mDeviceModule)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is
|
||||
// invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
|
||||
gWebRTCUpdateDevices = true;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
mDeviceModule->InitRecording();
|
||||
mDeviceModule->ForceStartRecording();
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Finally signal to the co-routine everyting is OK.
|
||||
gWebRTCUpdateDevices = false;
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// Another thead may have alreayd called this method
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// This should not be reached
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Log any other message
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
}
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
|
||||
// Device no longer being interacted with
|
||||
gWebRTCUpdateDevices = false;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,10 @@
|
|||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Needed for inline variable for the crash check
|
||||
#include <atomic>
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
#ifdef LL_MAKEDLL
|
||||
#ifdef WEBRTC_WIN
|
||||
|
|
@ -53,6 +57,12 @@
|
|||
#define LLSYMEXPORT /**/
|
||||
#endif // LL_MAKEDLL
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Create an atomic inline flag that will be shared between the various WebRTC threads and co-routines
|
||||
// to track of when the audio hardware is being talked to. The co-routine can use it to
|
||||
// exit if it too many iterations with the hardware locked indicating that the worker thread died.
|
||||
inline std::atomic<bool> gWebRTCUpdateDevices = false;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
namespace llwebrtc
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
|
|
|
|||
|
|
@ -23499,7 +23499,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>InventoryAddAttachmentBehavior</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Defines behavior when hitting return on an inventory item</string>
|
||||
<string>Defines behavior when hitting return on an inventory item (unused in favour of FSDoubleClickAddInventoryObjects)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
|
|||
|
|
@ -1141,6 +1141,30 @@
|
|||
<key>Value</key>
|
||||
<string/>
|
||||
</map>
|
||||
<key>FSBuildPrefs_UseCustomScript</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Use custom script template when clicking New Script button</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSBuildPrefs_CustomScriptItem</key>
|
||||
<map>
|
||||
<key>HideFromEditor</key>
|
||||
<integer>1</integer>
|
||||
<key>Comment</key>
|
||||
<string>Script UUID to use as template for New Script button</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string/>
|
||||
</map>
|
||||
<key>FSllOwnerSayToScriptDebugWindow</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -4106,6 +4106,7 @@ void FSPanelFace::onCancelSpecularTexture()
|
|||
// onClickBtnAddMedia() where needed, so the naming is probably just old cruft -Zi
|
||||
void FSPanelFace::onClickBtnEditMedia()
|
||||
{
|
||||
LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia
|
||||
refreshMedia();
|
||||
LLFloaterReg::showInstance("media_settings");
|
||||
}
|
||||
|
|
@ -4124,6 +4125,7 @@ void FSPanelFace::onClickBtnAddMedia()
|
|||
// check if multiple faces are selected
|
||||
if (LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected())
|
||||
{
|
||||
LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia
|
||||
refreshMedia();
|
||||
LLNotificationsUtil::add("MultipleFacesSelected", LLSD(), LLSD(), boost::bind(&FSPanelFace::multipleFacesSelectedConfirm, this, _1, _2));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ FSPanelPrefs::FSPanelPrefs() : LLPanelPreference()
|
|||
mCommitCallbackRegistrar.add("Perms.Trans", boost::bind(&FSPanelPrefs::onCommitTrans, this));
|
||||
|
||||
mEmbeddedItem = gSavedPerAccountSettings.getString("FSBuildPrefs_Item");
|
||||
mCustomScriptItem = gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem");
|
||||
}
|
||||
|
||||
bool FSPanelPrefs::postBuild()
|
||||
|
|
@ -75,6 +76,9 @@ bool FSPanelPrefs::postBuild()
|
|||
mInvDropTarget = getChild<FSEmbeddedItemDropTarget>("embed_item");
|
||||
mInvDropTarget->setDADCallback(boost::bind(&FSPanelPrefs::onDADEmbeddedItem, this, _1));
|
||||
|
||||
mCustomScriptDropTarget = getChild<FSEmbeddedItemDropTarget>("custom_script");
|
||||
mCustomScriptDropTarget->setDADCallback(boost::bind(&FSPanelPrefs::onDADCustomScript, this, _1));
|
||||
|
||||
return LLPanelPreference::postBuild();
|
||||
}
|
||||
|
||||
|
|
@ -101,12 +105,35 @@ void FSPanelPrefs::onOpen(const LLSD& key)
|
|||
getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotAvailable"));
|
||||
}
|
||||
}
|
||||
|
||||
getChild<LLCheckBoxCtrl>("FSBuildPrefs_UseCustomScript")->setEnabled(true);
|
||||
mCustomScriptItem = gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem");
|
||||
LLUUID script_id(mCustomScriptItem);
|
||||
if (script_id.isNull())
|
||||
{
|
||||
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotSet"));
|
||||
}
|
||||
else
|
||||
{
|
||||
LLInventoryObject* script = gInventory.getObject(script_id);
|
||||
if (script)
|
||||
{
|
||||
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", script->getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotAvailable"));
|
||||
}
|
||||
}
|
||||
|
||||
getChild<LLUICtrl>("reset_default_folders")->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
getChild<LLCheckBoxCtrl>("FSBuildPrefs_EmbedItem")->setEnabled(false);
|
||||
getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotLoggedIn"));
|
||||
getChild<LLCheckBoxCtrl>("FSBuildPrefs_UseCustomScript")->setEnabled(false);
|
||||
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotLoggedIn"));
|
||||
getChild<LLUICtrl>("reset_default_folders")->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
|
@ -118,6 +145,7 @@ void FSPanelPrefs::apply()
|
|||
if (LLStartUp::getStartupState() == STATE_STARTED)
|
||||
{
|
||||
gSavedPerAccountSettings.setString("FSBuildPrefs_Item", mEmbeddedItem);
|
||||
gSavedPerAccountSettings.setString("FSBuildPrefs_CustomScriptItem", mCustomScriptItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -277,6 +305,16 @@ void FSPanelPrefs::onDADEmbeddedItem(const LLUUID& item_id)
|
|||
}
|
||||
}
|
||||
|
||||
void FSPanelPrefs::onDADCustomScript(const LLUUID& item_id)
|
||||
{
|
||||
LLInventoryObject* item = gInventory.getObject(item_id);
|
||||
if (item && item->getType() == LLAssetType::AT_LSL_TEXT)
|
||||
{
|
||||
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", item->getName());
|
||||
mCustomScriptItem = item_id.asString();
|
||||
}
|
||||
}
|
||||
|
||||
void FSPanelPrefs::onResetDefaultFolders()
|
||||
{
|
||||
gSavedPerAccountSettings.getControl("ModelUploadFolder")->resetToDefault(true);
|
||||
|
|
|
|||
|
|
@ -55,11 +55,14 @@ private:
|
|||
void onCommitTrans();
|
||||
|
||||
void onDADEmbeddedItem(const LLUUID& item_id);
|
||||
void onDADCustomScript(const LLUUID& item_id);
|
||||
|
||||
void onResetDefaultFolders();
|
||||
|
||||
FSEmbeddedItemDropTarget* mInvDropTarget;
|
||||
FSEmbeddedItemDropTarget* mCustomScriptDropTarget;
|
||||
std::string mEmbeddedItem;
|
||||
std::string mCustomScriptItem;
|
||||
};
|
||||
|
||||
#endif // FS_PANELPREFS_H
|
||||
|
|
|
|||
|
|
@ -489,7 +489,13 @@ void LLGLTFLoader::processNodeHierarchy(S32 node_idx, std::map<std::string, S32>
|
|||
}
|
||||
else
|
||||
{
|
||||
setLoadState(ERROR_MODEL + pModel->getStatus());
|
||||
// <FS:Beq> Fix deprecated arithmetic between different enum types (ERROR_MODEL + EModelStatus)
|
||||
// Ugly fix. could use a helper instead but its only called in two places.
|
||||
// setLoadState(ERROR_MODEL + pModel->getStatus());
|
||||
setLoadState(
|
||||
static_cast<LLModelLoader::eLoadState>(
|
||||
static_cast<S32>(ERROR_MODEL) + static_cast<S32>(pModel->getStatus())));
|
||||
// </FS:Beq>
|
||||
delete pModel;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5206,6 +5206,8 @@ bool LLAppViewer::initCache()
|
|||
LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL;
|
||||
gSavedSettings.setString("CacheLocation", "");
|
||||
gSavedSettings.setString("CacheLocationTopFolder", "");
|
||||
gSavedSettings.setString("NewCacheLocation", "");
|
||||
gSavedSettings.setString("NewCacheLocationTopFolder", "");
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Sound cache
|
||||
|
|
|
|||
|
|
@ -1026,6 +1026,11 @@ bool LLAppViewerWin32::cleanup()
|
|||
|
||||
gDXHardware.cleanup();
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Need to unilitialize connection to COM, otherwise it will be treated as a memroy leak.
|
||||
CoUninitialize();
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
if (mIsConsoleAllocated)
|
||||
{
|
||||
FreeConsole();
|
||||
|
|
@ -1066,6 +1071,19 @@ bool LLAppViewerWin32::initWindow()
|
|||
LL_WARNS("AppInit") << "Unable to set WindowWidth and WindowHeight for FullScreen mode" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Acccording to the FMOD spec, you are suppose to initalize COM on the thead that will talk to FMOD. IE the main thread.
|
||||
// There is a coorisponding CoUninitialize in the shutdown code. Otherwise, FMOD will force the initalize with a warning, but does not clean up COM
|
||||
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
LL_INFOS() << "WIN32: CoInitializeEx COM as COINIT_APARTMENTTHREADED Successful" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "WIN32: CoInitializeEx COM as COINIT_APARTMENTTHREADED Failed" << LL_ENDL;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
return LLAppViewer::initWindow();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -938,7 +938,10 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
|
|||
LLVector3 cam_pos_from_agent = LLViewerCamera::getInstance()->getOrigin();
|
||||
LLVector3 cam_to_box_offset = point_to_box_offset(cam_pos_from_agent, av_box);
|
||||
mDistanceWRTCamera = llmax(0.01f, ll_round(cam_to_box_offset.magVec(), 0.01f));
|
||||
mVObjp->updateLOD();
|
||||
if (mVObjp)
|
||||
{
|
||||
mVObjp->updateLOD();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -949,7 +952,10 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
|
|||
|
||||
pos -= camera.getOrigin();
|
||||
mDistanceWRTCamera = ll_round(pos.magVec(), 0.01f);
|
||||
mVObjp->updateLOD();
|
||||
if (mVObjp)
|
||||
{
|
||||
mVObjp->updateLOD();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -961,6 +967,11 @@ void LLDrawable::updateTexture()
|
|||
return;
|
||||
}
|
||||
|
||||
if (!mVObjp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (getNumFaces() != mVObjp->getNumTEs())
|
||||
{ //drawable is transitioning its face count
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,12 @@ class LLDrawInfo;
|
|||
class LLMeshSkinInfo;
|
||||
|
||||
const F32 MIN_ALPHA_SIZE = 1024.f;
|
||||
const F32 MIN_TEX_ANIM_SIZE = 512.f;
|
||||
// <FS:minerjr>
|
||||
//const F32 MIN_TEX_ANIM_SIZE = 512.f;
|
||||
// Reduce the cut off point of the animated textures down to the size when textures get discarded/set to invalid size.
|
||||
// This should prevent "on screen" animated textures from stopping.
|
||||
const F32 MIN_TEX_ANIM_SIZE = 16.f;
|
||||
// </FS:minerjr>
|
||||
const U8 FACE_DO_NOT_BATCH_TEXTURES = 255;
|
||||
|
||||
class alignas(16) LLFace
|
||||
|
|
@ -128,7 +133,7 @@ public:
|
|||
void setIndexInTex(U32 ch, S32 index) { llassert(ch < LLRender::NUM_TEXTURE_CHANNELS); mIndexInTex[ch] = index; }
|
||||
|
||||
void setWorldMatrix(const LLMatrix4& mat);
|
||||
const LLTextureEntry* getTextureEntry() const { return mVObjp->getTE(mTEOffset); }
|
||||
const LLTextureEntry* getTextureEntry() const { return mVObjp ? mVObjp->getTE(mTEOffset) : nullptr; }
|
||||
|
||||
LLFacePool* getPool() const { return mDrawPoolp; }
|
||||
U32 getPoolType() const { return mPoolType; }
|
||||
|
|
|
|||
|
|
@ -7925,8 +7925,12 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
|
|||
item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
|
||||
if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
|
||||
{
|
||||
static LLCachedControl<bool> replace_item(gSavedSettings, "InventoryAddAttachmentBehavior", false);
|
||||
rez_attachment(item, NULL, ("attach" == action) ? replace_item() : true); // Replace if "Wear"ing.
|
||||
// <FS> Firestorm's replace on double click
|
||||
// static LLCachedControl<bool> replace_item(gSavedSettings, "InventoryAddAttachmentBehavior", false);
|
||||
// rez_attachment(item, NULL, ("attach" == action) ? replace_item() : true); // Replace if "Wear"ing.
|
||||
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false);
|
||||
rez_attachment(item, NULL, ("attach" == action) ? !replace_item : true); // Replace if "Wear"ing.
|
||||
// </FS>
|
||||
}
|
||||
else if(item && item->isFinished())
|
||||
{
|
||||
|
|
@ -7969,11 +7973,13 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
|
|||
|
||||
void LLObjectBridge::openItem()
|
||||
{
|
||||
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false); // <FS> Double-click add/replace
|
||||
// object double-click action is to wear/unwear object
|
||||
performAction(getInventoryModel(),
|
||||
// <FS> Double-click add/replace
|
||||
//get_is_item_worn(mUUID) ? "detach" : "attach");
|
||||
get_is_item_worn(mUUID) ? "detach" : gSavedSettings.getBOOL("FSDoubleClickAddInventoryObjects") ? "wear_add" : "attach");
|
||||
get_is_item_worn(mUUID) ? "detach" : replace_item ? "wear_add" : "attach");
|
||||
// </FS>
|
||||
}
|
||||
|
||||
std::string LLObjectBridge::getLabelSuffix() const
|
||||
|
|
@ -9190,7 +9196,9 @@ void LLObjectBridgeAction::attachOrDetach()
|
|||
// <FS:Ansariel> Double-click add/replace option
|
||||
//static LLCachedControl<bool> inventory_linking(gSavedSettings, "InventoryAddAttachmentBehavior", false);
|
||||
//LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, inventory_linking()); // Don't replace if adding.
|
||||
LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, !gSavedSettings.getBOOL("FSDoubleClickAddInventoryObjects")); // Don't replace if adding.
|
||||
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false);
|
||||
LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, !replace_item); // Don't replace if adding.
|
||||
// </FS>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/**
|
||||
* @file llmaniptranslate.cpp
|
||||
* @brief LLManipTranslate class implementation
|
||||
*
|
||||
|
|
@ -716,24 +716,28 @@ bool LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
|
|||
// handle attachments in local space
|
||||
if (object->isAttachment() && object->mDrawable.notNull())
|
||||
{
|
||||
// calculate local version of relative move
|
||||
LLQuaternion objWorldRotation = object->mDrawable->mXform.getParent()->getWorldRotation();
|
||||
objWorldRotation.transQuat();
|
||||
|
||||
LLVector3 old_position_local = object->getPosition();
|
||||
LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation);
|
||||
|
||||
//RN: I forget, but we need to do this because of snapping which doesn't often result
|
||||
// in position changes even when the mouse moves
|
||||
object->setPosition(new_position_local);
|
||||
rebuild(object);
|
||||
gAgentAvatarp->clampAttachmentPositions();
|
||||
new_position_local = object->getPosition();
|
||||
|
||||
if (selectNode->mIndividualSelection)
|
||||
LLXform* object_xform_parent = object->mDrawable->mXform.getParent();
|
||||
if (object_xform_parent)
|
||||
{
|
||||
// counter-translate child objects if we are moving the root as an individual
|
||||
object->resetChildrenPosition(old_position_local - new_position_local, true);
|
||||
// calculate local version of relative move
|
||||
LLQuaternion objWorldRotation = object_xform_parent->getWorldRotation();
|
||||
objWorldRotation.transQuat();
|
||||
|
||||
LLVector3 old_position_local = object->getPosition();
|
||||
LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation);
|
||||
|
||||
//RN: I forget, but we need to do this because of snapping which doesn't often result
|
||||
// in position changes even when the mouse moves
|
||||
object->setPosition(new_position_local);
|
||||
rebuild(object);
|
||||
gAgentAvatarp->clampAttachmentPositions();
|
||||
new_position_local = object->getPosition();
|
||||
|
||||
if (selectNode->mIndividualSelection)
|
||||
{
|
||||
// counter-translate child objects if we are moving the root as an individual
|
||||
object->resetChildrenPosition(old_position_local - new_position_local, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1780,11 +1780,18 @@ bool LLOutfitAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
|
|||
// <FS:Ansariel> Make thumbnail tooltip work properly
|
||||
//if (y >= getLocalRect().getHeight() - getHeaderHeight())
|
||||
static LLCachedControl<bool> showInventoryThumbnailTooltips(gSavedSettings, "FSShowInventoryThumbnailTooltips");
|
||||
if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight() && gInventory.getCategory(mFolderID)->getThumbnailUUID().notNull())
|
||||
if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight())
|
||||
{
|
||||
LLSD params;
|
||||
params["inv_type"] = LLInventoryType::IT_CATEGORY;
|
||||
LLViewerInventoryCategory* cat = gInventory.getCategory(mFolderID);
|
||||
// <FS:TJ> Make thumbnail tooltip work properly
|
||||
if (!cat || cat->getThumbnailUUID().isNull())
|
||||
{
|
||||
return LLAccordionCtrlTab::handleToolTip(x, y, mask);
|
||||
}
|
||||
// </FS:TJ>
|
||||
|
||||
if (cat)
|
||||
{
|
||||
params["thumbnail_id"] = cat->getThumbnailUUID();
|
||||
|
|
|
|||
|
|
@ -52,8 +52,10 @@
|
|||
#include "lltool.h"
|
||||
#include "lltoolcomp.h"
|
||||
#include "lltoolmgr.h"
|
||||
#include "lltooldraganddrop.h" // <FS:FIRE-36059> For custom script template
|
||||
#include "lltrans.h"
|
||||
#include "llviewerassettype.h"
|
||||
#include "llviewercontrol.h" // <FS:FIRE-36059> For custom script template
|
||||
#include "llviewerinventory.h"
|
||||
#include "llviewermenu.h" // <FS> Script reset in edit floater
|
||||
#include "llviewerobject.h"
|
||||
|
|
@ -280,6 +282,20 @@ void LLPanelContents::onClickNewScript(void *userdata)
|
|||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
// <FS:PP> FIRE-36059 Optional custom script template for New Script button
|
||||
if (gSavedPerAccountSettings.getBOOL("FSBuildPrefs_UseCustomScript"))
|
||||
{
|
||||
if (LLUUID custom_script_id(gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem")); custom_script_id.notNull())
|
||||
{
|
||||
if (auto custom_script = gInventory.getItem(custom_script_id); custom_script && custom_script->getType() == LLAssetType::AT_LSL_TEXT)
|
||||
{
|
||||
LLToolDragAndDrop::dropScript(object, custom_script, true, LLToolDragAndDrop::SOURCE_AGENT, gAgentID);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
// </FS:PP>
|
||||
|
||||
LLPermissions perm;
|
||||
perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, LLUUID::null);
|
||||
|
||||
|
|
|
|||
|
|
@ -1324,7 +1324,10 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type
|
|||
showWearablesListView();
|
||||
|
||||
//e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
|
||||
applyListViewFilter(static_cast<EListViewItemType>(LVIT_SHAPE + type));
|
||||
// <FS:Beq> More deprecated enum math
|
||||
// applyListViewFilter(static_cast<EListViewItemType>(LVIT_SHAPE + type));
|
||||
applyListViewFilter(static_cast<EListViewItemType>(static_cast<S32>(LVIT_SHAPE) + static_cast<S32>(type)));
|
||||
// </FS:Beq>
|
||||
mWearableItemsList->setMenuWearableType(type);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -305,6 +305,14 @@ bool LLPanelWearing::postBuild()
|
|||
// <FS:Ansariel> Show avatar complexity in appearance floater
|
||||
mAvatarComplexityLabel = getChild<LLTextBox>("avatar_complexity_label");
|
||||
|
||||
// <FS:PP> FIRE-36089: Connect bottom gear menu button to the gear menu
|
||||
LLMenuButton* gear_btn = findChild<LLMenuButton>("options_gear_btn");
|
||||
if (gear_btn)
|
||||
{
|
||||
gear_btn->setMenu(mGearMenu->getMenu());
|
||||
}
|
||||
// </FS:PP>
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -475,7 +475,7 @@ void LLPreviewTexture::saveTextureToFile(const std::vector<std::string>& filenam
|
|||
void LLPreviewTexture::saveMultipleToFile(const std::string& file_name)
|
||||
{
|
||||
std::string texture_location(gSavedSettings.getString("TextureSaveLocation"));
|
||||
std::string texture_name = file_name.empty() ? getItem()->getName() : file_name;
|
||||
std::string texture_name = LLDir::getScrubbedFileName(file_name.empty() ? getItem()->getName() : file_name);
|
||||
|
||||
std::string filepath;
|
||||
S32 i = 0;
|
||||
|
|
|
|||
|
|
@ -7488,7 +7488,7 @@ void LLAlphaObject::getBlendFunc(S32 face, LLRender::eBlendFactor& src, LLRender
|
|||
void LLStaticViewerObject::updateDrawable(bool force_damped)
|
||||
{
|
||||
// Force an immediate rebuild on any update
|
||||
if (mDrawable.notNull())
|
||||
if (mDrawable.notNull() && mDrawable->getVObj())
|
||||
{
|
||||
mDrawable->updateXform(true);
|
||||
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
|
||||
|
|
|
|||
|
|
@ -1124,7 +1124,6 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
|
|||
|
||||
imagep->postCreateTexture();
|
||||
imagep->mCreatePending = false;
|
||||
mCreateTextureList.pop();
|
||||
|
||||
if (imagep->hasGLTexture() && imagep->getDiscardLevel() < imagep->getDesiredDiscardLevel() &&
|
||||
(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL))
|
||||
|
|
@ -1136,6 +1135,8 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
|
|||
imagep->scaleDown();
|
||||
}
|
||||
|
||||
mCreateTextureList.pop();
|
||||
|
||||
if (create_timer.getElapsedTimeF32() > max_time)
|
||||
{
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -781,7 +781,7 @@ void LLGrassPartition::getGeometry(LLSpatialGroup* group)
|
|||
void LLVOGrass::updateDrawable(bool force_damped)
|
||||
{
|
||||
// Force an immediate rebuild on any update
|
||||
if (mDrawable.notNull())
|
||||
if (mDrawable.notNull() && mDrawable->getVObj())
|
||||
{
|
||||
mDrawable->updateXform(true);
|
||||
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ class LLVOAvatar;
|
|||
#include "llcallingcard.h" // for LLFriendObserver
|
||||
#include "llsecapi.h"
|
||||
#include "llcontrol.h"
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Need to include for audio device mutex shared with other audio/voice systems.
|
||||
#include "inlinemutexs.h"
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
|
||||
// devices
|
||||
|
||||
|
|
|
|||
|
|
@ -82,6 +82,9 @@ extern void handle_voice_morphing_subscribe();
|
|||
|
||||
const std::string VIVOX_VOICE_SERVER_TYPE = "vivox";
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
namespace {
|
||||
const F32 VOLUME_SCALE_VIVOX = 0.01f;
|
||||
|
||||
|
|
@ -2412,6 +2415,19 @@ void LLVivoxVoiceClient::sendCaptureAndRenderDevices()
|
|||
{
|
||||
if (mCaptureDeviceDirty || mRenderDeviceDirty)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
std::ostringstream stream;
|
||||
|
||||
buildSetCaptureDevice(stream);
|
||||
|
|
@ -2423,6 +2439,35 @@ void LLVivoxVoiceClient::sendCaptureAndRenderDevices()
|
|||
}
|
||||
|
||||
llcoro::suspendUntilTimeout(UPDATE_THROTTLE_SECONDS);
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// When trying to lock the same lock a second time
|
||||
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// When the mutex is invalid
|
||||
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Everything else
|
||||
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
LL_WARNS() << "Exception Vinvox: " << " " << e.what() << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -80,6 +80,9 @@
|
|||
|
||||
const std::string WEBRTC_VOICE_SERVER_TYPE = "webrtc";
|
||||
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
namespace {
|
||||
|
||||
const F32 MAX_AUDIO_DIST = 50.0f;
|
||||
|
|
@ -506,6 +509,12 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
|
|||
try
|
||||
{
|
||||
LLMuteList::getInstance()->addObserver(this);
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// Add a counter to check if the main thread locked up
|
||||
// to prevent this thread/corutine form filling up
|
||||
// the mMainQueue.
|
||||
static U32 crash_check = 0;
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
while (!sShuttingDown)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_VOICE("voiceConnectionCoroLoop")
|
||||
|
|
@ -591,6 +600,26 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
|
|||
// to send position updates.
|
||||
updatePosition();
|
||||
}
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
// If the device locked, count up by 1
|
||||
if (gWebRTCUpdateDevices)
|
||||
{
|
||||
crash_check++;
|
||||
}
|
||||
// Else if the device is not locked, then reset the counter back to 0
|
||||
else
|
||||
{
|
||||
crash_check = 0;
|
||||
}
|
||||
// If there are over 10 cycles of the devices being locked, there is a good
|
||||
// chance that the thread failed due to hardware/audio engine issue.
|
||||
if (crash_check > 10)
|
||||
{
|
||||
LL_WARNS() << "WebRTC detected locked worker thread, will shutdown to prevent total viewer lockup." << LL_ENDL;
|
||||
// Exit out of the thread and flag WebRTC to shutdown, hopefully clearing the lock and allowing the viewer to continue.
|
||||
sShuttingDown = true;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
LL::WorkQueue::postMaybe(mMainQueue,
|
||||
[=, this] {
|
||||
|
|
@ -731,6 +760,19 @@ void LLWebRTCVoiceClient::OnDevicesChanged(const llwebrtc::LLWebRTCVoiceDeviceLi
|
|||
void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDeviceList &render_devices,
|
||||
const llwebrtc::LLWebRTCVoiceDeviceList &capture_devices)
|
||||
{
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
|
||||
{
|
||||
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
|
||||
std::unique_lock lock(gAudioDeviceMutex, 1s);
|
||||
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
|
||||
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
|
||||
if (!lock.owns_lock())
|
||||
{
|
||||
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
if (sShuttingDown)
|
||||
{
|
||||
return;
|
||||
|
|
@ -774,6 +816,34 @@ void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDevi
|
|||
}
|
||||
|
||||
setDevicesListUpdated(true);
|
||||
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
|
||||
}
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
if (e.code() == std::errc::resource_deadlock_would_occur)
|
||||
{
|
||||
// When trying to lock the same lock a second time
|
||||
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else if (e.code() == std::errc::operation_not_permitted)
|
||||
{
|
||||
// When the mutex is invalid
|
||||
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Everything else
|
||||
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
LL_WARNS() << "Exception WebRTC: " << " " << e.what() << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
// </FS:minerjr> [FIRE-36022]
|
||||
}
|
||||
|
||||
void LLWebRTCVoiceClient::clearRenderDevices()
|
||||
|
|
|
|||
|
|
@ -3100,7 +3100,7 @@ void LLPipeline::markMoved(LLDrawable *drawablep, bool damped_motion)
|
|||
|
||||
void LLPipeline::markShift(LLDrawable *drawablep)
|
||||
{
|
||||
if (!drawablep || drawablep->isDead())
|
||||
if (!drawablep || drawablep->isDead() || !drawablep->getVObj())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -3134,7 +3134,7 @@ void LLPipeline::shiftObjects(const LLVector3 &offset)
|
|||
iter != mShiftList.end(); iter++)
|
||||
{
|
||||
LLDrawable *drawablep = *iter;
|
||||
if (drawablep->isDead())
|
||||
if (drawablep->isDead() || !drawablep->getVObj())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -852,7 +852,7 @@
|
|||
bevel_style="none"
|
||||
follows="all"
|
||||
label="Favorites"
|
||||
help_topic="recent_inventory_tab"
|
||||
help_topic="favorites_inventory_tab"
|
||||
layout="topleft"
|
||||
name="Favorites"
|
||||
show_item_link_overlays="true"
|
||||
|
|
|
|||
|
|
@ -156,6 +156,34 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Məzmun: [ITEM]
|
||||
</text>
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Məzmun: [SCRIPT]
|
||||
</text>
|
||||
<button label="Defolt Yaratma İcazələri" name="fs_default_creation_permissions" />
|
||||
<check_box label="Seçilmiş obyektin işıqlandırılması yandırın" tool_tip="Seçilmiş obyektin işıqlandırılması yandırın" name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="Seçilmiş ərazinin sərhədlərini işıqlandırın" name="RenderParcelSelection"/>
|
||||
<check_box label="Maksimum tikinti hündürlüyünə sərhəddini göstərin" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
<check_box label="Seçim məsafəsi həddi:" name="LimitSelectDistance" width="145" />
|
||||
<spinner name="MaxSelectDistance" tool_tip="Maksimum icazə verilən seçim məsafəsi (avatardan metrlə) [Defolt: 128.000]" />
|
||||
<check_box label="Məsafə limitini çəkin:" name="LimitDragDistance" width="145" />
|
||||
<spinner name="MaxDragDistance" tool_tip="Hərəkət alətlərinin bir əməliyyatında icazə verilən maksimum məsafə (başlanğıc nöqtəsindən metrlə) [Defolt: 48.000]" />
|
||||
<text name="RotationStepText1" width="135">
|
||||
Fırlanma məhdudiyyəti
|
||||
</text>
|
||||
<spinner name="RotationStep" tool_tip="[Defolt: 1.0]"/>
|
||||
<text name="RotationStepText2">
|
||||
dərəcə, əgər şəbəkəyə istinad yoxdursa
|
||||
</text>
|
||||
<check_box label="Ən azı neçə obyekt sayında ayırma təsdiq sorğusu" width="305" name="FSUnlinkConfirmEnabled"/>
|
||||
<text name="MinObjectsForUnlinkConfirmText2">
|
||||
obyekt
|
||||
</text>
|
||||
<check_box label=" "Satış üçün element təyin et" üçün köhnə davranışı təyin edin" tool_tip=" "Satış üçün element təyin et" üçün köhnə davranışı təyin edin" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" tool_tip="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" name="FSTextureDefaultSaveAsFormat" />
|
||||
<text name="text_box_pivotpoint">
|
||||
İstinad nöqtəsi
|
||||
</text>
|
||||
|
|
@ -164,7 +192,14 @@
|
|||
<spinner label="Yerl. Y" name="Y pos" />
|
||||
<spinner label="Yerl. Z" name="Z pos" />
|
||||
<check_box label="Faizlə" tool_tip="Varsayılan olaraq, faizlər hər bir ox üçün 50-yə təyin edilmişdir." name="FSPivotPercToggle" />
|
||||
<button label="Defolt Yaratma İcazələri" name="fs_default_creation_permissions" />
|
||||
</panel>
|
||||
<panel label="Tikinti 2" name="BuildTab2">
|
||||
<check_box label="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" tool_tip="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" name="FSEnableGrab" />
|
||||
<check_box label="Tikinti zamanı teksturlar üçün basdıqda miqyaslama (caps lock ilə birlikdə)." tool_tip="Aktivləşdirildikdə, tikinti rejimində teksturalar üçün basım ilə sürükləməyə və ya basdıqda miqyasına (caps lock ilə) icazə verir. Bu xüsusiyyət eksperimentaldır və ehtiyatla istifadə edilməlidir." name="FSExperimentalDragTexture" />
|
||||
<check_box label="Yükləyərkən öz avatarınızda animasiyaya önbaxış" tool_tip="Yükləyərkən öz avatarınızda animasiyaya önbaxış" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="Genişləndirilmiş Skript Məlumatını aktivləşdirin" name="FSScriptInfoExtended" tool_tip="Aktiv edilərsə, əsas skript məlumatı funksiyasını inşaatçılar üçün faydalı olan müxtəlif detallarla genişləndirir"/>
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font">
|
||||
Skript yazı tipi:
|
||||
</text>
|
||||
|
|
@ -179,11 +214,12 @@
|
|||
<combo_item name="Medium" label="Ortam"/>
|
||||
<combo_item name="Large" label="Yerkə"/>
|
||||
</combo_box>
|
||||
<check_box label="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" tool_tip="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="LSL Önprosessorunu aktivləşdir" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru işləyəcəkdir." name="preproc_checkbox" />
|
||||
<check_box label="Optimallaşdırma" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru skript tərəfindən istifadə edilən sahəni optimizə edəcəkdir." name="preprocoptimizer_checkbox" />
|
||||
<check_box label="switch() operatoru" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru switch() operatorunun skript axarını idarə edərkən istifadəsinə icazə verəcəkdir." name="preprocswitch_checkbox" />
|
||||
<check_box label="Tənbəl siyahılar" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru siyahılarla işləmək üçün sintaksis genişlətmələrə icazə verəcəkdir." name="preproclazy_checkbox" />
|
||||
<check_box label="Diskdən #include" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru #include operatorunu sizin yerli sürücünüzə göndərilən fayllarla istifadəyə imkan verəcəkdir." name="preprocinclude_checkbox" />
|
||||
<check_box label="Diskdən #include" left_delta="110" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru #include operatorunu sizin yerli sürücünüzə göndərilən fayllarla istifadəyə imkan verəcəkdir." name="preprocinclude_checkbox" />
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Önprosessor yolu:
|
||||
</text>
|
||||
|
|
@ -193,33 +229,6 @@
|
|||
</text>
|
||||
<button label="Baxış" label_selected="Baxış" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Tikinti 2" name="BuildTab2">
|
||||
<check_box label="Seçilmiş obyektin işıqlandırılması yandırın" tool_tip="Seçilmiş obyektin işıqlandırılması yandırın" name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="Seçilmiş ərazinin sərhədlərini işıqlandırın" name="RenderParcelSelection"/>
|
||||
<check_box label="Maksimum tikinti hündürlüyünə sərhəddini göstərin" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
<check_box label="Seçim məsafəsi həddi:" name="LimitSelectDistance" width="237" />
|
||||
<spinner name="MaxSelectDistance" tool_tip="Maksimum icazə verilən seçim məsafəsi (avatardan metrlə) [Defolt: 128.000]" />
|
||||
<check_box label="Məsafə limitini çəkin:" name="LimitDragDistance" width="237" />
|
||||
<spinner name="MaxDragDistance" tool_tip="Hərəkət alətlərinin bir əməliyyatında icazə verilən maksimum məsafə (başlanğıc nöqtəsindən metrlə) [Defolt: 48.000]" />
|
||||
<text name="RotationStepText1" width="175">
|
||||
Fırlanma məhdudiyyəti
|
||||
</text>
|
||||
<spinner name="RotationStep" tool_tip="[Defolt: 1.0]"/>
|
||||
<text name="RotationStepText2">
|
||||
dərəcə, əgər şəbəkəyə istinad yoxdursa
|
||||
</text>
|
||||
<check_box label="Ən azı neçə obyekt sayında ayırma təsdiq sorğusu" name="FSUnlinkConfirmEnabled"/>
|
||||
<text name="MinObjectsForUnlinkConfirmText2">
|
||||
obyekt
|
||||
</text>
|
||||
<check_box label=" "Satış üçün element təyin et" üçün köhnə davranışı təyin edin" tool_tip=" "Satış üçün element təyin et" üçün köhnə davranışı təyin edin" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" tool_tip="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" tool_tip="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" name="FSTextureDefaultSaveAsFormat" />
|
||||
<check_box label="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" tool_tip="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" name="FSEnableGrab" />
|
||||
<check_box label="Tikinti zamanı teksturlar üçün basdıqda miqyaslama (caps lock ilə birlikdə)." tool_tip="Aktivləşdirildikdə, tikinti rejimində teksturalar üçün basım ilə sürükləməyə və ya basdıqda miqyasına (caps lock ilə) icazə verir. Bu xüsusiyyət eksperimentaldır və ehtiyatla istifadə edilməlidir." name="FSExperimentalDragTexture" />
|
||||
<check_box label="Yükləyərkən öz avatarınızda animasiyaya önbaxış" tool_tip="Yükləyərkən öz avatarınızda animasiyaya önbaxış" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="Genişləndirilmiş Skript Məlumatını aktivləşdirin" name="FSScriptInfoExtended" tool_tip="Aktiv edilərsə, əsas skript məlumatı funksiyasını inşaatçılar üçün faydalı olan müxtəlif detallarla genişləndirir"/>
|
||||
</panel>
|
||||
<!--Uploads-->
|
||||
<panel label="Yükləmələr" name="UploadsTab">
|
||||
<text name="title">
|
||||
|
|
|
|||
|
|
@ -6697,6 +6697,9 @@ Yerləşməniz: [AVATAR_POS]
|
|||
<string name="Worn Items">
|
||||
Daşınan əşyalar
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Sevimlilərim
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
[NAME] adlı qrup üzvü
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
Drücken von Eingabetaste bei einem Avatar-Anhang
|
||||
</text>
|
||||
<combo_box name="attach_combo">
|
||||
<combo_box.item label="Fügt Anhang hinzu (empfohlen)" name="0"/>
|
||||
<combo_box.item label="Anhängen (entfernt bisherigen Anhang am entsprechenden Punkt)" name="1"/>
|
||||
<combo_box.item label="Fügt Anhang hinzu (empfohlen)" name="1"/>
|
||||
<combo_box.item label="Anhängen (entfernt bisherigen Anhang am entsprechenden Punkt)" name="0"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -172,49 +172,14 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Aktuell gesetzt: [ITEM]
|
||||
</text>
|
||||
<text name="text_box_pivotpoint">
|
||||
Drehpunkt
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Benutzerdef. Skript für Button „Neues Skript“"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Skript aus Inventar hier hinziehen und ablegen.">
|
||||
Skript hier ablegen.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Aktuell gesetzt: [SCRIPT]
|
||||
</text>
|
||||
<view_border name="PivotBorder" width="145"/>
|
||||
<check_box label="Pfeilachsen an Wurzel" tool_tip="Standardverhalten ist, die Achse am Massenzentrum eines Linksets anzuzeigen. Aktivieren, um die Achse am Wurzel-Prim anzuzeigen." name="FSBuildPrefsActualRoot_toggle"/>
|
||||
<spinner label="X-Position" name="X pos" label_width="60" width="135"/>
|
||||
<spinner label="Y-Position" name="Y pos" label_width="60" width="135"/>
|
||||
<spinner label="Z-Position" name="Z pos" label_width="60" width="135"/>
|
||||
<check_box label="Werte sind in Prozent" tool_tip="Standardwerte sind Prozentangaben mit einem Wert von 50 für jede Achse" name="FSPivotPercToggle"/>
|
||||
<button label="Standard-Erstellungsberechtigungen" name="fs_default_creation_permissions"/>
|
||||
<text name="text_box_scripting_font" width="130">
|
||||
Schrift für Skript-Editor:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Name der Schrift, die für den Skript-Editor verwendet wird">
|
||||
<combo_item name="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" label="Cascadia Code"/>
|
||||
</combo_box>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Größe der Schrift, die für den Skript-Editor verwendet wird">
|
||||
<combo_item name="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" label="Cascadia Code"/>
|
||||
<combo_item name="Small" label="Klein"/>
|
||||
<combo_item name="Medium" label="Mittel"/>
|
||||
<combo_item name="Large" label="Groß"/>
|
||||
</combo_box>
|
||||
<check_box label="LSL-Präprozessor aktivieren" tool_tip="Aktiviert die Präprozessorunterstützung für LSL-Skripte" name="preproc_checkbox"/>
|
||||
<check_box label="Skript-Optimierer" tool_tip="Optimiert den von Skripten benötigten Platz." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="switch()-Befehl" tool_tip="Stellt den switch()-Befehl zur Ablaufsteuerung bereit." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Lazy Lists" tool_tip="Aktiviert eine erweiterte Syntax für Listen-Operationen." name="preproclazy_checkbox"/>
|
||||
<check_box label="#includes von der Festplatte" tool_tip="Aktiviert #include-Befehle zum Einbinden von Dateien auf der lokalen Festplatte." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Include-Verzeichnis für Präprozessor:
|
||||
</text>
|
||||
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">
|
||||
Externer Editor:
|
||||
</text>
|
||||
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetExternalEditor"/>
|
||||
</panel>
|
||||
|
||||
<!--Build 2-->
|
||||
<panel label="Bauen 2" name="BuildTab2">
|
||||
<check_box label="Ausgewählte Primitive hervorheben" tool_tip="Deaktivieren, um die gelben und blauen Grundrisse nicht anzuzeigen. Verbessert die Performanz, wenn eine Vielzahl an Primitiven ausgewählt wird." name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="Grenze der aktuell selektierten Parzelle hervorheben" name="RenderParcelSelection"/>
|
||||
<check_box label="Hervorherbung bis zur maximalen Bauhöhe anzeigen" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
|
|
@ -233,11 +198,23 @@
|
|||
<text name="MinObjectsForUnlinkConfirmText2">
|
||||
Einzelobjekten bestätigen
|
||||
</text>
|
||||
<check_box label="Altes Verhalten für „Zum Verkauf:“ akt." tool_tip="Falls aktiviert wird die Änderung direkt gespeichert und es ist keine Bestätigung notwendig." name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="Texturen standardmäßig im PNG-Format anstelle von TGA speichern" tool_tip="Falls aktiviert, werden Texturen in der Vorschau standardmäßig im PNG-Format gespeichert" name="FSTextureDefaultSaveAsFormat"/>
|
||||
<text name="text_box_pivotpoint" left_delta="362">
|
||||
Drehpunkt
|
||||
</text>
|
||||
<view_border name="PivotBorder" width="150"/>
|
||||
<check_box label="Pfeilachsen an Wurzel" tool_tip="Standardverhalten ist, die Achse am Massenzentrum eines Linksets anzuzeigen. Aktivieren, um die Achse am Wurzel-Prim anzuzeigen." name="FSBuildPrefsActualRoot_toggle"/>
|
||||
<spinner label="X-Position" name="X pos" label_width="60" width="135"/>
|
||||
<spinner label="Y-Position" name="Y pos" label_width="60" width="135"/>
|
||||
<spinner label="Z-Position" name="Z pos" label_width="60" width="135"/>
|
||||
<check_box label="Werte sind in Prozent" tool_tip="Standardwerte sind Prozentangaben mit einem Wert von 50 für jede Achse" name="FSPivotPercToggle"/>
|
||||
</panel>
|
||||
|
||||
<!--Build 2-->
|
||||
<panel label="Bauen 2" name="BuildTab2">
|
||||
<check_box label="Strg+Maus zum Greifen und Manipulieren von Objekten verwenden" tool_tip="Falls aktiviert, können Objekte durch Bewegen der Maus bei gleichzeitig gedrückter Strg-Taste gegriffen und bewegt werden." name="FSEnableGrab"/>
|
||||
<check_box label="Aktiviere Klicken-Ziehen od. Klicken-Skalieren (mit Caps Lock) einer Texturfläche beim Bauen" tool_tip="Falls aktiviert, wird Klicken-Ziehen oder Klicken-Skalieren (mit Caps Lock) einer Texturfläche im Baumodus aktiviert. Dieses ist eine experimentelle Funktion und sollte mit Vorsicht benutzt werden." name="FSExperimentalDragTexture"/>
|
||||
<check_box label="Altes Verhalten für „Zum Verkauf:“ akt." tool_tip="Falls aktiviert wird die Änderung direkt gespeichert und es ist keine Bestätigung notwendig." name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="Vom Inventar aus bearbeitete Skripte als Mono speichern" tool_tip="Speichert Skripte, die direkt vom Inventar aus bearbeitet werden, als Mono anstatt LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="Texturen standardmäßig im PNG-Format anstelle von TGA speichern" tool_tip="Falls aktiviert, werden Texturen in der Vorschau standardmäßig im PNG-Format gespeichert" name="FSTextureDefaultSaveAsFormat"/>
|
||||
<check_box label="Vorschau von Animation beim Upload am eigenen Avatar" tool_tip="Falls aktiviert, werden Animationen in der Vorschau am eigenen Avatar abgespielt" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="Immer erweiterte Informationen zu Animationen anzeigen" tool_tip="Erweiterte Informationen zu Animation im Eigentschaftsfenster anzeigen" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="Erweiterte Skript-Informationen aktivieren" tool_tip="Falls aktiviert, werden die Skript-Informationen um weitergehende Details ergänzt." name="FSScriptInfoExtended"/>
|
||||
|
|
@ -245,6 +222,39 @@
|
|||
<check_box label="Neues [APP_NAME] Textur-Panel im Werkzeug-Fenster verwenden (Erforder Neustart)" tool_tip="Falls aktiviert, werden die Werkzeuge zum Bearbeiten von Texturen den von [APP_NAME] verbesserten Workflow benutzen und gleichzeitiges Bearbeiten von Blinn-Phong- und PBR-Texturen erlauben." name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font" width="130">
|
||||
Schrift für Skript-Editor:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Name der Schrift, die für den Skript-Editor verwendet wird">
|
||||
<combo_item name="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" label="Cascadia Code"/>
|
||||
</combo_box>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Größe der Schrift, die für den Skript-Editor verwendet wird">
|
||||
<combo_item name="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" label="Cascadia Code"/>
|
||||
<combo_item name="Small" label="Klein"/>
|
||||
<combo_item name="Medium" label="Mittel"/>
|
||||
<combo_item name="Large" label="Groß"/>
|
||||
</combo_box>
|
||||
<check_box label="Vom Inventar aus bearbeitete Skripte als Mono speichern" tool_tip="Speichert Skripte, die direkt vom Inventar aus bearbeitet werden, als Mono anstatt LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="LSL-Präprozessor aktivieren" tool_tip="Aktiviert die Präprozessorunterstützung für LSL-Skripte" name="preproc_checkbox"/>
|
||||
<check_box label="Skript-Optimierer" tool_tip="Optimiert den von Skripten benötigten Platz." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="switch()-Befehl" tool_tip="Stellt den switch()-Befehl zur Ablaufsteuerung bereit." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Lazy Lists" left_delta="110" tool_tip="Aktiviert eine erweiterte Syntax für Listen-Operationen." name="preproclazy_checkbox"/>
|
||||
<check_box label="#includes von der Festplatte" tool_tip="Aktiviert #include-Befehle zum Einbinden von Dateien auf der lokalen Festplatte." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Include-Verzeichnis für Präprozessor:
|
||||
</text>
|
||||
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">
|
||||
Externer Editor:
|
||||
</text>
|
||||
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetExternalEditor"/>
|
||||
</panel>
|
||||
|
||||
<!--Uploads-->
|
||||
<panel label="Uploads" name="UploadsTab">
|
||||
<text name="title">
|
||||
|
|
|
|||
|
|
@ -7203,6 +7203,9 @@ Ihre aktuelle Position: [AVATAR_POS]
|
|||
<string name="Worn Items">
|
||||
Angezogene Objekte
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Favoriten
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
Ein Gruppenmitglied namens [NAME]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -278,11 +278,11 @@
|
|||
name="attachment_return_txt"
|
||||
font="SansSerifMedium"
|
||||
text_color="White"
|
||||
width="350">
|
||||
Pressing enter on an avatar attachment
|
||||
width="420">
|
||||
Pressing enter or double clicking on an avatar attachment
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="InventoryAddAttachmentBehavior"
|
||||
control_name="FSDoubleClickAddInventoryObjects"
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="8"
|
||||
|
|
@ -292,11 +292,11 @@
|
|||
width="350">
|
||||
<combo_box.item
|
||||
label="Adds attachment (recommended)"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Wear (removes attachment at that point)"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="Wear (removes attachment at that point)"
|
||||
name="0"
|
||||
value="0"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@
|
|||
bevel_style="none"
|
||||
follows="all"
|
||||
label="Favorites"
|
||||
help_topic="recent_inventory_tab"
|
||||
help_topic="favorites_inventory_tab"
|
||||
layout="topleft"
|
||||
name="Favorites"
|
||||
show_item_link_overlays="true"
|
||||
|
|
|
|||
|
|
@ -1151,7 +1151,7 @@
|
|||
mouse_opaque="true"
|
||||
control_name="FSBuildPrefs_EmbedItem"
|
||||
radio_style="false"
|
||||
width="270"/>
|
||||
width="255"/>
|
||||
<view_border
|
||||
bevel_style="in"
|
||||
top_delta="20"
|
||||
|
|
@ -1160,7 +1160,7 @@
|
|||
left_delta="0"
|
||||
mouse_opaque="false"
|
||||
name="embed_item_drop_target_rect"
|
||||
width="250"/>
|
||||
width="255"/>
|
||||
<fs_embedded_item_drop_target
|
||||
bg_visible="false"
|
||||
border_visible="false"
|
||||
|
|
@ -1175,7 +1175,7 @@
|
|||
name="embed_item"
|
||||
tool_tip="Drop an inventory item here."
|
||||
v_pad="2"
|
||||
width="250">
|
||||
width="255">
|
||||
Drop an inventory item here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<view_border
|
||||
|
|
@ -1186,7 +1186,7 @@
|
|||
left_delta="0"
|
||||
mouse_opaque="false"
|
||||
name="build_item_add_disp_rect"
|
||||
width="250"/>
|
||||
width="255"/>
|
||||
<text
|
||||
bg_visible="false"
|
||||
border_visible="false"
|
||||
|
|
@ -1201,12 +1201,245 @@
|
|||
name="build_item_add_disp_rect_txt"
|
||||
tool_tip=""
|
||||
v_pad="2"
|
||||
width="250">
|
||||
width="255">
|
||||
Currently set to: [ITEM]
|
||||
</text>
|
||||
<check_box
|
||||
name="FSBuildPrefs_UseCustomScript"
|
||||
top="120"
|
||||
left_pad="5"
|
||||
enabled="false"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
height="16"
|
||||
initial_value="false"
|
||||
label="Use custom script for New Script button"
|
||||
mouse_opaque="true"
|
||||
control_name="FSBuildPrefs_UseCustomScript"
|
||||
radio_style="false"
|
||||
width="250"/>
|
||||
<view_border
|
||||
bevel_style="in"
|
||||
top_delta="20"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left_delta="0"
|
||||
mouse_opaque="false"
|
||||
name="custom_script_drop_target_rect"
|
||||
width="250"/>
|
||||
<fs_embedded_item_drop_target
|
||||
bg_visible="false"
|
||||
border_visible="false"
|
||||
top_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
h_pad="0"
|
||||
halign="center"
|
||||
height="16"
|
||||
left_delta="0"
|
||||
mouse_opaque="true"
|
||||
name="custom_script"
|
||||
tool_tip="Drop a script from your inventory here."
|
||||
v_pad="2"
|
||||
width="250">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<view_border
|
||||
bevel_style="in"
|
||||
top_delta="18"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left_delta="0"
|
||||
mouse_opaque="false"
|
||||
name="custom_script_disp_rect"
|
||||
width="250"/>
|
||||
<text
|
||||
top_pad="-60"
|
||||
left_pad="125"
|
||||
bg_visible="false"
|
||||
border_visible="false"
|
||||
top_delta="0"
|
||||
follows="left|top"
|
||||
font="SansSerifSmall"
|
||||
h_pad="0"
|
||||
halign="center"
|
||||
height="16"
|
||||
left_delta="0"
|
||||
mouse_opaque="true"
|
||||
name="custom_script_disp_rect_txt"
|
||||
tool_tip=""
|
||||
v_pad="2"
|
||||
width="250">
|
||||
Currently set to: [SCRIPT]
|
||||
</text>
|
||||
|
||||
<button
|
||||
follows="left|top"
|
||||
height="25"
|
||||
label="Default Creation Permissions"
|
||||
layout="topleft"
|
||||
name="fs_default_creation_permissions"
|
||||
left="8"
|
||||
top="185"
|
||||
width="250">
|
||||
<button.commit_callback
|
||||
function="Pref.PermsDefault" />
|
||||
</button>
|
||||
|
||||
<check_box
|
||||
top_pad="10"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="8"
|
||||
label="Enable highlighting of selected prims"
|
||||
tool_tip="When unchecked, the yellow/blue outline effects are not rendered, improving performance when large numbers of prims are selected."
|
||||
name="FSBuildPrefsRenderHighlight_toggle"
|
||||
control_name="RenderHighlightSelections"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Highlight boundary of currently selected parcel"
|
||||
name="RenderParcelSelection"
|
||||
control_name="RenderParcelSelection"
|
||||
width="190"/>
|
||||
<check_box
|
||||
enabled_control="RenderParcelSelection"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="13"
|
||||
label="Show boundary up to maximum build height"
|
||||
name="FSRenderParcelSelectionToMaxBuildHeight"
|
||||
control_name="FSRenderParcelSelectionToMaxBuildHeight"
|
||||
width="190"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="8"
|
||||
label="Limit select distance (meters):"
|
||||
name="LimitSelectDistance"
|
||||
control_name="LimitSelectDistance"
|
||||
width="190"/>
|
||||
<spinner
|
||||
enabled_control="LimitSelectDistance"
|
||||
control_name="MaxSelectDistance"
|
||||
decimal_digits="3"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="1024"
|
||||
min_val="0.001"
|
||||
name="MaxSelectDistance"
|
||||
width="75"
|
||||
tool_tip="Maximum allowed selection distance (meters from avatar) [Default: 128.000]"/>
|
||||
<check_box
|
||||
left="8"
|
||||
top_pad="13"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Limit drag distance (meters):"
|
||||
name="LimitDragDistance"
|
||||
control_name="LimitDragDistance"
|
||||
width="190"/>
|
||||
<spinner
|
||||
enabled_control="LimitDragDistance"
|
||||
control_name="MaxDragDistance"
|
||||
decimal_digits="3"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="1024"
|
||||
min_val="0.001"
|
||||
name="MaxDragDistance"
|
||||
width="75"
|
||||
tool_tip="Maximum allowed distance in a single operation of move tool (meters from start point) [Default: 48.000]"/>
|
||||
<text
|
||||
top_pad="14"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="10"
|
||||
name="RotationStepText1"
|
||||
width="190">
|
||||
Constrain rotations to multiples of
|
||||
</text>
|
||||
<spinner
|
||||
control_name="RotationStep"
|
||||
decimal_digits="2"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="359.99"
|
||||
min_val="0.01"
|
||||
name="RotationStep"
|
||||
width="65"
|
||||
tool_tip="All rotations via rotation tool are constrained to multiples of this unit [Default: 1.0]"/>
|
||||
<text
|
||||
left_pad="5"
|
||||
top_pad="-11"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
name="RotationStepText2"
|
||||
width="270">
|
||||
degrees, when not using 'snap to grid'
|
||||
</text>
|
||||
<check_box
|
||||
left="8"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Show unlink confirmation dialog if linkset has minimum"
|
||||
name="FSUnlinkConfirmEnabled"
|
||||
control_name="FSUnlinkConfirmEnabled"
|
||||
width="325"/>
|
||||
<spinner
|
||||
enabled_control="FSUnlinkConfirmEnabled"
|
||||
control_name="MinObjectsForUnlinkConfirm"
|
||||
decimal_digits="0"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="1"
|
||||
max_val="256"
|
||||
min_val="0"
|
||||
name="MinObjectsForUnlinkConfirm"
|
||||
width="65"/>
|
||||
<text
|
||||
left_pad="5"
|
||||
top_pad="-11"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
name="MinObjectsForUnlinkConfirmText2"
|
||||
width="270">
|
||||
objects
|
||||
</text>
|
||||
<check_box
|
||||
left="8"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Use old "Set Object For Sale" behavior"
|
||||
tool_tip="When checked, object for sale info is saved on change instead of requiring a confirm."
|
||||
name="FSCommitForSaleOnChange_toggle"
|
||||
control_name="FSCommitForSaleOnChange"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Save textures from inventory to disk as PNG instead of TGA by default"
|
||||
tool_tip="Used in the texture preview floater and context menu in inventory."
|
||||
name="FSTextureDefaultSaveAsFormat"
|
||||
control_name="FSTextureDefaultSaveAsFormat"/>
|
||||
|
||||
<text
|
||||
top="185"
|
||||
left_delta="377"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
name="text_box_pivotpoint"
|
||||
|
|
@ -1281,178 +1514,6 @@
|
|||
width="100"
|
||||
control_name="FSBuildPrefs_PivotIsPercent"/>
|
||||
|
||||
<button
|
||||
follows="left|top"
|
||||
height="25"
|
||||
label="Default Creation Permissions"
|
||||
layout="topleft"
|
||||
name="fs_default_creation_permissions"
|
||||
left="8"
|
||||
top="185"
|
||||
width="250">
|
||||
<button.commit_callback
|
||||
function="Pref.PermsDefault" />
|
||||
</button>
|
||||
|
||||
<text
|
||||
top_pad="10"
|
||||
left="8"
|
||||
follows="left|top"
|
||||
name="text_box_scripting_font"
|
||||
width="100">
|
||||
Script Editor Font:
|
||||
</text>
|
||||
<combo_box
|
||||
allow_text_entry="false"
|
||||
top_delta="-5"
|
||||
left_pad="5"
|
||||
follows="left|top"
|
||||
max_chars="20"
|
||||
mouse_opaque="true"
|
||||
name="FSScriptingFontName"
|
||||
width="100"
|
||||
control_name="FSScriptingFontName"
|
||||
tool_tip="Name of the font used in the LSL script editor">
|
||||
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
|
||||
</combo_box>
|
||||
<combo_box
|
||||
allow_text_entry="false"
|
||||
top_delta="0"
|
||||
left_pad="5"
|
||||
follows="left|top"
|
||||
max_chars="20"
|
||||
mouse_opaque="true"
|
||||
name="FSScriptingFontSize"
|
||||
width="100"
|
||||
control_name="FSScriptingFontSize"
|
||||
tool_tip="Size of the font used in the LSL script editor">
|
||||
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
|
||||
<combo_item name="Small" value="Small" label="Small"/>
|
||||
<combo_item name="Medium" value="Medium" label="Medium"/>
|
||||
<combo_item name="Large" value="Large" label="Large"/>
|
||||
</combo_box>
|
||||
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_pad="10"
|
||||
left="5"
|
||||
label="Enable LSL preprocessor"
|
||||
tool_tip="When checked, the LSL preprocessor is enabled."
|
||||
name="preproc_checkbox"
|
||||
control_name="_NACL_LSLPreprocessor" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="15"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="Script optimizer"
|
||||
tool_tip="When checked, the LSL preprocessor will optimize space used by scripts."
|
||||
name="preprocoptimizer_checkbox"
|
||||
control_name="_NACL_PreProcLSLOptimizer" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_delta="0"
|
||||
left_delta="120"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="switch() statement"
|
||||
tool_tip="When checked, the LSL preprocessor will allow the use of the switch() statement for script flow control."
|
||||
name="preprocswitch_checkbox"
|
||||
control_name="_NACL_PreProcLSLSwitch" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_delta="0"
|
||||
left_delta="130"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="Lazy lists"
|
||||
tool_tip="When checked, the LSL preprocessor will allow the use of syntax extensions for list handling."
|
||||
name="preproclazy_checkbox"
|
||||
control_name="_NACL_PreProcLSLLazyLists" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
top_delta="0"
|
||||
left_delta="80"
|
||||
height="16"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="#includes from local disk"
|
||||
tool_tip="When checked, the LSL preprocessor will allow #include statements to reference files on your local disk."
|
||||
name="preprocinclude_checkbox"
|
||||
control_name="_NACL_PreProcEnableHDDInclude" />
|
||||
<text
|
||||
follows="left|top"
|
||||
height="16"
|
||||
type="string"
|
||||
length="1"
|
||||
layout="topleft"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
name="lslpreprocinclude_textbox"
|
||||
left="10"
|
||||
width="256">
|
||||
Preprocessor include path:
|
||||
</text>
|
||||
<line_editor
|
||||
control_name="_NACL_PreProcHDDIncludeLocation"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="23"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
max_length_chars="4096"
|
||||
name="preprocinclude_location"
|
||||
width="310" />
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
label="Browse"
|
||||
label_selected="Browse"
|
||||
left_pad="5"
|
||||
name="SetPreprocInclude"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="NACL.SetPreprocInclude" />
|
||||
</button>
|
||||
<text
|
||||
follows="left|top"
|
||||
height="16"
|
||||
type="string"
|
||||
length="1"
|
||||
layout="topleft"
|
||||
name="externaleditor_textbox"
|
||||
left="10"
|
||||
width="256">
|
||||
External Editor:
|
||||
</text>
|
||||
<line_editor
|
||||
control_name="ExternalEditor"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="23"
|
||||
max_length_chars="4096"
|
||||
name="externaleditor_location"
|
||||
width="310" />
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
label="Browse"
|
||||
label_selected="Browse"
|
||||
left_pad="5"
|
||||
name="SetExternalEditor"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="Pref.SetExternalEditor" />
|
||||
</button>
|
||||
</panel>
|
||||
|
||||
<!--Build 2-->
|
||||
|
|
@ -1465,169 +1526,10 @@
|
|||
label="Build 2"
|
||||
name="BuildTab2">
|
||||
<check_box
|
||||
left="3"
|
||||
top="10"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="3"
|
||||
label="Enable highlighting of selected prims"
|
||||
tool_tip="When unchecked, the yellow/blue outline effects are not rendered, improving performance when large numbers of prims are selected."
|
||||
name="FSBuildPrefsRenderHighlight_toggle"
|
||||
control_name="RenderHighlightSelections"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Highlight boundary of currently selected parcel"
|
||||
name="RenderParcelSelection"
|
||||
control_name="RenderParcelSelection"
|
||||
width="190"/>
|
||||
<check_box
|
||||
enabled_control="RenderParcelSelection"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="13"
|
||||
label="Show boundary up to maximum build height"
|
||||
name="FSRenderParcelSelectionToMaxBuildHeight"
|
||||
control_name="FSRenderParcelSelectionToMaxBuildHeight"
|
||||
width="190"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="3"
|
||||
label="Limit select distance (meters):"
|
||||
name="LimitSelectDistance"
|
||||
control_name="LimitSelectDistance"
|
||||
width="190"/>
|
||||
<spinner
|
||||
enabled_control="LimitSelectDistance"
|
||||
control_name="MaxSelectDistance"
|
||||
decimal_digits="3"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="1024"
|
||||
min_val="0.001"
|
||||
name="MaxSelectDistance"
|
||||
width="75"
|
||||
tool_tip="Maximum allowed selection distance (meters from avatar) [Default: 128.000]"/>
|
||||
<check_box
|
||||
left="3"
|
||||
top_pad="13"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Limit drag distance (meters):"
|
||||
name="LimitDragDistance"
|
||||
control_name="LimitDragDistance"
|
||||
width="190"/>
|
||||
<spinner
|
||||
enabled_control="LimitDragDistance"
|
||||
control_name="MaxDragDistance"
|
||||
decimal_digits="3"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="1024"
|
||||
min_val="0.001"
|
||||
name="MaxDragDistance"
|
||||
width="75"
|
||||
tool_tip="Maximum allowed distance in a single operation of move tool (meters from start point) [Default: 48.000]"/>
|
||||
<text
|
||||
left="3"
|
||||
top_pad="13"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
name="RotationStepText1"
|
||||
width="190">
|
||||
Constrain rotations to multiples of
|
||||
</text>
|
||||
<spinner
|
||||
control_name="RotationStep"
|
||||
decimal_digits="2"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
max_val="359.99"
|
||||
min_val="0.01"
|
||||
name="RotationStep"
|
||||
width="65"
|
||||
tool_tip="All rotations via rotation tool are constrained to multiples of this unit [Default: 1.0]"/>
|
||||
<text
|
||||
left_pad="5"
|
||||
top_pad="-11"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
name="RotationStepText2"
|
||||
width="270">
|
||||
degrees, when not using 'snap to grid'
|
||||
</text>
|
||||
<check_box
|
||||
left="3"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Show unlink confirmation dialog if linkset has minimum"
|
||||
name="FSUnlinkConfirmEnabled"
|
||||
control_name="FSUnlinkConfirmEnabled"
|
||||
width="325"/>
|
||||
<spinner
|
||||
enabled_control="FSUnlinkConfirmEnabled"
|
||||
control_name="MinObjectsForUnlinkConfirm"
|
||||
decimal_digits="0"
|
||||
top_delta="-5"
|
||||
left_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="1"
|
||||
max_val="256"
|
||||
min_val="0"
|
||||
name="MinObjectsForUnlinkConfirm"
|
||||
width="65"/>
|
||||
<text
|
||||
left_pad="5"
|
||||
top_pad="-11"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
name="MinObjectsForUnlinkConfirmText2"
|
||||
width="270">
|
||||
objects
|
||||
</text>
|
||||
<check_box
|
||||
left="3"
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Use old "Set Object For Sale" behavior"
|
||||
tool_tip="When checked, object for sale info is saved on change instead of requiring a confirm."
|
||||
name="FSCommitForSaleOnChange_toggle"
|
||||
control_name="FSCommitForSaleOnChange"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Save scripts edited from inventory as Mono"
|
||||
tool_tip="When checked, editing a script directly from inventory and then saving it saves as Mono instead of LSL."
|
||||
name="FSSaveInventoryScriptsAsMono_toggle"
|
||||
control_name="FSSaveInventoryScriptsAsMono"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Save textures from inventory to disk as PNG instead of TGA by default"
|
||||
tool_tip="Used in the texture preview floater and context menu in inventory."
|
||||
name="FSTextureDefaultSaveAsFormat"
|
||||
control_name="FSTextureDefaultSaveAsFormat"/>
|
||||
<check_box
|
||||
top_pad="8"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Use Ctrl+mouse to grab and manipulate objects"
|
||||
tool_tip="When checked, you will be able to grab and move objects with your mouse and CTRL key."
|
||||
name="FSEnableGrab"
|
||||
|
|
@ -1684,6 +1586,198 @@
|
|||
control_name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
|
||||
<!--Script Editor-->
|
||||
<panel
|
||||
top_pad="5"
|
||||
bottom="-1"
|
||||
left="1"
|
||||
right="-1"
|
||||
follows="all"
|
||||
label="Script Editor"
|
||||
name="BuildTabScriptEditor">
|
||||
<text
|
||||
top="15"
|
||||
left="10"
|
||||
height="16"
|
||||
follows="left|top"
|
||||
name="text_box_scripting_font"
|
||||
width="100">
|
||||
Script Editor Font:
|
||||
</text>
|
||||
<combo_box
|
||||
allow_text_entry="false"
|
||||
top_delta="-5"
|
||||
left_pad="5"
|
||||
follows="left|top"
|
||||
max_chars="20"
|
||||
mouse_opaque="true"
|
||||
name="FSScriptingFontName"
|
||||
width="100"
|
||||
control_name="FSScriptingFontName"
|
||||
tool_tip="Name of the font used in the LSL script editor">
|
||||
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
|
||||
</combo_box>
|
||||
<combo_box
|
||||
allow_text_entry="false"
|
||||
top_delta="0"
|
||||
left_pad="5"
|
||||
follows="left|top"
|
||||
max_chars="20"
|
||||
mouse_opaque="true"
|
||||
name="FSScriptingFontSize"
|
||||
width="100"
|
||||
control_name="FSScriptingFontSize"
|
||||
tool_tip="Size of the font used in the LSL script editor">
|
||||
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
|
||||
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
|
||||
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
|
||||
<combo_item name="Small" value="Small" label="Small"/>
|
||||
<combo_item name="Medium" value="Medium" label="Medium"/>
|
||||
<combo_item name="Large" value="Large" label="Large"/>
|
||||
</combo_box>
|
||||
|
||||
<check_box
|
||||
left="10"
|
||||
top_pad="10"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Save scripts edited from inventory as Mono"
|
||||
tool_tip="When checked, editing a script directly from inventory and then saving it saves as Mono instead of LSL."
|
||||
name="FSSaveInventoryScriptsAsMono_toggle"
|
||||
control_name="FSSaveInventoryScriptsAsMono"/>
|
||||
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
border_thickness="1"
|
||||
top_pad="15"
|
||||
follows="top|left"
|
||||
height="155"
|
||||
left="10"
|
||||
name="PreprocBox"
|
||||
width="515" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_delta="7"
|
||||
left="15"
|
||||
label="Enable LSL preprocessor"
|
||||
tool_tip="When checked, the LSL preprocessor is enabled."
|
||||
name="preproc_checkbox"
|
||||
control_name="_NACL_LSLPreprocessor" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
left="20"
|
||||
top_pad="5"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="Script optimizer"
|
||||
tool_tip="When checked, the LSL preprocessor will optimize space used by scripts."
|
||||
name="preprocoptimizer_checkbox"
|
||||
control_name="_NACL_PreProcLSLOptimizer" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_delta="0"
|
||||
left_delta="120"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="switch() statement"
|
||||
tool_tip="When checked, the LSL preprocessor will allow the use of the switch() statement for script flow control."
|
||||
name="preprocswitch_checkbox"
|
||||
control_name="_NACL_PreProcLSLSwitch" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_delta="0"
|
||||
left_delta="130"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="Lazy lists"
|
||||
tool_tip="When checked, the LSL preprocessor will allow the use of syntax extensions for list handling."
|
||||
name="preproclazy_checkbox"
|
||||
control_name="_NACL_PreProcLSLLazyLists" />
|
||||
<check_box
|
||||
follows="left|top"
|
||||
top_delta="0"
|
||||
left_delta="80"
|
||||
height="16"
|
||||
enabled_control="_NACL_LSLPreprocessor"
|
||||
label="#includes from local disk"
|
||||
tool_tip="When checked, the LSL preprocessor will allow #include statements to reference files on your local disk."
|
||||
name="preprocinclude_checkbox"
|
||||
control_name="_NACL_PreProcEnableHDDInclude" />
|
||||
<text
|
||||
follows="left|top"
|
||||
height="16"
|
||||
type="string"
|
||||
length="1"
|
||||
layout="topleft"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
name="lslpreprocinclude_textbox"
|
||||
left="17"
|
||||
top_pad="10"
|
||||
width="256">
|
||||
Preprocessor include path:
|
||||
</text>
|
||||
<line_editor
|
||||
control_name="_NACL_PreProcHDDIncludeLocation"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="23"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
max_length_chars="4096"
|
||||
name="preprocinclude_location"
|
||||
width="310" />
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
enabled_control="_NACL_PreProcEnableHDDInclude"
|
||||
label="Browse"
|
||||
label_selected="Browse"
|
||||
left_pad="5"
|
||||
name="SetPreprocInclude"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="NACL.SetPreprocInclude" />
|
||||
</button>
|
||||
<text
|
||||
follows="left|top"
|
||||
height="16"
|
||||
type="string"
|
||||
length="1"
|
||||
layout="topleft"
|
||||
name="externaleditor_textbox"
|
||||
left="17"
|
||||
width="256">
|
||||
External Editor:
|
||||
</text>
|
||||
<line_editor
|
||||
control_name="ExternalEditor"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="23"
|
||||
max_length_chars="4096"
|
||||
name="externaleditor_location"
|
||||
width="310" />
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
label="Browse"
|
||||
label_selected="Browse"
|
||||
left_pad="5"
|
||||
name="SetExternalEditor"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="Pref.SetExternalEditor" />
|
||||
</button>
|
||||
</panel>
|
||||
|
||||
<!--Uploads-->
|
||||
<panel
|
||||
top_pad="5"
|
||||
|
|
|
|||
|
|
@ -3271,6 +3271,7 @@ Your current position: [AVATAR_POS]
|
|||
<string name="All Items">All Items</string>
|
||||
<string name="Recent Items">Recent Items</string>
|
||||
<string name="Worn Items">Worn Items</string>
|
||||
<string name="Favorites">Favorites</string>
|
||||
|
||||
<string name="InvOfferGroupNoticeName">A group member named [NAME]</string>
|
||||
<string name="CallingCardOnlineLabelSuffix">(online)</string>
|
||||
|
|
|
|||
|
|
@ -129,33 +129,41 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Actualmente establecido a: [ITEM]
|
||||
</text>
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Actualmente establecido a: [SCRIPT]
|
||||
</text>
|
||||
<check_box label="Resaltar las primitivas seleccionadas" tool_tip="Cuando lo desactivas, no se muestran los efectos amarillos/azules de resaltado, mejorando el rendimiento cuando se selecciona un gran número de primitivas." name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="Limitar la distancia de selección:" width="200" name="LimitSelectDistance"/>
|
||||
<check_box label="Modo antiguo de "Poner en venta"" tool_tip="Cuando lo activas, la información de venta del objeto se guarda al cambiarla, en vez de pedir confirmación." name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="Guardar texturas del inventario a disco como PNG en vez de TGA por defecto" tool_tip="Utilizado en la ventana de previsualización de textura y en el menú contextual en el inventario." name="FSTextureDefaultSaveAsFormat"/>
|
||||
<text name="text_box_pivotpoint">
|
||||
Punto de pivotaje
|
||||
</text>
|
||||
<view_border name="PivotBorder" width="142"/>
|
||||
<check_box label="Eje en prim raíz" tool_tip="El comportamiento por defecto es mostrar el eje en el centro de masa del conjunto. Si lo activas, el eje se mostrará en la primitiva raíz (principal) del conjunto de primitivas enlazadas." name="FSBuildPrefsActualRoot_toggle"/>
|
||||
<spinner label="Pos. X" name="X pos"/>
|
||||
<spinner label="Pos. Y" name="Y pos"/>
|
||||
<spinner label="Pos. Z" name="Z pos"/>
|
||||
<check_box label="Valores porcent." tool_tip="Los valores por defecto son porcentajes y cada eje se establece en 50" name="FSPivotPercToggle"/>
|
||||
</panel>
|
||||
<panel label="Constr. 2" name="BuildTab2">
|
||||
<check_box label="Usar Ctrl+ratón para sujetar y manipular objetos" tool_tip="Si lo activas, podrás tomar y mover objetos con tu ratón y la tecla CTRL." name="FSEnableGrab"/>
|
||||
<check_box label="Permitir Bloq. Mayús. + arrastrar o escalar en una cara de textura en modo de construcción" tool_tip="Si lo activas, permite pulsar-arrastrar o pulsar-escalar de la textura de una cara en el modo de construcción. Esta característica es todavía experimental y debe ser usada con precaución." name="FSExperimentalDragTexture"/>
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<check_box label="Guardar como Mono los scripts editados desde el inventario" tool_tip="Cuando está activado, al editar un script directamente desde el inventario y luego guardarlo, lo guarda como Mono en vez de como LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="Activar el preprocesador LSL" tool_tip="Marcar para activar el preprocesador LSL." name="preproc_checkbox"/>
|
||||
<check_box label="Optimizar scripts" tool_tip="Marcar para que el preprocesador LSL optimice el espacio utilizado por los scripts, a costa de su legibilidad." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="Instrucción switch()" tool_tip="Marcar para que el preprocesador LSL permita el uso de la instrucción switch() para controlar el flujo de los scripts." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Lazy lists" tool_tip="Marcar para que el preprocesador LSL permita el uso de extensiones de sintaxis para el manejo de listas." name="preproclazy_checkbox"/>
|
||||
<check_box label="#includes desde el disco local" tool_tip="Marcar para que el preprocesador LSL permita instrucciones #include para referenciar ficheros en tu sistema local." name="preprocinclude_checkbox"/>
|
||||
<check_box label="#includes desde el disco local" left_delta="75" tool_tip="Marcar para que el preprocesador LSL permita instrucciones #include para referenciar ficheros en tu sistema local." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Ruta include del preprocesador:
|
||||
</text>
|
||||
<button label="Examinar" label_selected="Examinar" name="SetPreprocInclude"/>
|
||||
</panel>
|
||||
<panel label="Constr. 2" name="BuildTab2">
|
||||
<check_box label="Resaltar las primitivas seleccionadas" tool_tip="Cuando lo desactivas, no se muestran los efectos amarillos/azules de resaltado, mejorando el rendimiento cuando se selecciona un gran número de primitivas." name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="Limitar la distancia de selección:" width="200" name="LimitSelectDistance"/>
|
||||
<check_box label="Modo antiguo de "Poner en venta"" tool_tip="Cuando lo activas, la información de venta del objeto se guarda al cambiarla, en vez de pedir confirmación." name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="Guardar como Mono los scripts editados desde el inventario" tool_tip="Cuando está activado, al editar un script directamente desde el inventario y luego guardarlo, lo guarda como Mono en vez de como LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="Guardar texturas del inventario a disco como PNG en vez de TGA por defecto" tool_tip="Utilizado en la ventana de previsualización de textura y en el menú contextual en el inventario." name="FSTextureDefaultSaveAsFormat"/>
|
||||
<check_box label="Usar Ctrl+ratón para sujetar y manipular objetos" tool_tip="Si lo activas, podrás tomar y mover objetos con tu ratón y la tecla CTRL." name="FSEnableGrab"/>
|
||||
<check_box label="Permitir Bloq. Mayús. + arrastrar o escalar en una cara de textura en modo de construcción" tool_tip="Si lo activas, permite pulsar-arrastrar o pulsar-escalar de la textura de una cara en el modo de construcción. Esta característica es todavía experimental y debe ser usada con precaución." name="FSExperimentalDragTexture"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -22,5 +22,17 @@
|
|||
<radio_item label="Afficher dans la fenêtre d'inventaire principale" name="false"/>
|
||||
<radio_item label="Ouvre une nouvelle fenêtre à dossier unique" name="true"/>
|
||||
</radio_group>
|
||||
<button label="OK" name="ok_btn"/>
|
||||
<text name="favorites_txt">
|
||||
Favoris
|
||||
</text>
|
||||
<check_box label="Étoile sur les favoris" name="favorite_star"/>
|
||||
<check_box label="Étoile sur les dossiers contenant un favori" name="favorite_hollow_star"/>
|
||||
<check_box label="Texte coloré" name="favorites_color"/>
|
||||
<text name="attachment_return_txt">
|
||||
Appuyer sur Entrée sur un élément attaché à l'avatar
|
||||
</text>
|
||||
<combo_box name="attach_combo">
|
||||
<combo_box.item label="Ajoute l'élément (recommandé)" name="1"/>
|
||||
<combo_box.item label="Porte (Supprime l'élément attaché à cet endroit)" name="0"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<floater name="snapshot_guide_settings" title="Paramètres du guide de cadrage">
|
||||
<text name="color_and_appearance_label">
|
||||
Couleur et apparence du guide
|
||||
</text>
|
||||
<spinner label="Épaisseur (px)" name="guide_thickness"/>
|
||||
<slider label="Opacité" name="guide_opacity"/>
|
||||
<text name="style_label">
|
||||
Style du guide
|
||||
</text>
|
||||
<combo_box name="guide_style_combo" tool_tip="Choisissez le guide de cadrage à afficher">
|
||||
<combo_box.item name="rule_of_thirds" label="Règle des tiers"/>
|
||||
<combo_box.item name="golden_ratio_top_left" label="Ratio d'or (en haut à gauche)"/>
|
||||
<combo_box.item name="golden_ratio_top_right" label="Ratio d'or (en haut à droite)"/>
|
||||
<combo_box.item name="golden_ratio_bottom_left" label="Ratio d'or (en bas à gauche)"/>
|
||||
<combo_box.item name="golden_ratio_bottom_right" label="Ratio d'or (en bas à droite)"/>
|
||||
<combo_box.item name="diagonal" label="Diagonale"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
@ -51,6 +51,8 @@
|
|||
<menu_item_call label="Appliquer à la parcelle" name="Settings Apply Parcel"/>
|
||||
<menu_item_call label="Nouveau dossier à partir de la sélection" name="New folder from selected"/>
|
||||
<menu_item_call label="Annuler le regroupement par dossier" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="Add to Favorites"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="Remove from Favorites"/>
|
||||
<menu label="Utiliser par défaut pour" name="upload_def">
|
||||
<menu_item_check label="Le chargement d'images" name="Image uploads"/>
|
||||
<menu_item_check label="Le chargement de sons" name="Sound uploads"/>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
<menu_item_call label="Ajouter à votre tenue" name="wear_add" />
|
||||
<menu_item_call label="Retirer de votre tenue" name="take_off" />
|
||||
<menu_item_call label="Image..." name="thumbnail"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
|
||||
<menu_item_call label="Modifier votre tenue" name="edit"/>
|
||||
<menu_item_call label="Renommer votre tenue" name="rename"/>
|
||||
<menu_item_call label="Enregistrer dans cette tenue" name="save"/>
|
||||
|
|
|
|||
|
|
@ -108,6 +108,8 @@
|
|||
<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
|
||||
<menu_item_call label="Créer un dossier à partir de la sélection" name="New folder from selected"/>
|
||||
<menu_item_call label="Dégrouper les éléments du dossier" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="Add to Favorites"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="Remove from Favorites"/>
|
||||
<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
|
||||
<menu_item_call label="Jouer" name="Sound Play"/>
|
||||
<menu_item_call label="Copier la SLurl" name="url_copy"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<toggleable_menu name="Sort Outfit">
|
||||
<menu_item_check label="Trier les favoris par ordre décroissant" name="sort_favorites_to_top"/>
|
||||
<menu_item_check label="Trier les images par ordre décroissant" name="sort_images_to_top"/>
|
||||
<menu_item_check label="Trier par nom" name="sort_by_name"/>
|
||||
</toggleable_menu>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
<menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/>
|
||||
<menu_item_call label="Développer tous les dossiers" name="expand"/>
|
||||
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
|
||||
<menu label="Nouveaux habits" name="New Clothes">
|
||||
<context_menu label="Nouveaux habits" name="New Clothes">
|
||||
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
|
||||
<menu_item_call label="Nouveau pantalon" name="New Pants"/>
|
||||
<menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
|
||||
|
|
@ -24,11 +24,12 @@
|
|||
<menu_item_call label="Nouvelles propriétés physiques" name="New Physics"/>
|
||||
<menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
|
||||
<menu_item_call label="Nouvel environnement universel" name="New Universal"/>
|
||||
</menu>
|
||||
<menu label="Nouvelles parties du corps" name="New Body Parts">
|
||||
</context_menu>
|
||||
<context_menu label="Nouvelles parties du corps" name="New Body Parts">
|
||||
<menu_item_call label="Nouvelle silhouette" name="New Shape"/>
|
||||
<menu_item_call label="Nouvelle peau" name="New Skin"/>
|
||||
<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
|
||||
<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
|
||||
</menu>
|
||||
</context_menu>
|
||||
<menu_item_check label="Paramètres d'inventaire..." name="inventory_settings"/>
|
||||
</toggleable_menu>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<toggleable_menu name="Sort Outfit">
|
||||
<menu_item_call label="Développer tous les dossiers" name="expand"/>
|
||||
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
|
||||
<menu_item_check label="Trier les favoris par ordre décroissant" name="sort_favorites_to_top"/>
|
||||
<menu_item_check label="Afficher la tenue complète dans la recherche" name="show_entire_outfit_in_search"/>
|
||||
</toggleable_menu>
|
||||
|
|
@ -4,6 +4,8 @@
|
|||
<menu_item_call label="Ajouter à la tenue actuelle" name="wear_add"/>
|
||||
<menu_item_call label="Supprimer de la tenue actuelle" name="take_off"/>
|
||||
<menu_item_call label="Image..." name="thumbnail"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
|
||||
<menu_item_call label="Modifier la tenue" name="edit"/>
|
||||
<menu_item_call label="Renommer la tenue" name="rename"/>
|
||||
<menu_item_call label="Enregister dans cette tenue" name="save"/>
|
||||
|
|
|
|||
|
|
@ -186,10 +186,10 @@
|
|||
<menu_item_call label="Annuler le lien" name="Unlink"/>
|
||||
<menu_item_check label="Modifier les parties liées" name="Edit Linked Parts"/>
|
||||
<menu label="Sélectionner des éléments" name="Select Elements">
|
||||
<menu_item_call label="Sélectionner la partie suivante ou le visage" name="Select Next Part or Face"/>
|
||||
<menu_item_call label="Sélectionner la partie précédente ou le visage" name="Select Previous Part or Face"/>
|
||||
<menu_item_call label="Inclure la partie suivante ou le visage" name="Include Next Part or Face"/>
|
||||
<menu_item_call label="Inclure la partie précédente ou le visage" name="Include Previous Part or Face"/>
|
||||
<menu_item_call label="Sélectionner la partie ou la face suivante" name="Select Next Part or Face"/>
|
||||
<menu_item_call label="Sélectionner la partie ou la face précédente" name="Select Previous Part or Face"/>
|
||||
<menu_item_call label="Inclure la partie ou la face suivante" name="Include Next Part or Face"/>
|
||||
<menu_item_call label="Inclure la partie ou la face précédente" name="Include Previous Part or Face"/>
|
||||
</menu>
|
||||
<menu_item_call label="Objets des régions" name="pathfinding_linkset_menu_item"/>
|
||||
<menu_item_call label="Point central sur la sélection" name="Focus on Selection"/>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@
|
|||
<menu_item_call label="Détacher" name="detach"/>
|
||||
<menu_item_call label="Retirer" name="take_off"/>
|
||||
<menu_item_call label="Profil de l'objet" name="object_profile"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
|
||||
<menu_item_call label="Afficher l'original" name="show_original"/>
|
||||
<menu_item_call label="Supprimer de la tenue" name="delete_from_outfit"/>
|
||||
<menu_item_call label="Créer un nouveau" name="create_new"/>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
<menu_item_call label="Enlever" name="take_off"/>
|
||||
<menu_item_call label="Détacher" name="detach"/>
|
||||
<menu_item_call label="Retirer / Détacher" name="take_off_or_detach"/>
|
||||
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
|
||||
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
|
||||
<menu_item_call label="Modifier la tenue" name="edit_outfit"/>
|
||||
<menu_item_call label="Modifier" name="edit_item"/>
|
||||
<menu_item_call label="Afficher l’original" name="show_original"/>
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
<combo_box.item label="Italique & Souligné" name="ITALICUNDERLINE"/>
|
||||
<combo_box.item label="Gras, Italique & Souligné" name="BOLDITALICUNDERLINE"/>
|
||||
</combo_box>
|
||||
<text name="Moderator Text Style">Text :</text>
|
||||
<text name="Moderator Text Style">Texte :</text>
|
||||
<combo_box name="mod_text_style">
|
||||
<combo_box.item label="Normal" name="normal"/>
|
||||
<combo_box.item label="Gras" name="BOLD"/>
|
||||
|
|
@ -114,6 +114,7 @@
|
|||
<check_box name="FSChatbarNamePrediction" label="Activer l'autocomplétion des noms dans le Chat local"/>
|
||||
<check_box name="AllowMUpose" label="':' est un synonyme pour '/me'"/>
|
||||
<check_box name="AutoCloseOOC" label="Fermer automatiquement les doubles parenthèses ((OOC))"/>
|
||||
<check_box name="FSUseChatMentionAutoComplete" label="Activer la fenêtre de mentions @ automatiques lors de la saisie dans les barres de discussion"/>
|
||||
<check_box name="FSEnableEmojiWindowPopupWhileTyping" label="Activer la fenêtre de sélection auto des émojis lors de la saisie dans la barre de chat"/>
|
||||
<check_box name="FSShowEmojiButton" label="Afficher le bouton emoji dans la barre de chat pour les IM et les discussions de proximité"/>
|
||||
<check_box name="FSShowIMSendButton" label="Afficher le bouton d'envoi dans la barre de chat pour les sessions d'IM"/>
|
||||
|
|
@ -138,6 +139,7 @@
|
|||
<text name="FSShowGroupNameLength_label" width="340">Longueur de nom de groupe à afficher dans les transcriptions</text>
|
||||
<spinner tool_tip="-1 pour le nom complet, 0 pour désactiver" name="FSShowGroupNameLength"/>
|
||||
<check_box name="FSOpenIMContainerOnOfflineMessage" label="Afficher les messages reçus hors-ligne à la connexion"/>
|
||||
<check_box name="FSRestoreOpenIMs" label="Restaurer les conversations de la session précédente avec les résidents"/>
|
||||
<check_box label="Envoyer les IMs par email si je suis déconnecté ([EMAIL])" name="send_im_to_email"/>
|
||||
<check_box name="FSShowIMInChatHistory" label="Afficher les IMs dans le Chat local"/>
|
||||
<check_box name="FSLogIMInChatHistory" label="Sauvegarder les IMs dans le Chat local"/>
|
||||
|
|
|
|||
|
|
@ -111,31 +111,10 @@
|
|||
<check_box name="FSBuildPrefs_EmbedItem" label="Intégrer un objet dans le nouveau prim"/>
|
||||
<fs_embedded_item_drop_target name="embed_item" tool_tip="Glissez un objet ici.">Glissez un objet ici.</fs_embedded_item_drop_target>
|
||||
<text name="build_item_add_disp_rect_txt">Actuellement : [ITEM]</text>
|
||||
<text name="text_box_pivotpoint">Point de pivot</text>
|
||||
<check_box label="Axe sur prim racine" tool_tip="Par défaut l'axe est centré sur le centre de gravité d'un ensemble lié. Si activé, l'axe sera affiché sur le prim racine de l'ensemble lié." name="FSBuildPrefsActualRoot_toggle"/>
|
||||
<spinner label="Pos. X" name="X pos"/>
|
||||
<spinner label="Pos. Y" name="Y pos"/>
|
||||
<spinner label="Pos. Z" name="Z pos"/>
|
||||
<check_box label="Valeurs en %" tool_tip="Par défaut, tout est en pourcentages et chaque axe est fixé à 50" name="FSPivotPercToggle"/>
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">Drop a script here.</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">Actuellement: [SCRIPT]</text>
|
||||
<button label="Permissions de création par défaut" name="fs_default_creation_permissions"/>
|
||||
<text name="text_box_scripting_font" width="155">Police de l'éditeur de script :</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Nom de la police utilisée dans l'éditeur de script LSL" />
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Taille de la police utilisée dans l'éditeur de script LSL">
|
||||
<combo_item name="Small" label="Petite"/>
|
||||
<combo_item name="Medium" label="Moyenne"/>
|
||||
<combo_item name="Large" label="Grande"/>
|
||||
</combo_box>
|
||||
<check_box label="Activer le préprocesseur LSL" tool_tip="Quand coché, le préprocesseur LSL est activé." name="preproc_checkbox"/>
|
||||
<check_box label="Optimiser" tool_tip="Quand coché, le préprocesseur LSL optimisera la place que prennent les scripts." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="Condition switch()" left_delta="80" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation de la condition switch() pour le contrôle de flux de scripts." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Simplifications de listes" left_delta="120" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation d'extensions de syntaxe pour la manipulation de listes." name="preproclazy_checkbox"/>
|
||||
<check_box label="#includes depuis le disque" left_delta="150" tool_tip="Quand coché, le préprocesseur LSL permettra à la commande #include de pointer vers des fichiers de votre disque dur." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">Chemin d'inclusion du préprocesseur :</text>
|
||||
<button label="Parcourir" label_selected="Parcourir" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">Éditeur externe :</text>
|
||||
<button label="Parcourir" label_selected="Parcourir" name="SetExternalEditor"/>
|
||||
</panel>
|
||||
<panel label="Construction 2" name="BuildTab2">
|
||||
<check_box label="Contours lumineux des prims sélectionnées" tool_tip="Quand décoché, les contours jaunes/bleus ne seront pas affichés, améliorant les performances quand un grand nombre de prims est sélectionné." name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="Afficher les limites de la parcellle sélectionnée" name="RenderParcelSelection"/>
|
||||
<check_box label="Afficher la limite maximale en hauteur pour construire" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
|
|
@ -149,8 +128,15 @@
|
|||
<check_box name="FSUnlinkConfirmEnabled" width="400" label="Confirmation de suppression de lien si l'ensemble possède au moins"/>
|
||||
<text name="MinObjectsForUnlinkConfirmText2">objets</text>
|
||||
<check_box label="Utiliser l'ancien fonctionnement de 'Mettre cet objet en vente'" tool_tip="Activer cette option sauvegardera directement les informations de vente de l'objet au lieu de nécessiter une confirmation." name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="Sauvegarder les scripts édités depuis l'inventaire en Mono" tool_tip="Activer cette option sauvegardera directement les scripts situés dans l'inventaire en Mono au lieu de LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="Sauvegarder les textures sur le disque dur au format PNG au lieu de TGA" tool_tip="Utilisé dans l'aperçu de texture et dans le menu contextuel de l'inventaire." name="FSTextureDefaultSaveAsFormat"/>
|
||||
<text name="text_box_pivotpoint">Point de pivot</text>
|
||||
<check_box label="Axe sur prim racine" tool_tip="Par défaut l'axe est centré sur le centre de gravité d'un ensemble lié. Si activé, l'axe sera affiché sur le prim racine de l'ensemble lié." name="FSBuildPrefsActualRoot_toggle"/>
|
||||
<spinner label="Pos. X" name="X pos"/>
|
||||
<spinner label="Pos. Y" name="Y pos"/>
|
||||
<spinner label="Pos. Z" name="Z pos"/>
|
||||
<check_box label="Valeurs en %" tool_tip="Par défaut, tout est en pourcentages et chaque axe est fixé à 50" name="FSPivotPercToggle"/>
|
||||
</panel>
|
||||
<panel label="Construction 2" name="BuildTab2">
|
||||
<check_box label="Utiliser Ctrl+clic pour attraper et déplacer des objets" tool_tip="Quand coché, vous pourrez attraper et déplacer des objets en utilisant la souris et la touche Ctrl." name="FSEnableGrab"/>
|
||||
<check_box label="Déplacer les textures directement en maintenant Shift-Clic en mode construction" tool_tip="Activer cette option vous permettra de faire glisser la texture sur la face de l'objet en mode de construction" name="FSExperimentalDragTexture"/>
|
||||
<check_box label="Prévisualiser les animations sur son avatar pendant le téléchargement sur le serveur" tool_tip="Si activé, vous pouvez prévisualiser les animations sur votre propre avatar pendant le téléchargement sur le serveur" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
|
|
@ -159,6 +145,25 @@
|
|||
<check_box label="Points d'attachement alphabétiques dans les menus "Attacher à" (redémarrage requis)" tool_tip="Si cette option est activée, la liste des points d'attachement dans les menus 'Attacher à' sera triée par ordre alphabétique." name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
<check_box label="Nouveau module de texture Firestorm dans la fenêtre d'outils (nécessite un redémarrage)" tool_tip="Si cette option est activée, les outils d'édition de textures utiliseront le flux de travail amélioré de FS et permettront l'édition de textures Blinn-Phong et PBR." name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font" width="155">Police de l'éditeur de script :</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Nom de la police utilisée dans l'éditeur de script LSL" />
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Taille de la police utilisée dans l'éditeur de script LSL">
|
||||
<combo_item name="Small" label="Petite"/>
|
||||
<combo_item name="Medium" label="Moyenne"/>
|
||||
<combo_item name="Large" label="Grande"/>
|
||||
</combo_box>
|
||||
<check_box label="Sauvegarder les scripts édités depuis l'inventaire en Mono" tool_tip="Activer cette option sauvegardera directement les scripts situés dans l'inventaire en Mono au lieu de LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="Activer le préprocesseur LSL" tool_tip="Quand coché, le préprocesseur LSL est activé." name="preproc_checkbox"/>
|
||||
<check_box label="Optimiser" tool_tip="Quand coché, le préprocesseur LSL optimisera la place que prennent les scripts." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="Condition switch()" left_delta="80" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation de la condition switch() pour le contrôle de flux de scripts." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Simplifications de listes" left_delta="117" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation d'extensions de syntaxe pour la manipulation de listes." name="preproclazy_checkbox"/>
|
||||
<check_box label="#includes depuis le disque" left_delta="147" tool_tip="Quand coché, le préprocesseur LSL permettra à la commande #include de pointer vers des fichiers de votre disque dur." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">Chemin d'inclusion du préprocesseur :</text>
|
||||
<button label="Parcourir" label_selected="Parcourir" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">Éditeur externe :</text>
|
||||
<button label="Parcourir" label_selected="Parcourir" name="SetExternalEditor"/>
|
||||
</panel>
|
||||
<panel label="Chargements" name="UploadsTab">
|
||||
<text name="title">Dossiers de destination pour les chargements :</text>
|
||||
<text name="title_sounds">Sons</text>
|
||||
|
|
|
|||
|
|
@ -7076,6 +7076,9 @@ Votre position actuelle : [AVATAR_POS]
|
|||
<string name="Worn Items">
|
||||
Eléments portés
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Mes Favoris
|
||||
</string>
|
||||
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
Un membre du groupe nommé [NAME]
|
||||
|
|
|
|||
|
|
@ -152,38 +152,14 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Impostato a: [ITEM]
|
||||
</text>
|
||||
<text name="text_box_pivotpoint">
|
||||
Fulcro oggetto
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Impostato a: [SCRIPT]
|
||||
</text>
|
||||
<check_box label="Assi al prim radice" tool_tip="Di solito è impostato il centro non sul prim principale ma sul centro dell'intero oggetto, spuntando questa casella il centro verrà settato sul Prim Root." name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Pos. X" name="X pos" />
|
||||
<spinner label="Pos. Y" name="Y pos" />
|
||||
<spinner label="Pos. Z" name="Z pos" />
|
||||
<check_box label="Valori in percento" tool_tip="Di solito è impostato a 50%" name="FSPivotPercToggle" />
|
||||
<button label="Permessi predefiniti di creazione" name="fs_default_creation_permissions"/>
|
||||
<text name="text_box_scripting_font">
|
||||
Font finestra script:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Dimensioni del carattere usato nella finestra di modifica script LSL">
|
||||
<combo_item name="Small" label="Piccolo"/>
|
||||
<combo_item name="Medium" label="Medio"/>
|
||||
<combo_item name="Large" label="Grande"/>
|
||||
</combo_box>
|
||||
<check_box label="Abilita preprocessore LSL" tool_tip="Quando spuntata, il preprocessore LSL è attivo." name="preproc_checkbox" />
|
||||
<check_box label="Ottimizza script" tool_tip="Quando spuntato, il preprocessore ottimizza lo spazio usato usato dallo script e migliora la leggibilità." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="Istruzione switch()" tool_tip="Quando spuntato, il preprocessore permetterà l' istruzione switch() per controllare il flusso dello script." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Lazy lists" tool_tip="Quando spuntato, il preprocessore permetterà la sintassi estesa per gestire le liste" name="preproclazy_checkbox"/>
|
||||
<check_box label="#include da disco" tool_tip="Quando spuntato, il preprocessore permetterà le istruzioni #include per aggiungere file locali." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Percorso file da includere per il preprocessore:
|
||||
</text>
|
||||
<button label="Sfoglia" label_selected="Sfoglia" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">
|
||||
Editor esterno:
|
||||
</text>
|
||||
<button label="Sfoglia" label_selected="Sfoglia" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Costruisci 2" name="BuildTab2">
|
||||
<check_box label="Evidenzia i prim selezionati" tool_tip="Quando non è spuntata questa casella, i prim editati non verranno messi in evidenza con i contorni gialli/blu. Questa casella non spuntata aumenta le prestazioni del viewer evitando crash quando si selezionano molti oggetti." name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="Evidenzia confini del lotto selezionato" name="RenderParcelSelection"/>
|
||||
<check_box label="Mostra confini fino all'altezza max costruita" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
|
|
@ -203,8 +179,17 @@
|
|||
prim
|
||||
</text>
|
||||
<check_box label="Usa il vecchio metodo "Metti oggetto in vendita"" tool_tip="Quando selezionato, l'oggetto in vendita viene salvato senza chiedere conferma" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="Salva gli script in inventario come Mono" tool_tip="Quando selezionato, salverà gli script editati nell'inventario con il formato Mono anziché LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Salva texture da inventario a disco nel formato PNG invece che TGA" tool_tip="Usato nel pannello anteprima texture e nei menu dell'inventario." name="FSTextureDefaultSaveAsFormat"/>
|
||||
<text name="text_box_pivotpoint">
|
||||
Fulcro oggetto
|
||||
</text>
|
||||
<check_box label="Assi al prim radice" tool_tip="Di solito è impostato il centro non sul prim principale ma sul centro dell'intero oggetto, spuntando questa casella il centro verrà settato sul Prim Root." name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Pos. X" name="X pos" />
|
||||
<spinner label="Pos. Y" name="Y pos" />
|
||||
<spinner label="Pos. Z" name="Z pos" />
|
||||
<check_box label="Valori in percento" tool_tip="Di solito è impostato a 50%" name="FSPivotPercToggle" />
|
||||
</panel>
|
||||
<panel label="Costruisci 2" name="BuildTab2">
|
||||
<check_box label="Usa Ctrl+mouse per afferrare e manipolare oggetti" tool_tip="Permette di afferrare e spostare gli oggetti con il mouse e il tasto CTRL." name="FSEnableGrab"/>
|
||||
<check_box label="Permetti clic-trascina o clic-scala (Maiusc) di una texture in modalità costruzione" tool_tip="Permette di usare clic-trascina e clic-Maiusc-trascina sulla faccia di una texture in modo costruzione. Opzione sperimentale da usare con cautela." name="FSExperimentalDragTexture"/>
|
||||
<check_box label="Anteprima delle animazioni sull'avatar durante il caricamento" tool_tip="Si possono vedere le animazioni durante il caricamento usando il proprio avatar" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
|
|
@ -213,6 +198,30 @@
|
|||
<check_box label="Elenca i punti di attacco nei menu "Attacca a" in ordine alfabetico (richiede riavvio)" tool_tip="Se abilitato, i punti di attacco nei menu "Attacca a" verranno elencati in ordine alfabetico" name="FSSortAttachmentSpotsAlphabetically" />
|
||||
<check_box label="Usa il nuovo pannello texture di Firestorm nella finestra Costruisci/Modifica (richiede riavvio)" tool_tip="Se abilitata, gli strumenti di modifica delle texture utilizzeranno il pannello FS migliorato e consentiranno la modifica sia delle texture Blinn-Phong che PBR." name="FSUseNewTexturePanel" />
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font">
|
||||
Font finestra script:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Dimensioni del carattere usato nella finestra di modifica script LSL">
|
||||
<combo_item name="Small" label="Piccolo"/>
|
||||
<combo_item name="Medium" label="Medio"/>
|
||||
<combo_item name="Large" label="Grande"/>
|
||||
</combo_box>
|
||||
<check_box label="Salva gli script in inventario come Mono" tool_tip="Quando selezionato, salverà gli script editati nell'inventario con il formato Mono anziché LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Abilita preprocessore LSL" tool_tip="Quando spuntata, il preprocessore LSL è attivo." name="preproc_checkbox" />
|
||||
<check_box label="Ottimizza script" tool_tip="Quando spuntato, il preprocessore ottimizza lo spazio usato usato dallo script e migliora la leggibilità." name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="Istruzione switch()" tool_tip="Quando spuntato, il preprocessore permetterà l' istruzione switch() per controllare il flusso dello script." name="preprocswitch_checkbox"/>
|
||||
<check_box label="Lazy lists" tool_tip="Quando spuntato, il preprocessore permetterà la sintassi estesa per gestire le liste" name="preproclazy_checkbox"/>
|
||||
<check_box label="#include da disco" tool_tip="Quando spuntato, il preprocessore permetterà le istruzioni #include per aggiungere file locali." name="preprocinclude_checkbox"/>
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Percorso file da includere per il preprocessore:
|
||||
</text>
|
||||
<button label="Sfoglia" label_selected="Sfoglia" name="SetPreprocInclude"/>
|
||||
<text name="externaleditor_textbox">
|
||||
Editor esterno:
|
||||
</text>
|
||||
<button label="Sfoglia" label_selected="Sfoglia" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Caricamenti" name="UploadsTab">
|
||||
<text name="title">
|
||||
Cartelle attuali per i caricamenti:
|
||||
|
|
|
|||
|
|
@ -6615,6 +6615,9 @@ Assistenza nel sito SecondLife.com e segnala il problema.
|
|||
<string name="Worn Items">
|
||||
Indossati
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Preferiti
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
Un membro del gruppo di nome [NAME]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
アバターの装着物でEnterキーを押したときの動作
|
||||
</text>
|
||||
<combo_box name="attach_combo">
|
||||
<combo_box.item label="装着物を追加(推奨)" name="0"/>
|
||||
<combo_box.item label="着用(その場所の装着物を取り除きます)" name="1"/>
|
||||
<combo_box.item label="装着物を追加(推奨)" name="1"/>
|
||||
<combo_box.item label="着用(その場所の装着物を取り除きます)" name="0"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -168,6 +168,34 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
現在の設定:[ITEM]
|
||||
</text>
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
現在の設定: [SCRIPT]
|
||||
</text>
|
||||
<button label="デフォルトの作成権限" name="fs_default_creation_permissions"/>
|
||||
<check_box label="選択したプリムのハイライトを有効にする" tool_tip="チェックを外すと、黄色/青のアウトライン効果は描画されず、多数のプリムが選択された場合のパフォーマンスが向上します。" name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="選択中の区画の境界をハイライトする" name="RenderParcelSelection"/>
|
||||
<check_box label="ビルドできる最大高度の境界を表示する" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
<check_box label="遠くにあるオブジェクトを選択しない" width="210" name="LimitSelectDistance"/>
|
||||
<spinner name="MaxSelectDistance" tool_tip="選択可能な最大距離(アバターからのメートル)[デフォルト:128.000]"/>
|
||||
<check_box label="ドラッグできる制限距離(m):" width="210" name="LimitDragDistance"/>
|
||||
<spinner name="MaxDragDistance" tool_tip="移動ツールで1度に移動できる最大距離を入力します。(開始点からのメートル指定)[デフォルト:48.000]"/>
|
||||
<text name="RotationStepText1" width="220">
|
||||
「グリッドにスナップ」を使用していない時
|
||||
</text>
|
||||
<spinner name="RotationStep" tool_tip="回転ツールによるすべての回転はこの単位の倍数に制限されます。[デフォルト:1.0]"/>
|
||||
<text name="RotationStepText2">
|
||||
度の倍数に回転できる範囲を制限する
|
||||
</text>
|
||||
<check_box label="リンク解除の際に警告メッセージを出すリンクセットのオブジェクト数:" width="360" name="FSUnlinkConfirmEnabled"/>
|
||||
<text name="MinObjectsForUnlinkConfirmText2">
|
||||
個以上
|
||||
</text>
|
||||
<check_box label="クラシックな「売り出し中」の動作を使用" tool_tip="ここにチェックを入れると、「販売対象」のチェックを入れた瞬間にデフォルトのL$10の価格が適用されます。標準では、「販売対象」にチェックを入れた後、価格を修正して「適用」ボタンを押した時に反映されるようになっています。" name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="インベントリからディスクにテクスチャを保存する時に、デフォルトでTGAでなくPNGで保存するようにする" tool_tip="テクスチャのプレビューウィンドウまたはインベントリのコンテキストメニューで使用する設定です。" name="FSTextureDefaultSaveAsFormat"/>
|
||||
<text name="text_box_pivotpoint">
|
||||
中心軸のポイント
|
||||
</text>
|
||||
|
|
@ -176,7 +204,17 @@
|
|||
<spinner label="Y軸" name="Y pos"/>
|
||||
<spinner label="Z軸" name="Z pos"/>
|
||||
<check_box label="パーセントで設定" tool_tip="デフォルトではパーセントで設定、どの軸に対しても50%、つまり中央に設定されています。" name="FSPivotPercToggle"/>
|
||||
<button label="デフォルトの作成権限" name="fs_default_creation_permissions"/>
|
||||
</panel>
|
||||
<panel label="ビルド2" name="BuildTab2">
|
||||
<check_box label="オブジェクトを掴んで移動するのにCtrl+マウスを使用" tool_tip="チェックを入れると、オブジェクトを掴んで移動するのに、Ctrlキーを押しながらマウスで操作できるようになります。" name="FSEnableGrab"/>
|
||||
<check_box label="ビルドモードにおいて、CapsLockの状態でテクスチャの面をクリック-ドラッグまたはクリック-スケールする" tool_tip="チェックを入れると、ビルドモードでCAPSロックオンの状態で、テクスチャの面をクリック-ドラッグ、クリック-スケールできるようになります。この機能はまだ実験段階ですので、ご利用には十分な注意を払って下さい。" name="FSExperimentalDragTexture"/>
|
||||
<check_box label="アップロード中にアニメーションを自分のアバターで確認" tool_tip="ここにチェックを入れると、アニメーションのアップロード処理中に自分のアバターでそのアニメーションを再生して確認できます。" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="アニメーションプレビューの詳細情報は常に展開する" tool_tip="アニメーションプレビューフローターの詳細なアニメーション情報をデフォルトで展開します。" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="拡張スクリプト情報の詳細を有効にする" tool_tip="有効にすると、ビルダーに役立つさまざまな詳細を含む基本的なスクリプト情報機能が拡張されます。" name="FSScriptInfoExtended"/>
|
||||
<check_box label="「装着先」メニューの装着スポットをアルファベット順に並べ替える(要再起動)" tool_tip="有効にすると、「装着先」メニューの装着物のスポットのリストがアルファベット順に並び替えられます。" name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
<check_box label="ツールフローターで新式の[APP_NAME]テクスチャパネルを使用する(要再起動)" tool_tip="有効にすると、テクスチャ編集ツールは改良されたFSワークフローを使用し、BlinnPhongの編集が可能になります。(要再起動)" name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font">
|
||||
スクリプトエディタのフォント:
|
||||
</text>
|
||||
|
|
@ -189,6 +227,7 @@
|
|||
<combo_item name="Medium" label="中"/>
|
||||
<combo_item name="Large" label="大"/>
|
||||
</combo_box>
|
||||
<check_box label="インベントリ内で編集したスクリプトはMonoとして保存" tool_tip="ここにチェックを入れると、インベントリ内で直接編集したスクリプトをLSL2でなく、Monoの形式で保存します。" name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="LSLプリプロセッサを有効にする" tool_tip="ここにチェックを入れるとLSLプリプロセッサが利用できるようになります。" name="preproc_checkbox"/>
|
||||
<check_box label="スクリプト最適化" tool_tip="ここにチェックを入れると、他のスクリプトファイルを読み込んだ時に、参照されていない無駄なコードを表示せずに読みやすさを最適化します。" name="preprocoptimizer_checkbox"/>
|
||||
<check_box label="switch()文の利用" tool_tip="ここにチェックを入れると、スクリプトの制御構造にswitch()文が利用できるようになります。" name="preprocswitch_checkbox"/>
|
||||
|
|
@ -203,36 +242,6 @@
|
|||
</text>
|
||||
<button label="参照" label_selected="参照" name="SetExternalEditor"/>
|
||||
</panel>
|
||||
<panel label="ビルド2" name="BuildTab2">
|
||||
<check_box label="選択したプリムのハイライトを有効にする" tool_tip="チェックを外すと、黄色/青のアウトライン効果は描画されず、多数のプリムが選択された場合のパフォーマンスが向上します。" name="FSBuildPrefsRenderHighlight_toggle"/>
|
||||
<check_box label="選択中の区画の境界をハイライトする" name="RenderParcelSelection"/>
|
||||
<check_box label="ビルドできる最大高度の境界を表示する" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
<check_box label="遠くにあるオブジェクトを選択しない" name="LimitSelectDistance"/>
|
||||
<spinner name="MaxSelectDistance" tool_tip="選択可能な最大距離(アバターからのメートル)[デフォルト:128.000]"/>
|
||||
<check_box label="ドラッグできる制限距離(m):" name="LimitDragDistance"/>
|
||||
<spinner name="MaxDragDistance" tool_tip="移動ツールで1度に移動できる最大距離を入力します。(開始点からのメートル指定)[デフォルト:48.000]"/>
|
||||
<text name="RotationStepText1">
|
||||
「グリッドにスナップ」を使用していない時
|
||||
</text>
|
||||
<spinner name="RotationStep" tool_tip="回転ツールによるすべての回転はこの単位の倍数に制限されます。[デフォルト:1.0]"/>
|
||||
<text name="RotationStepText2">
|
||||
度の倍数に回転できる範囲を制限する
|
||||
</text>
|
||||
<check_box label="リンク解除の際に警告メッセージを出すリンクセットのオブジェクト数:" name="FSUnlinkConfirmEnabled"/>
|
||||
<text name="MinObjectsForUnlinkConfirmText2">
|
||||
個以上
|
||||
</text>
|
||||
<check_box label="クラシックな「売り出し中」の動作を使用" tool_tip="ここにチェックを入れると、「販売対象」のチェックを入れた瞬間にデフォルトのL$10の価格が適用されます。標準では、「販売対象」にチェックを入れた後、価格を修正して「適用」ボタンを押した時に反映されるようになっています。" name="FSCommitForSaleOnChange_toggle"/>
|
||||
<check_box label="インベントリ内で編集したスクリプトはMonoとして保存" tool_tip="ここにチェックを入れると、インベントリ内で直接編集したスクリプトをLSL2でなく、Monoの形式で保存します。" name="FSSaveInventoryScriptsAsMono_toggle"/>
|
||||
<check_box label="インベントリからディスクにテクスチャを保存する時に、デフォルトでTGAでなくPNGで保存するようにする" tool_tip="テクスチャのプレビューウィンドウまたはインベントリのコンテキストメニューで使用する設定です。" name="FSTextureDefaultSaveAsFormat"/>
|
||||
<check_box label="オブジェクトを掴んで移動するのにCtrl+マウスを使用" tool_tip="チェックを入れると、オブジェクトを掴んで移動するのに、Ctrlキーを押しながらマウスで操作できるようになります。" name="FSEnableGrab"/>
|
||||
<check_box label="ビルドモードにおいて、CapsLockの状態でテクスチャの面をクリック-ドラッグまたはクリック-スケールする" tool_tip="チェックを入れると、ビルドモードでCAPSロックオンの状態で、テクスチャの面をクリック-ドラッグ、クリック-スケールできるようになります。この機能はまだ実験段階ですので、ご利用には十分な注意を払って下さい。" name="FSExperimentalDragTexture"/>
|
||||
<check_box label="アップロード中にアニメーションを自分のアバターで確認" tool_tip="ここにチェックを入れると、アニメーションのアップロード処理中に自分のアバターでそのアニメーションを再生して確認できます。" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="アニメーションプレビューの詳細情報は常に展開する" tool_tip="アニメーションプレビューフローターの詳細なアニメーション情報をデフォルトで展開します。" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="拡張スクリプト情報の詳細を有効にする" tool_tip="有効にすると、ビルダーに役立つさまざまな詳細を含む基本的なスクリプト情報機能が拡張されます。" name="FSScriptInfoExtended"/>
|
||||
<check_box label="「装着先」メニューの装着スポットをアルファベット順に並べ替える(要再起動)" tool_tip="有効にすると、「装着先」メニューの装着物のスポットのリストがアルファベット順に並び替えられます。" name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
<check_box label="ツールフローターで新式の[APP_NAME]テクスチャパネルを使用する(要再起動)" tool_tip="有効にすると、テクスチャ編集ツールは改良されたFSワークフローを使用し、BlinnPhongの編集が可能になります。(要再起動)" name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
<!--Uploads-->
|
||||
<panel label="アップロード" name="UploadsTab">
|
||||
<text name="title">
|
||||
|
|
|
|||
|
|
@ -6527,6 +6527,7 @@ Rez時間:[OBJECT_REZ_TIME]
|
|||
<string name="All Items">全てのアイテム</string>
|
||||
<string name="Recent Items">最近のアイテム</string>
|
||||
<string name="Worn Items">着用中</string>
|
||||
<string name="Favorites">お気に入り</string>
|
||||
|
||||
<string name="InvOfferGroupNoticeName">[NAME]というグループメンバー名</string>
|
||||
<string name="CallingCardOnlineLabelSuffix">(オンライン)</string>
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@
|
|||
<check_box label="Gwiazdka przy folderach z ulubionymi" name="favorite_hollow_star" />
|
||||
<check_box label="Kolor tekstu" name="favorites_color" />
|
||||
<text name="attachment_return_txt">
|
||||
Naciśnięcie "Enter" na dodatku awatara
|
||||
Naciśnięcie "Enter" lub podwójne klikanie na dodatku awatara
|
||||
</text>
|
||||
<combo_box name="attach_combo">
|
||||
<combo_box.item label="Dodaje (zalecane)" name="0" />
|
||||
<combo_box.item label="Zakłada (usuwa dodatek z tego miejsca)" name="1" />
|
||||
<combo_box.item label="Dodaje (zalecane)" name="1" />
|
||||
<combo_box.item label="Zastępuje (usuwa dodatek z tego miejsca)" name="0" />
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Marketplace">
|
||||
<layout_stack name="stack1">
|
||||
<layout_panel name="nav_controls">
|
||||
<button tool_tip="Wstecz" name="back" />
|
||||
<button tool_tip="Do przodu" name="forward" />
|
||||
<button tool_tip="Zatrzymaj" name="stop" />
|
||||
<button tool_tip="Odśwież stronę" name="reload" />
|
||||
<combo_box name="address" tool_tip="Tutaj wpisz URL" />
|
||||
<icon name="media_secure_lock_flag" tool_tip="Bezpieczne przeglądanie (Secured Browsing)" />
|
||||
<button tool_tip="Otwórz obecny URL w Twojej zewnętrznej przeglądarce internetowej" name="popexternal" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Search" title="Wyszukaj">
|
||||
<layout_stack name="stack1">
|
||||
<layout_panel name="nav_controls">
|
||||
<button tool_tip="Wstecz" name="back" />
|
||||
<button tool_tip="Do przodu" name="forward" />
|
||||
<button tool_tip="Zatrzymaj" name="stop" />
|
||||
<button tool_tip="Odśwież stronę" name="reload" />
|
||||
<combo_box name="address" tool_tip="Tutaj wpisz URL" />
|
||||
<icon name="media_secure_lock_flag" tool_tip="Bezpieczne przeglądanie (Secured Browsing)" />
|
||||
<button tool_tip="Otwórz obecny URL w Twojej zewnętrznej przeglądarce internetowej" name="popexternal" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
|
|
@ -4,4 +4,5 @@
|
|||
<menu_item_call label="Kopiuj" name="Copy"/>
|
||||
<menu_item_call label="Wklej" name="Paste"/>
|
||||
<menu_item_call label="Otwórz Web Inspector" name="open_webinspector"/>
|
||||
<menu_item_call label="Pokaż źródło" name="show_page_source" />
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<menu_item_call label="Profil obiektu..." name="Object Profile"/>
|
||||
<menu_item_call label="Zablokuj..." name="Block"/>
|
||||
<menu_item_call label="Odblokuj" name="Unblock"/>
|
||||
<menu_item_call label="Przybliż" name="zoom_in" />
|
||||
<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
|
||||
<menu_item_call label="Teleportuj do pozycji obiektu" name="teleport_to_object"/>
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<menu_item_call label="Profil obiektu..." name="show_object"/>
|
||||
<menu_item_call label="Zablokuj" name="block_object"/>
|
||||
<menu_item_call label="Odblokuj" name="unblock_object"/>
|
||||
<menu_item_call label="Przybliż" name="zoom_in" />
|
||||
<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
|
||||
<menu_item_call label="Teleportuj do miejsca obiektu" name="teleport_to_object"/>
|
||||
<menu_item_call label="Kopiuj nazwę obiektu do schowka" name="url_copy_label"/>
|
||||
|
|
|
|||
|
|
@ -809,6 +809,15 @@ Oczekiwane: [VALIDS]
|
|||
Nie można otworzyć przesłanego pliku dźwiękowego:
|
||||
[FILE]
|
||||
</notification>
|
||||
<notification name="ModelUploaderMissingPhysicsApple">
|
||||
Przesyłanie modeli nie jest jeszcze dostępne na Apple Silicon, ale będzie obsługiwane w nadchodzącym wydaniu.
|
||||
|
||||
Obejście: Kliknij prawym przyciskiem myszy aplikację [APP_NAME] w Finderze,
|
||||
wybierz "Pobierz info", a następnie zaznacz "Otwórz przy użyciu Rosetty".
|
||||
</notification>
|
||||
<notification name="ModelUploaderMissingPhysics">
|
||||
Biblioteka fizyki nie jest obecna, dlatego część funkcji narzędzia przesyłania modeli może nie działać lub nie działać poprawnie.
|
||||
</notification>
|
||||
<notification name="SoundFileNotRIFF">
|
||||
Plik nie jest w formacie RIFF WAVE:
|
||||
[FILE]
|
||||
|
|
@ -5042,6 +5051,10 @@ Będzie można użyć http://opensimulator.org/wiki/inventory aby rozwiązać pr
|
|||
Nie można przenieść plików. Przywrócono poprzednią ścieżkę.
|
||||
<usetemplate ignoretext="Nie można przenieść plików. Przywrócono poprzednią ścieżkę." name="okignore" />
|
||||
</notification>
|
||||
<notification name="PreferenceQualityWithLowMemory">
|
||||
Twój system ma [TOTAL_MEM]MB pamięci, co może nie wystarczyć do uruchamiania przeglądarki na wyższych ustawieniach i może powodować problemy.
|
||||
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Kontynuuj" />
|
||||
</notification>
|
||||
<notification name="DefaultObjectPermissions">
|
||||
Wystąpił problem z zapisywaniem domyślnych zezwoleń obiektu: [REASON]. Spróbuj ustawić je ponownie później.
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ Dowiedz się więcej o [https://community.secondlife.com/knowledgebase/joining-a
|
|||
<button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych" />
|
||||
<dnd_button name="nearby_del_btn" tool_tip="Usuń zaznaczoną osobę ze swojej listy znajomych" />
|
||||
</panel>
|
||||
<slider label="Zasięg:" name="near_me_range" tool_tip="Zasięg pokazywania osób w pobliżu" />
|
||||
</panel>
|
||||
<panel label="Znajomi" name="friends_panel">
|
||||
<panel name="friends_buttons_panel">
|
||||
|
|
|
|||
|
|
@ -156,42 +156,17 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Obecnie: [ITEM]
|
||||
</text>
|
||||
<text name="text_box_pivotpoint">
|
||||
Punkt obracania osi
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Własny skrypt pod przyciskiem Nowy Skrypt"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Upuść skrypt w tym miejscu.">
|
||||
Upuść skrypt w tym miejscu.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Obecnie: [SCRIPT]
|
||||
</text>
|
||||
<check_box label="Oś na poz. gł. primy" tool_tip="Domyślne zachowanie to pokazywanie osi na środku masy zbioru części. Gdy włączysz tą opcję, to będzie ona pokazywana zamiast tego na głównej primie." name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Poz. X" name="X pos" />
|
||||
<spinner label="Poz. Y" name="Y pos" />
|
||||
<spinner label="Poz. Z" name="Z pos" />
|
||||
<check_box label="Wart. procentowo" tool_tip="Domyślne ustawienie jako procenty, a każda oś na 50" name="FSPivotPercToggle" />
|
||||
<button label="Domyślne uprawnienia tworzenia" name="fs_default_creation_permissions" />
|
||||
<text name="text_box_scripting_font" width="150">
|
||||
Czcionka edytora skryptów:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Nazwa czcionki używanej w edytorze skryptów LSL" />
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Rozmiar czcionki używanej w edytorze skryptów LSL">
|
||||
<combo_item name="Small" label="Mała"/>
|
||||
<combo_item name="Medium" label="Średnia"/>
|
||||
<combo_item name="Large" label="Duża"/>
|
||||
</combo_box>
|
||||
<check_box label="Włącz preprocesor LSL" tool_tip="Preprocesor LSL będzie aktywny, gdy ta opcja zostanie zaznaczona." name="preproc_checkbox" />
|
||||
<check_box label="Optymalizator" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor będzie LSL optymalizować miejsce zajmowane przez skrypty." name="preprocoptimizer_checkbox" />
|
||||
<check_box label="Instrukcja switch()" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z instrukcji switch() do sterowania przepływem skryptu." name="preprocswitch_checkbox" />
|
||||
<check_box label="Wolne listy" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z rozszerzeń składni do obsługi list." name="preproclazy_checkbox" />
|
||||
<check_box label="#includes z twardego dysku" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli odnosić się instrukcjom #include (dołączania) do plików na Twoim dysku twardym." name="preprocinclude_checkbox" />
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Ścieżka dołączania preprocesora:
|
||||
</text>
|
||||
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetPreprocInclude" />
|
||||
<text name="externaleditor_textbox">
|
||||
Zewnętrzny edytor:
|
||||
</text>
|
||||
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Buduj 2" name="BuildTab2">
|
||||
<check_box label="Podświetlanie wybranych primów" tool_tip="Gdy odznaczysz tą opcję, to żółte/niebieskie podświetlenia krawędzi nie są renderowane - zwiększa wydajność, gdy zaznaczonych jest wiele primów." name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="Podświetlanie granic wybranej w danej chwili działki" name="RenderParcelSelection" />
|
||||
<check_box label="Pokazuj granice do maksymalnej wysokości, na jakiej można budować" name="FSRenderParcelSelectionToMaxBuildHeight" />
|
||||
<check_box label="Pokazuj granice do maksymalnej wysokości budowania" name="FSRenderParcelSelectionToMaxBuildHeight" />
|
||||
<check_box label="Ogranicz dystans selekcji prim (metry):" name="LimitSelectDistance" width="237" />
|
||||
<spinner name="MaxSelectDistance" tool_tip="Maksymalna dozwolona odległość zaznaczania obiektów (metry od awatara) [Domyślnie: 128.000]" />
|
||||
<check_box label="Ogranicz dystans przeciągania (metry):" name="LimitDragDistance" width="237" />
|
||||
|
|
@ -208,8 +183,17 @@
|
|||
części
|
||||
</text>
|
||||
<check_box label="Stare zachowanie "ustaw obiekt na sprzedaż" (zmiana ceny od razu, bez kliku na 'Zastosuj')" tool_tip="Gdy zaznaczone, to informacja o tym, że obiekt jest na sprzedaż zapisywana jest już po zmianie, nie wymagając potwierdzenia." name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="Zapisuj skrypty edytowane w Szafie jako Mono" tool_tip="Gdy zaznaczone, to wszystkie skrypty edytowane w Szafie są zapisywane jako Mono zamiast LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Zapisuj tekstury z Szafy na dysk domyślnie jako PNG zamiast TGA" tool_tip="Używane w oknie podglądu tekstur oraz menu kontekstowym Szafy." name="FSTextureDefaultSaveAsFormat" />
|
||||
<text name="text_box_pivotpoint">
|
||||
Punkt obracania osi
|
||||
</text>
|
||||
<check_box label="Oś na poz. gł. primy" tool_tip="Domyślne zachowanie to pokazywanie osi na środku masy zbioru części. Gdy włączysz tą opcję, to będzie ona pokazywana zamiast tego na głównej primie." name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Poz. X" name="X pos" />
|
||||
<spinner label="Poz. Y" name="Y pos" />
|
||||
<spinner label="Poz. Z" name="Z pos" />
|
||||
<check_box label="Wart. procentowo" tool_tip="Domyślne ustawienie jako procenty, a każda oś na 50" name="FSPivotPercToggle" />
|
||||
</panel>
|
||||
<panel label="Buduj 2" name="BuildTab2">
|
||||
<check_box label="Używaj CTRL+myszki, aby chwytać obiekty i manipulować nimi" tool_tip="Gdy zaznaczysz tą opcję, to będziesz w stanie chwytać i przesuwać obiekty za pomocą myszki oraz klawisza CTRL." name="FSEnableGrab" />
|
||||
<check_box label="Przesuwaj / skaluj tekstury budując, gdy trzymany jest przycisk myszy oraz klawisz caps-lock" tool_tip="Gdy zaznaczysz tą opcję, to będziesz mógł/mogła przesuwać lub skalować strony tekstur trzymając przycisk myszy (wraz z klawiszem caps-lock) w trybie budowania. Ta funkcja jest eksperymentalna i powinna być używana ostrożnie." name="FSExperimentalDragTexture" />
|
||||
<check_box label="Podgląd animacji na własnym awatarze podczas przesyłania ich na serwer" tool_tip="Gdy zaznaczysz tą opcję, to będziesz w stanie oglądać animacje na swoim własnym awatarze podczas przesyłania ich na serwer" name="FSUploadAnimationOnOwnAvatar" />
|
||||
|
|
@ -218,6 +202,31 @@
|
|||
<check_box label="Sortuj miejsca dodatków w sekcjach menu "Dołącz do" alfabetycznie (wymaga restartu)" tool_tip="Jeśli ta opcja jest włączona, to lista miejsc dla doczepienia dodatków pojawiająca się w menusach "Dołącz do" będzie posortowana alfabetycznie" name="FSSortAttachmentSpotsAlphabetically" />
|
||||
<check_box label="Nowy panel tekstur [APP_NAME] w panelu budowania (wymaga restartu)" tool_tip="Gdy zaznaczysz tą opcję, to narzędzia do edycji tekstur będą korzystać z udoskonalonego panelu [APP_NAME] i pozwolą na edycję tekstur BlinnPhong oraz PBR." name="FSUseNewTexturePanel" />
|
||||
</panel>
|
||||
<panel label="Edytor skryptów" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font" width="150">
|
||||
Czcionka edytora skryptów:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Nazwa czcionki używanej w edytorze skryptów LSL" />
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Rozmiar czcionki używanej w edytorze skryptów LSL">
|
||||
<combo_item name="Small" label="Mała"/>
|
||||
<combo_item name="Medium" label="Średnia"/>
|
||||
<combo_item name="Large" label="Duża"/>
|
||||
</combo_box>
|
||||
<check_box label="Zapisuj skrypty edytowane w Szafie jako Mono" tool_tip="Gdy zaznaczone, to wszystkie skrypty edytowane w Szafie są zapisywane jako Mono zamiast LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Włącz preprocesor LSL" tool_tip="Preprocesor LSL będzie aktywny, gdy ta opcja zostanie zaznaczona." name="preproc_checkbox" />
|
||||
<check_box label="Optymalizator" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor będzie LSL optymalizować miejsce zajmowane przez skrypty." name="preprocoptimizer_checkbox" />
|
||||
<check_box label="Instrukcja switch()" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z instrukcji switch() do sterowania przepływem skryptu." name="preprocswitch_checkbox" />
|
||||
<check_box label="Wolne listy" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z rozszerzeń składni do obsługi list." name="preproclazy_checkbox" />
|
||||
<check_box label="#includes z twardego dysku" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli odnosić się instrukcjom #include (dołączania) do plików na Twoim dysku twardym." name="preprocinclude_checkbox" />
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Ścieżka dołączania preprocesora:
|
||||
</text>
|
||||
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetPreprocInclude" />
|
||||
<text name="externaleditor_textbox">
|
||||
Zewnętrzny edytor:
|
||||
</text>
|
||||
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Nowe pliki" name="UploadsTab">
|
||||
<text name="title">
|
||||
Obecne lokalizacje dla nowych plików:
|
||||
|
|
|
|||
|
|
@ -6576,6 +6576,9 @@ Twoja aktualna pozycja: [AVATAR_POS]
|
|||
<string name="Worn Items">
|
||||
Założone
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Ulubione
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
Osoba z grupy o imieniu [NAME]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
Нажатие Enter при прикреплении аватара
|
||||
</text>
|
||||
<combo_box name="attach_combo" width="350">
|
||||
<combo_box.item label="Добавляет прикрепление (рекомендуется)" name="0"/>
|
||||
<combo_box.item label="Заменяет (удаляет прикрепление в этой точке)" name="1"/>
|
||||
<combo_box.item label="Добавляет прикрепление (рекомендуется)" name="1"/>
|
||||
<combo_box.item label="Заменяет (удаляет прикрепление в этой точке)" name="0"/>
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -157,44 +157,14 @@
|
|||
<text name="build_item_add_disp_rect_txt">
|
||||
Содержимое: [ITEM]
|
||||
</text>
|
||||
<text name="text_box_pivotpoint">
|
||||
Точка опоры
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
|
||||
Drop a script here.
|
||||
</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">
|
||||
Содержимое: [SCRIPT]
|
||||
</text>
|
||||
<check_box label="Оси на корне" tool_tip="По умолчанию оси отображаются в центре объедененных примов. Если включена эта опция, то оси отображаются в центре корневого прима" name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Поз. X" name="X pos" />
|
||||
<spinner label="Поз. Y" name="Y pos" />
|
||||
<spinner label="Поз. Z" name="Z pos" />
|
||||
<check_box label="В процентах" tool_tip="По умолчанию проценты установлены на каждую ось по 50" name="FSPivotPercToggle" />
|
||||
<button label="Разрешения создания по умолчанию" name="fs_default_creation_permissions" />
|
||||
<text name="text_box_scripting_font">
|
||||
Шрифт скриптов:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Имя шрифта используемого в редакторе LSL-скриптов">
|
||||
<combo_item name="Monospace" label="Моноширный"/>
|
||||
<combo_item name="Scripting" label="Скриптовый"/>
|
||||
</combo_box>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Размер шрифта используемого в редакторе LSL-скриптов">
|
||||
<combo_item name="Monospace" label="Моноширный"/>
|
||||
<combo_item name="Scripting" label="Скриптовый"/>
|
||||
<combo_item name="Small" label="Мелкий"/>
|
||||
<combo_item name="Medium" label="Средний"/>
|
||||
<combo_item name="Large" label="Крупный"/>
|
||||
</combo_box>
|
||||
<check_box label="Включить процессор предварительной обработки LSL" tool_tip="Включить процессор предварительной обработки LSL." name="preproc_checkbox" />
|
||||
<check_box label="Оптимизатор" tool_tip="Препроцессор LSL позволит оптимизировать пространство, используемое скриптами за счет чтения." name="preprocoptimizer_checkbox" />
|
||||
<check_box label="Инструкция switch()" left_delta="110" width="150" tool_tip="Препроцессор LSL позволит использовать switch() statement для контроля потока скриптов" name="preprocswitch_checkbox" />
|
||||
<check_box label="Ленивые списки" left_delta="145" width="150" tool_tip="Препроцессор LSL позволит использовать расширений синтаксис для обработки списка." name="preproclazy_checkbox" />
|
||||
<check_box label="#includes с диска" left_delta="125" tool_tip="Препроцессор LSL разрешает использовать #include для ссылок на файлы на локальном диске." name="preprocinclude_checkbox" />
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Путь для препроцессора:
|
||||
</text>
|
||||
<button label="Просмотреть" label_selected="Просмотреть" name="SetPreprocInclude" />
|
||||
<text name="externaleditor_textbox">
|
||||
Внешний Редактор:
|
||||
</text>
|
||||
<button label="Просмотреть" label_selected="Просмотреть" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="Строить 2" name="BuildTab2">
|
||||
<check_box label="Включить подсветку выбранного объекта" tool_tip="Включить подсветку выбранного объекта" name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="Высветить границы выбранного участка" name="RenderParcelSelection"/>
|
||||
<check_box label="Показать границу до максимальной высоты строительства" name="FSRenderParcelSelectionToMaxBuildHeight"/>
|
||||
|
|
@ -214,8 +184,17 @@
|
|||
объектов
|
||||
</text>
|
||||
<check_box label="Установить старое поведение для "Установить объект на продажу"" tool_tip="Установить старое поведение для "Установить объект на продажу"" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="Сохранять скрипты редактируемые в инвенторе как Моно" tool_tip="Сохранять скрипты редактируемые в инвенторе как Моно" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Сохранить текстуры из инвентаря на диск в виде PNG вместо TGA" tool_tip="Сохранить текстуры из инвентаря на диск в виде PNG вместо TGA" name="FSTextureDefaultSaveAsFormat" />
|
||||
<text name="text_box_pivotpoint">
|
||||
Точка опоры
|
||||
</text>
|
||||
<check_box label="Оси на корне" tool_tip="По умолчанию оси отображаются в центре объедененных примов. Если включена эта опция, то оси отображаются в центре корневого прима" name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="Поз. X" name="X pos" />
|
||||
<spinner label="Поз. Y" name="Y pos" />
|
||||
<spinner label="Поз. Z" name="Z pos" />
|
||||
<check_box label="В процентах" tool_tip="По умолчанию проценты установлены на каждую ось по 50" name="FSPivotPercToggle" />
|
||||
</panel>
|
||||
<panel label="Строить 2" name="BuildTab2">
|
||||
<check_box label="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" tool_tip="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" name="FSEnableGrab" />
|
||||
<check_box label="Масштабирование при нажатии (вместе с caps lock) для текстур при строительстве" tool_tip="При включении, позволяет тянуть при нажатии или масштаб при нажатии (вместе с caps lock) для текстур в режиме строительства. Эта функция эксперементальная и ее следует использовать с осторожностью." name="FSExperimentalDragTexture" />
|
||||
<check_box label="Предварительный просмотр анимации на собственном аватара во время загрузки" tool_tip="Предварительный просмотр анимации на собственном аватара во время загрузки" name="FSUploadAnimationOnOwnAvatar" />
|
||||
|
|
@ -224,6 +203,36 @@
|
|||
<check_box label="Сортировка прикреплений в "Прикрепить к" меню по алфавиту (нужна перезагрузка)" tool_tip="Если этот параметр включен, список прикреплений в "Прикрепить к" меню будут отсортированы по алфавиту" name="FSSortAttachmentSpotsAlphabetically"/>
|
||||
<check_box label="Новая панель текстур [APP_NAME] в Инструментах (нужна перезагрузка)" tool_tip="Если этот параметр включен, инструменты редактирования текстур будут использовать усовершенствованный рабочий процесс [APP_NAME] и позволят редактировать БлиннФонг и PBR-текстуры." name="FSUseNewTexturePanel"/>
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font">
|
||||
Шрифт скриптов:
|
||||
</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="Имя шрифта используемого в редакторе LSL-скриптов">
|
||||
<combo_item name="Monospace" label="Моноширный"/>
|
||||
<combo_item name="Scripting" label="Скриптовый"/>
|
||||
</combo_box>
|
||||
<combo_box name="FSScriptingFontSize" tool_tip="Размер шрифта используемого в редакторе LSL-скриптов">
|
||||
<combo_item name="Monospace" label="Моноширный"/>
|
||||
<combo_item name="Scripting" label="Скриптовый"/>
|
||||
<combo_item name="Small" label="Мелкий"/>
|
||||
<combo_item name="Medium" label="Средний"/>
|
||||
<combo_item name="Large" label="Крупный"/>
|
||||
</combo_box>
|
||||
<check_box label="Сохранять скрипты редактируемые в инвенторе как Моно" tool_tip="Сохранять скрипты редактируемые в инвенторе как Моно" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="Включить процессор предварительной обработки LSL" tool_tip="Включить процессор предварительной обработки LSL." name="preproc_checkbox" />
|
||||
<check_box label="Оптимизатор" tool_tip="Препроцессор LSL позволит оптимизировать пространство, используемое скриптами за счет чтения." name="preprocoptimizer_checkbox" />
|
||||
<check_box label="Инструкция switch()" left_delta="110" width="150" tool_tip="Препроцессор LSL позволит использовать switch() statement для контроля потока скриптов" name="preprocswitch_checkbox" />
|
||||
<check_box label="Ленивые списки" left_delta="145" width="150" tool_tip="Препроцессор LSL позволит использовать расширений синтаксис для обработки списка." name="preproclazy_checkbox" />
|
||||
<check_box label="#includes с диска" left_delta="125" tool_tip="Препроцессор LSL разрешает использовать #include для ссылок на файлы на локальном диске." name="preprocinclude_checkbox" />
|
||||
<text name="lslpreprocinclude_textbox">
|
||||
Путь для препроцессора:
|
||||
</text>
|
||||
<button label="Просмотреть" label_selected="Просмотреть" name="SetPreprocInclude" />
|
||||
<text name="externaleditor_textbox">
|
||||
Внешний Редактор:
|
||||
</text>
|
||||
<button label="Просмотреть" label_selected="Просмотреть" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<!--Uploads-->
|
||||
<panel label="Загрузки" name="UploadsTab">
|
||||
<text name="title">
|
||||
|
|
|
|||
|
|
@ -6821,6 +6821,9 @@ ID объекта: [INSPECTING_KEY]
|
|||
<string name="Worn Items">
|
||||
Надетые предметы
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
Избранные
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
Член группы по имени [NAME]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
在化身附件上按下“Enter”鍵
|
||||
</text>
|
||||
<combo_box name="attach_combo">
|
||||
<combo_box.item label="添加附件(推薦)" name="0" />
|
||||
<combo_box.item label="穿上(替換附著點上的物件)" name="1" />
|
||||
<combo_box.item label="添加附件(推薦)" name="1" />
|
||||
<combo_box.item label="穿上(替換附著點上的物件)" name="0" />
|
||||
</combo_box>
|
||||
</floater>
|
||||
|
|
@ -110,13 +110,41 @@
|
|||
<check_box name="FSBuildPrefs_EmbedItem" label="將物件嵌入新的元素" />
|
||||
<fs_embedded_item_drop_target name="embed_item" tool_tip="將物件拖到此處">將物件拖到此處</fs_embedded_item_drop_target>
|
||||
<text name="build_item_add_disp_rect_txt">當前: [ITEM]</text>
|
||||
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
|
||||
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">Drop a script here.</fs_embedded_item_drop_target>
|
||||
<text name="custom_script_disp_rect_txt">當前: [SCRIPT]</text>
|
||||
<button label="預設建立權限" name="fs_default_creation_permissions" />
|
||||
<check_box label="高亮選定元素邊框" tool_tip="取消選擇將不顯示黃色/藍色邊框,當選擇大量元素時,可提高效能。" name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="顯示所選地塊邊界" name="RenderParcelSelection" />
|
||||
<check_box label="顯示建造的最大高度限制" name="FSRenderParcelSelectionToMaxBuildHeight" />
|
||||
<check_box label="選擇距離限制(米):" name="LimitSelectDistance" width="140" />
|
||||
<spinner name="MaxSelectDistance" tool_tip="選擇的最大允許距離(從化身出發到,單位:米) [預設值:128.000]" />
|
||||
<check_box label="拖動距離限制(米):" name="LimitDragDistance" width="140" />
|
||||
<spinner name="MaxDragDistance" tool_tip="單次移動的最大允許距離(從起始點,單位:米) [預設值:48.000]" />
|
||||
<text width="120" name="RotationStepText1">旋轉限制為以下倍數:</text>
|
||||
<spinner name="RotationStep" width="45" tool_tip="透過旋轉工具進行的所有旋轉都將約束為指定數的倍數(預設值:1.0)" />
|
||||
<text name="RotationStepText2">度,如果「對齊到網格」未啟用</text>
|
||||
<check_box width="250" name="FSUnlinkConfirmEnabled" label="如果集合中至少包含以下數量,則刪除聯結時確認" />
|
||||
<text name="MinObjectsForUnlinkConfirmText2">個物件</text>
|
||||
<check_box label="在「設定此物件出售」時使用舊功能" tool_tip="啟用此選項將直接儲存物件的銷售資訊,而不需要確認。" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="將紋理儲存到硬碟上的 PNG 格式而不是 TGA" tool_tip="用於紋理預覽和庫存上下文選單。" name="FSTextureDefaultSaveAsFormat" />
|
||||
<text name="text_box_pivotpoint">軸心點</text>
|
||||
<check_box label="根元素軸" tool_tip="預設情況下,軸位於聯結集的重心位置。 如果啟用,則軸將位於聯結集的子元素上。" name="FSBuildPrefsActualRoot_toggle" />
|
||||
<spinner label="X 軸" name="X pos" />
|
||||
<spinner label="Y 軸" name="Y pos" />
|
||||
<spinner label="Z 軸" name="Z pos" />
|
||||
<check_box label="百分比" tool_tip="預設情況下,所有值都是百分比,每個軸都固定為 50%" name="FSPivotPercToggle" />
|
||||
<button label="預設建立權限" name="fs_default_creation_permissions" />
|
||||
</panel>
|
||||
<panel label="建造 2" name="BuildTab2">
|
||||
<check_box label="使用 Ctrl+單擊來捕獲和移動物件" tool_tip="勾選此項,您可以使用滑鼠和 Ctrl 鍵來捕獲和移動物件。" name="FSEnableGrab" />
|
||||
<check_box label="在建造模式下按住 Shift+單擊直接拖動紋理" tool_tip="啟用此選項後,您可以在建造模式下直接將紋理拖放到物件的表面上。" name="FSExperimentalDragTexture" />
|
||||
<check_box label="上傳到伺服器時在自己的化身上預覽動畫" tool_tip="如果啟用,您可以在上傳到伺服器時用自己的化身預覽動畫。" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="始終展開動畫預覽的詳細資訊" tool_tip="動畫預覽懸浮窗中的詳細資訊預設展開。" name="FSAnimationPreviewExpanded" />
|
||||
<check_box label="為指令碼啟用詳細資訊" tool_tip="啟用後,將向指令碼基本資訊中新增對創造者有用的詳細資訊。" name="FSScriptInfoExtended" />
|
||||
<check_box label="按字母順序排序「附著到」選單中的附著點(需要重新啟動)" tool_tip="如果啟用此選項,「附著到」選單中的附件點列表將按字母順序排序。" name="FSSortAttachmentSpotsAlphabetically" />
|
||||
<check_box label="在工具視窗中使用新的[APP_NAME]紋理面板(需要重新啟動)" tool_tip="如果啟用,紋理編輯工具將使用改進的[APP_NAME]工作流,並允許編輯BlinnPhong和PBR材質" name="FSUseNewTexturePanel" />
|
||||
</panel>
|
||||
<panel label="Script Editor" name="BuildTabScriptEditor">
|
||||
<text name="text_box_scripting_font" width="155">指令碼編輯器字型:</text>
|
||||
<combo_box name="FSScriptingFontName" tool_tip="LSL 指令碼編輯器中使用的字型名稱">
|
||||
<combo_item name="Monospace" label="等寬" />
|
||||
|
|
@ -131,6 +159,7 @@
|
|||
<combo_item name="Medium" label="中" />
|
||||
<combo_item name="Large" label="大" />
|
||||
</combo_box>
|
||||
<check_box label="將編輯的指令碼儲存到 Mono 中" tool_tip="啟用此選項將直接將儲存在庫存中的指令碼儲存為 Mono,而不是 LSL。" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="啟用 LSL 前處理器" tool_tip="勾選此項將啟用 LSL 前處理器。" name="preproc_checkbox" />
|
||||
<check_box label="最佳化指令碼" tool_tip="勾選此項,LSL 前處理器將最佳化指令碼所佔用的空間。" name="preprocoptimizer_checkbox" />
|
||||
<check_box label="switch() 語句" tool_tip="勾選後,LSL 前處理器將允許使用 switch() 語句進行指令碼流程控制。" name="preprocswitch_checkbox" />
|
||||
|
|
@ -141,30 +170,6 @@
|
|||
<text name="externaleditor_textbox">外部編輯器:</text>
|
||||
<button label="瀏覽" label_selected="瀏覽" name="SetExternalEditor" />
|
||||
</panel>
|
||||
<panel label="建造 2" name="BuildTab2">
|
||||
<check_box label="高亮選定元素邊框" tool_tip="取消選擇將不顯示黃色/藍色邊框,當選擇大量元素時,可提高效能。" name="FSBuildPrefsRenderHighlight_toggle" />
|
||||
<check_box label="顯示所選地塊邊界" name="RenderParcelSelection" />
|
||||
<check_box label="顯示建造的最大高度限制" name="FSRenderParcelSelectionToMaxBuildHeight" />
|
||||
<check_box label="選擇距離限制(米):" name="LimitSelectDistance" />
|
||||
<spinner name="MaxSelectDistance" tool_tip="選擇的最大允許距離(從化身出發到,單位:米) [預設值:128.000]" />
|
||||
<check_box label="拖動距離限制(米):" name="LimitDragDistance" />
|
||||
<spinner name="MaxDragDistance" tool_tip="單次移動的最大允許距離(從起始點,單位:米) [預設值:48.000]" />
|
||||
<text name="RotationStepText1">旋轉限制為以下倍數:</text>
|
||||
<spinner name="RotationStep" width="45" tool_tip="透過旋轉工具進行的所有旋轉都將約束為指定數的倍數(預設值:1.0)" />
|
||||
<text name="RotationStepText2">度,如果「對齊到網格」未啟用</text>
|
||||
<check_box name="FSUnlinkConfirmEnabled" label="如果集合中至少包含以下數量,則刪除聯結時確認" />
|
||||
<text name="MinObjectsForUnlinkConfirmText2">個物件</text>
|
||||
<check_box label="使用 Ctrl+單擊來捕獲和移動物件" tool_tip="勾選此項,您可以使用滑鼠和 Ctrl 鍵來捕獲和移動物件。" name="FSEnableGrab" />
|
||||
<check_box label="在建造模式下按住 Shift+單擊直接拖動紋理" tool_tip="啟用此選項後,您可以在建造模式下直接將紋理拖放到物件的表面上。" name="FSExperimentalDragTexture" />
|
||||
<check_box label="在「設定此物件出售」時使用舊功能" tool_tip="啟用此選項將直接儲存物件的銷售資訊,而不需要確認。" name="FSCommitForSaleOnChange_toggle" />
|
||||
<check_box label="將編輯的指令碼儲存到 Mono 中" tool_tip="啟用此選項將直接將儲存在庫存中的指令碼儲存為 Mono,而不是 LSL。" name="FSSaveInventoryScriptsAsMono_toggle" />
|
||||
<check_box label="將紋理儲存到硬碟上的 PNG 格式而不是 TGA" tool_tip="用於紋理預覽和庫存上下文選單。" name="FSTextureDefaultSaveAsFormat" />
|
||||
<check_box label="上傳到伺服器時在自己的化身上預覽動畫" tool_tip="如果啟用,您可以在上傳到伺服器時用自己的化身預覽動畫。" name="FSUploadAnimationOnOwnAvatar" />
|
||||
<check_box label="始終展開動畫預覽的詳細資訊" tool_tip="動畫預覽懸浮窗中的詳細資訊預設展開。" name="FSAnimationPreviewExpanded" />
|
||||
<check_box label="為指令碼啟用詳細資訊" tool_tip="啟用後,將向指令碼基本資訊中新增對創造者有用的詳細資訊。" name="FSScriptInfoExtended" />
|
||||
<check_box label="按字母順序排序「附著到」選單中的附著點(需要重新啟動)" tool_tip="如果啟用此選項,「附著到」選單中的附件點列表將按字母順序排序。" name="FSSortAttachmentSpotsAlphabetically" />
|
||||
<check_box label="在工具視窗中使用新的[APP_NAME]紋理面板(需要重新啟動)" tool_tip="如果啟用,紋理編輯工具將使用改進的[APP_NAME]工作流,並允許編輯BlinnPhong和PBR材質" name="FSUseNewTexturePanel" />
|
||||
</panel>
|
||||
<panel label="上傳" name="UploadsTab">
|
||||
<text name="title">上傳的目標檔案夾:</text>
|
||||
<text name="title_images">圖像</text>
|
||||
|
|
|
|||
|
|
@ -7422,6 +7422,9 @@ SecondLife.com網站的「支援」部分
|
|||
<string name="Worn Items">
|
||||
已穿物件
|
||||
</string>
|
||||
<string name="Favorites">
|
||||
收藏
|
||||
</string>
|
||||
<string name="InvOfferGroupNoticeName">
|
||||
群組成員名 [NAME]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@
|
|||
bevel_style="none"
|
||||
follows="all"
|
||||
label="Favorites"
|
||||
help_topic="recent_inventory_tab"
|
||||
help_topic="favorites_inventory_tab"
|
||||
layout="topleft"
|
||||
name="Favorites"
|
||||
show_item_link_overlays="true"
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@
|
|||
follows="all"
|
||||
height="338"
|
||||
label="Favorites"
|
||||
help_topic="recent_inventory_tab"
|
||||
help_topic="favorites_inventory_tab"
|
||||
layout="topleft"
|
||||
name="Favorites"
|
||||
show_item_link_overlays="true"
|
||||
|
|
|
|||
|
|
@ -871,7 +871,7 @@
|
|||
bevel_style="in"
|
||||
follows="all"
|
||||
label="Favorites"
|
||||
help_topic="recent_inventory_tab"
|
||||
help_topic="favorites_inventory_tab"
|
||||
layout="topleft"
|
||||
name="Favorites"
|
||||
show_item_link_overlays="true">
|
||||
|
|
|
|||
Loading…
Reference in New Issue