Ansariel 2025-04-03 23:07:22 +02:00
commit 01831e462e
21 changed files with 244 additions and 67 deletions

View File

@ -1330,9 +1330,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>47af788cc447a64e311e3a65b74a9cf9</string>
<string>478f6e900ac5b3319dd2aa89fbdddd0b</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-8.4.1-darwin64-233220201.tar.bz2</string>
<string>file:///opt/firestorm/kdu-8.5-darwin64-250921045.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -1342,9 +1342,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>b464a547d5bedcc72e9173d860f40656</string>
<string>cceee36d06464806e9ecf75f24dd6530</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-8.4.1-linux64-233220158.tar.bz2</string>
<string>file:///opt/firestorm/kdu-8.5-linux64-250921045.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
@ -1354,9 +1354,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>526965ad83ad9ee355b6596f489d82d9</string>
<string>f574412faea823a0e7dcc4a90dced185</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.4.1-windows-233220159.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.5-windows64-250921045.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>

View File

@ -428,6 +428,8 @@ void ColladaExportFloater::CacheReadResponder::completed(bool success)
// For other formats we need to decode first
if (mFormattedImage->updateData() && ( (mFormattedImage->getWidth() * mFormattedImage->getHeight() * mFormattedImage->getComponents()) != 0 ) )
{
mFormattedImage->setDiscardLevel(0); // <FS/> [FIRE-35292] Fix for textures getting downscaled and compressed
LLPointer<LLImageRaw> raw = new LLImageRaw;
raw->resize(mFormattedImage->getWidth(), mFormattedImage->getHeight(), mFormattedImage->getComponents());
@ -503,7 +505,15 @@ void ColladaExportFloater::CacheReadResponder::saveTexturesWorker(void* data)
std::string name = gDirUtilp->getDirName(me->mFilename);
name += gDirUtilp->getDirDelimiter() + me->mTexturesToSave[id];
CacheReadResponder* responder = new CacheReadResponder(id, img, name, img_type);
LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
// <FS:minerjr> [FIRE-35292] Fix for textures getting downscaled and compressed
//LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
// The above line hard coded the size of data to read from the cached version of the texture as 999999,
// where now we will calcuate the correct value based upon the texture's full width, height and # of components (3=RGB, 4=RGBA) and
// the discard level (0)). There is a choice to change the rate, but we seem to use the value of 1/8 compression level
S32 texture_size = LLImageJ2C::calcDataSizeJ2C(imagep->getFullWidth(), imagep->getFullHeight(), imagep->getComponents(), 0);// , F32 rate) rate = const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
// Use calculated texture_size (from LLTextureFetch::createRequest see "else if (w*h*c > 0)" statement for more info)
LLAppViewer::getTextureCache()->readFromCache(id, 0, texture_size, responder);
// </FS:minerjr> [FIRE-35292]
me->mTexturesToSave.erase(id);
me->updateTitleProgress();
me->mTimer.reset();

View File

@ -690,7 +690,14 @@ void FSFloaterObjectExport::fetchTextureFromCache(LLViewerFetchedTexture* src_vi
const LLUUID& texture_id = src_vi->getID();
LLImageJ2C* mFormattedImage = new LLImageJ2C;
FSFloaterObjectExport::FSExportCacheReadResponder* responder = new FSFloaterObjectExport::FSExportCacheReadResponder(texture_id, mFormattedImage, this);
LLAppViewer::getTextureCache()->readFromCache(texture_id, 0, 999999, responder);
// <FS:minerjr> [FIRE-35292] Fix for textures getting downscaled and compressed
//LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
// The above line hard coded the size of data to read from the cached version of the texture as 999999,
// where now we will calcuate the correct value based upon the texture's full width, height and # of components (3=RGB, 4=RGBA) and
// the discard level (0)). There is a choice to change the rate, but we seem to use the value of 1/8 compression level
S32 texture_size = LLImageJ2C::calcDataSizeJ2C(src_vi->getFullWidth(), src_vi->getFullHeight(), src_vi->getComponents(), 0);// , F32 rate) rate = const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
// Use calculated texture_size (from LLTextureFetch::createRequest see "else if (w*h*c > 0)" statement for more info)
LLAppViewer::getTextureCache()->readFromCache(texture_id, 0, texture_size, responder);
LL_DEBUGS("export") << "Fetching " << texture_id << " from the TextureCache" << LL_ENDL;
}

View File

@ -220,7 +220,7 @@ S32 LLAgentBenefits::getPicksLimit() const
}
else
{
constexpr S32 MAX_OPENSIM_PICKS_FALLBACK = 20; // [FIRE-35276] Freeze on OpenSim (default agreed with Ubit Umarov) (originally by Haklezz)
constexpr S32 MAX_OPENSIM_PICKS_FALLBACK = 20; // [FIRE-35276] Freeze on OpenSim (default agreed with Ubit Umarov) (originally by Hecklezz)
S32 max_profile_picks = MAX_OPENSIM_PICKS_FALLBACK;
@ -234,7 +234,7 @@ S32 LLAgentBenefits::getPicksLimit() const
}
}
return max_profile_picks;
}
}
// </FS:Ansariel>
}

View File

@ -91,6 +91,8 @@
#include "fscommon.h"
#include "llstartup.h"
#include "llviewernetwork.h" // <FS/> Access to GridManager
static LLDefaultChildRegistry::Register<LLNetMap> r1("net_map");
constexpr F32 LLNetMap::MAP_SCALE_MIN = 32;
@ -454,26 +456,75 @@ void LLNetMap::draw()
gGL.color4f(1.f, 0.5f, 0.5f, 1.f);
}
// Draw using texture.
gGL.getTexUnit(0)->bind(regionp->getLand().getSTexture());
gGL.begin(LLRender::TRIANGLES);
// <FS> [FIRE-35147] OpenSim regions can be greater than 256x256 and need to be accounted for
if (!LLGridManager::getInstance()->isInSecondLife())
{
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(left, top);
gGL.texCoord2f(0.f, 0.f);
gGL.vertex2f(left, bottom);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(right, bottom);
// Fixes OpenSim race condition on grid change not having updated Grid Info yet
bool isAgentTeleporting = gAgent.getTeleportState() != LLAgent::TELEPORT_NONE;
if (!isAgentTeleporting)
{
const LLViewerRegion::tex_matrix_t& tiles(regionp->getWorldMapTiles());
for (S32 i(0), scaled_width((S32)(real_width / region_width)), square_width(scaled_width * scaled_width);
i < square_width; ++i)
{
const F32 y = (F32)(i / scaled_width);
const F32 x = (F32)(i - y * scaled_width);
const F32 local_left(left + x * mScale);
const F32 local_right(local_left + mScale);
const F32 local_bottom(bottom + y * mScale);
const F32 local_top(local_bottom + mScale);
LLPointer<LLViewerTexture> pRegionImage = tiles[(U64)(x * scaled_width + y)];
if (pRegionImage.isNull())
continue;
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(left, top);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(right, bottom);
gGL.texCoord2f(1.f, 1.f);
gGL.vertex2f(right, top);
if (pRegionImage->hasGLTexture())
{
gGL.getTexUnit(0)->bind(pRegionImage);
gGL.begin(LLRender::TRIANGLES);
{
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(local_left, local_top);
gGL.texCoord2f(0.f, 0.f);
gGL.vertex2f(local_left, local_bottom);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(local_right, local_bottom);
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(local_left, local_top);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(local_right, local_bottom);
gGL.texCoord2f(1.f, 1.f);
gGL.vertex2f(local_right, local_top);
}
gGL.end();
}
pRegionImage->setBoostLevel(LLViewerTexture::BOOST_MAP_VISIBLE);
}
}
}
gGL.end();
// </FS>
else
{
// Draw using texture.
gGL.getTexUnit(0)->bind(regionp->getLand().getSTexture());
gGL.begin(LLRender::TRIANGLES);
{
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(left, top);
gGL.texCoord2f(0.f, 0.f);
gGL.vertex2f(left, bottom);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(right, bottom);
gGL.texCoord2f(0.f, 1.f);
gGL.vertex2f(left, top);
gGL.texCoord2f(1.f, 0.f);
gGL.vertex2f(right, bottom);
gGL.texCoord2f(1.f, 1.f);
gGL.vertex2f(right, top);
}
gGL.end();
}
gGL.flush();
}

View File

@ -388,11 +388,11 @@ void LLViewerTextureList::dump()
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
S32 texture_count = 0;
S32 textures_close_to_camera = 0;
S32 image_counts[MAX_DISCARD_LEVEL + 1];
for (S32 index = 0; index <= MAX_DISCARD_LEVEL; index++)
{
image_counts[index] = 0;
}
std::array<S32, MAX_DISCARD_LEVEL * 2 + 2> image_counts{0}; // Double the size for higher discards from textures < 1024 (2048 can make a 7 and 4096 could make an 8)
std::array<S32, 12 * 12> size_counts{0}; // Track the 12 possible sizes (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)
std::array<S32, (MAX_DISCARD_LEVEL * 2 + 2) * 12> discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture)
// Don't Init the buffers with 0's like it's the the 1980's...
// </FS:minerjr> [FIRE-35081]
for (image_list_t::iterator it = mImageList.begin(); it != mImageList.end(); ++it)
{
@ -402,11 +402,11 @@ void LLViewerTextureList::dump()
std::string volume_counts = "";
for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++)
{
face_counts += std::to_string(image->getNumFaces(index)) + " ";
face_counts += std::to_string(image->getNumFaces(index)) + " ";
}
for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++)
{
{
volume_counts += std::to_string(image->getNumVolumes(index)) + " ";
}
// </FS:minerjr> [FIRE-35081]
@ -427,7 +427,12 @@ void LLViewerTextureList::dump()
<< " http://asset.siva.lindenlab.com/" << image->getID() << ".texture"
<< LL_ENDL;
// <FS:minerjr> [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
image_counts[image->getDiscardLevel()] += 1;
image_counts[(image->getDiscardLevel() + 1)] += 1; // Need to add +1 to make up for -1 being a possible value
S32 x_index = (S32)log2(image->getWidth()); // Convert the width into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...)
S32 y_index = (S32)log2(image->getHeight()); // Convert the height into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...)
size_counts[x_index + y_index * 12] += 1; // Add this texture's dimensions to the size count
// Onlyuse the largest size for the texture's discard level(for non-square textures)
discard_counts[(image->getDiscardLevel() + 1) + (y_index > x_index ? y_index : x_index) * (MAX_DISCARD_LEVEL * 2 + 2)] += 1;
texture_count++;
textures_close_to_camera += S32(image->getCloseToCamera());
// </FS:minerjr> [FIRE-35081]
@ -436,10 +441,103 @@ void LLViewerTextureList::dump()
// Add overal texture totals
LL_INFOS() << "Texture Stats: Textures in Close to Camera " << textures_close_to_camera << " of " << texture_count << " : " << LL_ENDL;
for (S32 index = 0; index <= MAX_DISCARD_LEVEL; index++)
// Fix for the -1 discard level as well as higher possible discard levels (for 2048+ size textures)
for (S32 index = 0; index < MAX_DISCARD_LEVEL * 2 + 2; index++)
{
LL_INFOS() << " Discard Level: " << index << " Number of Textures: " << image_counts[index] << LL_ENDL;
LL_INFOS() << " Discard Level: " << (index - 1) << " Number of Textures: " << image_counts[index] << LL_ENDL;
}
// Create a header that for the Sizes
std::string header = "Size ";
for (S32 x = 0; x < 12; x++)
{
std::string newValue = std::to_string((S32)pow(2, x));
header += newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
header += " ";
}
}
// Create a line to break up the header from the content of the table
std::string header_break = "";
for (S32 x = 0; x < header.length(); x++)
{
header_break += "-";
}
LL_INFOS() << header_break << LL_ENDL;
LL_INFOS() << header << LL_ENDL; // Size vs Size counts header
LL_INFOS() << header_break << LL_ENDL;
// Y Axis is the size of the height of the texture
for (S32 y = 0; y < 12; y++)
{
std::string newValue = std::to_string((S32)pow(2, y));
std::string size_count_string = "" + newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
size_count_string += " ";
}
//X Axis is the size of the width of the texture
for (S32 x = 0; x < 12; x++)
{
newValue = std::to_string(size_counts[x + y * 12]);
size_count_string += newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
size_count_string += " ";
}
}
LL_INFOS() << size_count_string << LL_ENDL;
}
LL_INFOS() << header_break << LL_ENDL;
LL_INFOS() << header << LL_ENDL; // Size vs Size counts footer
LL_INFOS() << header_break << LL_ENDL;
LL_INFOS() << "" << LL_ENDL;
// This is the Discard Level Vs Size counts table
header = "Discard: ";
for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++)
{
std::string newValue = std::to_string(x - 1);
header += newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
header += " ";
}
}
LL_INFOS() << header_break << LL_ENDL;
LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts header
LL_INFOS() << header_break << LL_ENDL;
// Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used)
for (S32 y = 0; y < 12; y++)
{
std::string newValue = std::to_string((S32)pow(2, y));
std::string discard_count_string = "" + newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
discard_count_string += " ";
}
// X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=)
for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++)
{
std::string newValue = std::to_string(discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]);
discard_count_string += newValue;
for (S32 tab = 0; tab <= 8 - newValue.length(); tab++)
{
discard_count_string += " ";
}
}
LL_INFOS() << discard_count_string << LL_ENDL;
}
LL_INFOS() << header_break << LL_ENDL;
LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts footer
LL_INFOS() << header_break << LL_ENDL;
// </FS:minerjr> [FIRE-35081]
}

View File

@ -11,6 +11,7 @@
<panel name="logs_panel" label="Log"/>
<panel name="local_mesh_settings_panel" label="Einstellungen">
<check_box name="local_mesh_scale_use_meters" label="Skala in Meter annehmen" tool_tip="Skalierung in cm ignorieren, die in Tools wie Maya verwendet werden." />
<check_box name="checkbox_apply_joint_offsets" label="Gelenk-Versatz anwenden" tool_tip="Jeglichen Gelenk-Versatz im Mesh anwenden; standardmäßig werden diese ignoriert." />
<text name="lod_suffix_label">
LOD-Suffixe:
</text>

View File

@ -114,7 +114,7 @@
width="300"
label="Assume scale is in meters."
tool_tip="Ignore the cm scale units used by tools such as Maya" />
<check_box name="local_mesh_scale_use_meters"
<check_box name="checkbox_apply_joint_offsets"
height="15"
control_name="FSLocalMeshApplyJointOffsets"
follows="top|left"

View File

@ -11,6 +11,7 @@
</panel>
<panel name="local_mesh_settings_panel" label="Paramètres">
<check_box name="local_mesh_scale_use_meters" label="Suppose que l'échelle est en mètres." tool_tip="Ignore les unités d'échelle en cm utilisées par des outils tels que Maya." />
<check_box name="checkbox_apply_joint_offsets" label="Appliquer les décalages de jointures." tool_tip="Appliquer les éventuels décalages de jointures dans le maillage ; par défaut, ces décalages sont ignorés." />
<text name="lod_suffix_label">
Suffixes LOD :
</text>

View File

@ -9,6 +9,7 @@
<menu_item_check label="Afficher le solde de devises" name="FSShowCurrencyBalanceInStatusbar"/>
<menu_item_check label="Afficher les contrôles des médias" name="FSEnableVolumeControls"/>
<menu_item_check label="Afficher le nombre d'images par seconde" name="FSStatusBarShowFPS"/>
<menu_item_check label="Afficher l'indicateur de couleur pour le nombre d'images par seconde" name="FSStatusBarShowFPSColors"/>
<menu_item_check label="Afficher l'indicateur de trafic" name="ShowNetStats"/>
<menu_item_check label="Afficher les coordonnées" name="Coordinates"/>
<menu_item_check label="Afficher les autorisations de la parcelle" name="Parcel Properties"/>

View File

@ -10,6 +10,7 @@
</panel>
<panel name="local_mesh_settings_panel" label="Opcje">
<check_box name="local_mesh_scale_use_meters" label="Załóż, że rozmiar jest w metrach" tool_tip="Zignoruj jednostki skali w cm używane przez narzędzia takie jak Maya." />
<check_box name="checkbox_apply_joint_offsets" label="Przesunięcia stawów" tool_tip="Zastosuj wszelkie przesunięcia (offsety) stawów w meszu, domyślnie są one ignorowane." />
<text name="lod_suffix_label">
Sufiksy LOD:
</text>

View File

@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_navbar_menu">
<menu_item_check label="Pokaż pasek nawigacji i wyszukiwarki" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Pokaż pasek wyszukiwarki" name="ShowSearchTopBar"/>
<menu_item_check label="Pokaż pasek ulubionych" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Pokaż lokalizację" name="ShowMenuBarLocation"/>
<menu_item_check label="Pokaż wersję symulatora" name="FSStatusbarShowSimulatorVersion"/>
<menu_item_check label="Pokaż wyszukiwarkę pozycji w menu" name="FSMenuSearch"/>
<menu_item_check label="Pokaż stan konta" name="FSShowCurrencyBalanceInStatusbar"/>
<menu_item_check label="Pokaż kontrolki mediów" name="FSEnableVolumeControls"/>
<menu_item_check label="Pokaż klatki na sekundę (FPS)" name="FSStatusBarShowFPS"/>
<menu_item_check label="Pokaż wskaźnik ruchu sieciowego" name="ShowNetStats"/>
<menu_item_check label="Pokaż współrzędne" name="Coordinates"/>
<menu_item_check label="Pokaż właściwości działki" name="Parcel Properties"/>
<menu_item_check label="Pasek nawigacji i wyszukiwarki" name="ShowNavbarNavigationPanel"/>
<menu_item_check label="Pasek wyszukiwarki" name="ShowSearchTopBar"/>
<menu_item_check label="Pasek ulubionych" name="ShowNavbarFavoritesPanel"/>
<menu_item_check label="Lokalizacja" name="ShowMenuBarLocation"/>
<menu_item_check label="Wersja symulatora" name="FSStatusbarShowSimulatorVersion"/>
<menu_item_check label="Wyszukiwarka pozycji w menu" name="FSMenuSearch"/>
<menu_item_check label="Stan konta" name="FSShowCurrencyBalanceInStatusbar"/>
<menu_item_check label="Kontrolki mediów" name="FSEnableVolumeControls"/>
<menu_item_check label="Klatki na sekundę (FPS)" name="FSStatusBarShowFPS"/>
<menu_item_check label="Wskaźnik koloru dla klatek na sekundę" name="FSStatusBarShowFPSColors" />
<menu_item_check label="Wskaźnik ruchu sieciowego" name="ShowNetStats"/>
<menu_item_check label="Współrzędne" name="Coordinates"/>
<menu_item_check label="Właściwości działki" name="Parcel Properties"/>
</menu>

View File

@ -17,6 +17,9 @@
<check_box name="local_mesh_scale_use_meters"
label="Предположим, что масштаб указан в метрах."
tool_tip="Игнорируйте единицы измерения масштаба в сантиметрах, используемые такими инструментами, как Maya" />
<check_box name="checkbox_apply_joint_offsets"
label="Применить смещения стыков."
tool_tip="Применить любые смещения стыков в меше, по умолчанию они игнорируются."/>
<text name="lod_suffix_label">
Суффиксы LOD:
</text>

View File

@ -9,6 +9,7 @@
<menu_item_check label="Показать Денежки" name="FSShowCurrencyBalanceInStatusbar"/>
<menu_item_check label="Показать Управление Медиа" name="FSEnableVolumeControls"/>
<menu_item_check label="Показать FPS" name="FSStatusBarShowFPS"/>
<menu_item_check label="Показать цветной индикатор количества кадров в секунду" name="FSStatusBarShowFPSColors"/>
<menu_item_check label="Показать Индикатор трафика" name="ShowNetStats"/>
<menu_item_check label="Показать Координаты" name="Coordinates"/>
<menu_item_check label="Показать Разрешения Участка" name="Parcel Properties"/>

View File

@ -397,7 +397,7 @@
<check_box label="預設使用'可靠'的細節層次" tool_tip="預設使用'可靠'的方法GLOD" name="mesh_upload_default_to_reliable" />
<check_box label="自動預覽權重" tool_tip="自動在預覽中顯示包含綁定資訊的網格的權重" name="mesh_preview_auto_show_weights" />
<text name="lod_suffix_label">
細節層次字尾
細節層次後綴
</text>
<combo_box name="lod_suffix_combo" tool_tip="選擇預設或自訂">
<combo_item name="choose_one">選擇標準或手動編輯...</combo_item>
@ -408,23 +408,23 @@
<text name="suf_lowest_lab">
最低:
</text>
<line_editor name="suf_lowest" tool_tip="標識檔案名中或檔案內模型的最低細節層次的字尾。" />
<line_editor name="suf_lowest" tool_tip="標識檔案名中或檔案內模型的最低細節層次的後綴。" />
<text name="suf_low_lab">
較低:
</text>
<line_editor name="suf_low" tool_tip="標識檔案名中或檔案內模型的較低細節層次的字尾。" />
<line_editor name="suf_low" tool_tip="標識檔案名中或檔案內模型的較低細節層次的後綴。" />
<text name="suf_medium_lab" width="45">
中等:
</text>
<line_editor name="suf_medium" tool_tip="標識檔案名中或檔案內模型的中等細節層次的字尾。" />
<line_editor name="suf_medium" tool_tip="標識檔案名中或檔案內模型的中等細節層次的後綴。" />
<text name="suf_high_lab">
高:
</text>
<line_editor name="suf_high" tool_tip="標識檔案名中或檔案內模型的高細節層次的字尾。" />
<line_editor name="suf_high" tool_tip="標識檔案名中或檔案內模型的高細節層次的後綴。" />
<text name="suf_physics_lab">
物理:
</text>
<line_editor name="suf_physics" tool_tip="標識檔案名中或檔案內模型的物理相關部分的字尾。" />
<line_editor name="suf_physics" tool_tip="標識檔案名中或檔案內模型的物理相關部分的後綴。" />
<text name="mesh_preview_ud_preset_label" width="190">
使用者自訂物理設定:
</text>

View File

@ -397,7 +397,7 @@
</combo_box>
</panel>
</panel>
<panel name="P_Aids" label="輔助工具">
<panel name="P_Aids" label="輔助">
<panel name="PT_Aids">
<text name="T_Aids">
使用者界面輔助

View File

@ -12,10 +12,11 @@
<panel name="logs_panel" label="日誌" />
<panel name="local_mesh_settings_panel" label="設定">
<check_box name="local_mesh_scale_use_meters" label="假定比例為米" tool_tip="忽略在Maya等工具中使用的以公分為單位的縮放。" />
<check_box name="checkbox_apply_joint_offsets" label="套用關節偏移。" tool_tip="套用網格模型中的任何關節偏移,預設情況下這些偏移會被忽略。" />
<text name="lod_suffix_label">
細節層次字尾:
細節層次後綴:
</text>
<combo_box name="lod_suffix_combo" tool_tip="選擇預設值或手動編輯... || SL標準 - 最低=細節層次0最高無字尾 || 遊戲引擎 - Unity/UE5等最低=細節層次3最高=細節層次0。 || 細節層次名稱 - 英文細節層次名稱(最低='LOWEST',最高='HIGH')。">
<combo_box name="lod_suffix_combo" tool_tip="選擇預設值或手動編輯... || SL標準 - 最低=細節層次0最高無後綴 || 遊戲引擎 - Unity/UE5等最低=細節層次3最高=細節層次0。 || 細節層次名稱 - 英文細節層次名稱(最低='LOWEST',最高='HIGH')。">
<combo_item name="choose_one">當前的</combo_item>
<combo_item name="suff_sl">SL標準</combo_item>
<combo_item name="suff_unity">遊戲引擎標準</combo_item>
@ -24,23 +25,23 @@
<text name="suf_lowest_lab">
最低:
</text>
<line_editor name="suf_lowest" tool_tip="辨識檔案名中或檔案內模型的最低細節層次的字尾。" />
<line_editor name="suf_lowest" tool_tip="辨識檔案名中或檔案內模型的最低細節層次的後綴。" />
<text name="suf_low_lab">
較低:
</text>
<line_editor name="suf_low" tool_tip="辨識檔案名中或檔案內模型的較低細節層次的字尾。" />
<line_editor name="suf_low" tool_tip="辨識檔案名中或檔案內模型的較低細節層次的後綴。" />
<text name="suf_medium_lab">
中等:
</text>
<line_editor name="suf_medium" tool_tip="辨識檔案名中或檔案內模型的中等細節層次的字尾。" />
<line_editor name="suf_medium" tool_tip="辨識檔案名中或檔案內模型的中等細節層次的後綴。" />
<text name="suf_high_lab">
較高:
</text>
<line_editor name="suf_high" tool_tip="辨識檔案名中或檔案內模型的較高細節層次的字尾。" />
<line_editor name="suf_high" tool_tip="辨識檔案名中或檔案內模型的較高細節層次的後綴。" />
<text name="suf_physics_lab">
物理:
</text>
<line_editor name="suf_physics" tool_tip="辨識檔案名中或檔案內模型的物理特性的字尾。" />
<line_editor name="suf_physics" tool_tip="辨識檔案名中或檔案內模型的物理特性的後綴。" />
</panel>
</tab_container>
<button name="btn_apply" label="應用" />

View File

@ -8,7 +8,8 @@
<menu_item_check label="在選單中顯示搜尋" name="FSMenuSearch" />
<menu_item_check label="顯示貨幣餘額" name="FSShowCurrencyBalanceInStatusbar" />
<menu_item_check label="顯示音量控制" name="FSEnableVolumeControls" />
<menu_item_check label="顯示每秒圖像數量" name="FSStatusBarShowFPS" />
<menu_item_check label="顯示每秒影格數" name="FSStatusBarShowFPS" />
<menu_item_check label="每秒影格數的顯示顏色" name="FSStatusBarShowFPSColors"/>
<menu_item_check label="顯示網路統計資訊" name="ShowNetStats" />
<menu_item_check label="顯示坐標" name="Coordinates" />
<menu_item_check label="顯示地塊權限" name="Parcel Properties" />

View File

@ -4353,7 +4353,7 @@ https://wiki.firestormviewer.org/fs_voice
記事卡的第[LINE]行沒有有效的「[」狀態字首。
</notification>
<notification name="AOImportNoValidDelimiter">
記事卡的第[LINE]行沒有有效的「[」狀態字尾
記事卡的第[LINE]行沒有有效的「[」狀態後綴
</notification>
<notification name="AOImportStateNameNotFound">
狀態[NAME]不存在。

View File

@ -31,7 +31,7 @@
</text>
<slider label_width="230" label="懸停文字淡出距離(單位:米):" tool_tip="設定懸停文字淡出的距離。" name="FSHudTextFadeDistance" />
<slider label_width="230" label="懸停文字淡出範圍(單位:米):" tool_tip="設定懸停文字從完全可見到完全不可見的淡出範圍。" name="FSHudTextFadeRange" />
<check_box name="FSHudTextUseHoverHighlight" label="突出顯示物件的懸停文字:" tool_tip="當滑鼠懸停於物件上時,物件的懸停文字(若存在)將被突出顯示,文字會置於前景,並停用透明背景。"/>
<check_box name="FSHudTextUseHoverHighlight" label="突出顯示物件的懸停文字:" tool_tip="當滑鼠懸停於物件上時,物件的懸停文字(若存在)將被突出顯示,文字會置於前景,並停用懸停文字的透明度。"/>
<text name="FSHudTextShowBackgroundLabel">
顯示懸停文字背景:
</text>

View File

@ -33,7 +33,7 @@
<button name="stream_toggle_btn" tool_tip="啟動/停止地塊音訊串流" />
<button name="media_toggle_btn" tool_tip="啟動/停止所有媒體(音樂,影片,網站)" />
<button name="volume_btn" tool_tip="總音量控制" />
<text name="FPSText" tool_tip="每秒影格數">
<text name="FPSText" tool_tip="每秒影格數(點擊調整限制)">
200.0
</text>
</panel>