From 28b82cb645e76adadc3dfcd905c84986653e5d2b Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Fri, 29 Jul 2022 13:35:18 +0200 Subject: [PATCH 01/26] Linux SDL2 - Fix main enter/return key not working when capslock or numlock are engaged --- indra/llwindow/llwindowsdl2.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index b19ed9cab2..0651206901 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -1798,7 +1798,11 @@ void LLWindowSDL::gatherInput() // invoke handleUnicodeUTF16 in case the user hits return. // Note that we cannot blindly use handleUnicodeUTF16 for each SDL_KEYDOWN. Doing so will create bogus keyboard input (like % for cursor left). if( mKeyVirtualKey == SDLK_RETURN ) + { + // fix return key not working when capslock or numlock are enabled + mKeyModifiers &= (~(KMOD_NUM | KMOD_CAPS | KMOD_MODE)); handleUnicodeUTF16( mKeyVirtualKey, mKeyModifiers ); + } // part of the fix for SL-13243 if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0) From 264237a0707da3387297eb96719b0a04454ddbd8 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Fri, 29 Jul 2022 14:17:59 +0200 Subject: [PATCH 02/26] Linux SDL2 - Also exclude scrolllock just to be on the safe side --- indra/llwindow/llwindowsdl2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index 0651206901..72a42654f3 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -1799,8 +1799,8 @@ void LLWindowSDL::gatherInput() // Note that we cannot blindly use handleUnicodeUTF16 for each SDL_KEYDOWN. Doing so will create bogus keyboard input (like % for cursor left). if( mKeyVirtualKey == SDLK_RETURN ) { - // fix return key not working when capslock or numlock are enabled - mKeyModifiers &= (~(KMOD_NUM | KMOD_CAPS | KMOD_MODE)); + // fix return key not working when capslock, scrolllock or numlock are enabled + mKeyModifiers &= (~(KMOD_NUM | KMOD_CAPS | KMOD_MODE | KMOD_SCROLL)); handleUnicodeUTF16( mKeyVirtualKey, mKeyModifiers ); } From b232bc4082ec1ad5f9e97e48504901dec3cdbea1 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Sat, 30 Jul 2022 16:37:38 +0200 Subject: [PATCH 03/26] Linux SDL2 - Fix first click when activating the viewer window not coming through --- indra/llwindow/llwindowsdl2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index 72a42654f3..f19e696feb 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -652,6 +652,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B mReallyCapturedCount = 0; SDL_SetHint( SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0" ); + SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1"); if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO ) < 0 ) { From b374ba8c66d2570676a7f95737086ff87153dfe6 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Sat, 30 Jul 2022 17:50:14 +0200 Subject: [PATCH 04/26] Make numpad enter behave the same as regular enter/return --- indra/llwindow/llwindowsdl2.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index f19e696feb..577f00526d 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -1793,6 +1793,12 @@ void LLWindowSDL::gatherInput() mKeyModifiers = event.key.keysym.mod; mInputType = "keydown"; + // treat all possible Enter/Return keys the same + if (mKeyVirtualKey == SDLK_RETURN2 || mKeyVirtualKey == SDLK_KP_ENTER) + { + mKeyVirtualKey = SDLK_RETURN; + } + gKeyboard->handleKeyDown(mKeyVirtualKey, mKeyModifiers ); // Slightly hacky :| To make the viewer honor enter (eg to accept form input) we've to not only send handleKeyDown but also send a @@ -1816,6 +1822,12 @@ void LLWindowSDL::gatherInput() mKeyModifiers = event.key.keysym.mod; mInputType = "keyup"; + // treat all possible Enter/Return keys the same + if (mKeyVirtualKey == SDLK_RETURN2 || mKeyVirtualKey == SDLK_KP_ENTER) + { + mKeyVirtualKey = SDLK_RETURN; + } + if (SDLCheckGrabbyKeys(mKeyVirtualKey, FALSE) == 0) SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243 From b85418417f652e975f81aaa927737fc809f3f313 Mon Sep 17 00:00:00 2001 From: Zi Ree Date: Sat, 30 Jul 2022 22:26:06 +0200 Subject: [PATCH 05/26] Linux SDL2 - Make screen black when window opens so it doesn't look like a crash --- indra/llwindow/llwindowsdl2.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index 577f00526d..32626388e1 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -869,6 +869,10 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B } #endif // LL_X11 + // clear screen to black right at the start so it doesn't look like a crash + glClearColor(0.0f, 0.0f, 0.0f ,1.0f); + glClear(GL_COLOR_BUFFER_BIT); + SDL_GL_SwapWindow(mWindow); SDL_StartTextInput(); //make sure multisampling is disabled by default From c76deb7661450ea4208e9fc6edaf8cdca98102e5 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Sun, 31 Jul 2022 17:42:55 +0200 Subject: [PATCH 06/26] Add object rezz time to the bridge (in extended info mode), clean up its code a little --- ...BEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt | 225 +++++++++--------- indra/newview/fslslbridge.cpp | 19 +- .../newview/skins/default/xui/de/strings.xml | 1 + .../newview/skins/default/xui/en/strings.xml | 1 + .../newview/skins/default/xui/fr/strings.xml | 1 + .../newview/skins/default/xui/pl/strings.xml | 1 + .../newview/skins/default/xui/ru/strings.xml | 1 + 7 files changed, 125 insertions(+), 124 deletions(-) diff --git a/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt b/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt index 9103d4faf3..34e132994d 100644 --- a/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt +++ b/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt @@ -6,160 +6,159 @@ // Global variables and CONSTANTS // - // Bridge platform - string BRIDGE_VERSION = "2.28"; // This should match fslslbridge.cpp - string gLatestURL; - integer gViewerIsFirestorm; - integer gTryHandshakeOnce = TRUE; - key gOwner; +// Bridge platform +string BRIDGE_VERSION = "2.29"; // This should match fslslbridge.cpp +string gLatestURL; +integer gViewerIsFirestorm; +integer gTryHandshakeOnce = TRUE; +key gOwner; - // Teleport - float TP_TARGET_DISTANCE = 1.0; // Distance to target when move to target should stop - integer MAX_TIME_TO_TP = 10; // (seconds) Should be set to 10 for normal use - float TP_TIMER_TICK = 0.05; - vector gMttVector; // Target for llMoveToTarget() teleport - integer gStartTPTimer; +// Teleport +float TP_TARGET_DISTANCE = 1.0; // Distance to target when move to target should stop +integer MAX_TIME_TO_TP = 10; // (seconds) Should be set to 10 for normal use +float TP_TIMER_TICK = 0.05; +vector gMttVector; // Target for llMoveToTarget() teleport +integer gStartTPTimer; - // Movelock - integer gUseMoveLock; - integer gRelockMoveLockAfterMovement; - integer gRelockIsUserMoving; +// Movelock +integer gUseMoveLock; +integer gRelockMoveLockAfterMovement; +integer gRelockIsUserMoving; - // Flight assist - integer gIsFlyingNow; - float FLIGHT_CHECK_NORMAL = 0.5; - float FLIGHT_CHECK_SLOW = 3.0; - float gFlightAssistPushForce; +// Flight assist +integer gIsFlyingNow; +float FLIGHT_CHECK_NORMAL = 0.5; +float FLIGHT_CHECK_SLOW = 3.0; +float gFlightAssistPushForce; - // OpenCollar/LockMeister AO interface - integer gAO_EnabledOC; - integer gAO_EnabledLM; - integer gAO_ChannelOC; - integer AO_CHANNEL_LM = -8888; - integer gAO_ListenerOC; - integer gAO_ListenerLM; - key gAO_CollarKey; +// OpenCollar/LockMeister AO interface +integer gAO_EnabledOC; +integer gAO_EnabledLM; +integer gAO_ChannelOC; +integer AO_CHANNEL_LM = -8888; +integer gAO_ListenerOC; +integer gAO_ListenerLM; +key gAO_CollarKey; // // Bridge platform helper functions // - requestBridgeURL() - { - llReleaseURL(gLatestURL); - gLatestURL = ""; - llRequestSecureURL(); - // llRequestURL(); -- Uncomment this line and comment the previous one for HTTP instead of HTTPS - } +requestBridgeURL() +{ + llReleaseURL(gLatestURL); + gLatestURL = ""; + llRequestSecureURL(); +} - detachBridge() - { - llReleaseURL(gLatestURL); - llRequestPermissions(gOwner, PERMISSION_ATTACH); - } +detachBridge() +{ + llReleaseURL(gLatestURL); + llRequestPermissions(gOwner, PERMISSION_ATTACH); +} // // OpenCollar/LockMeister AO interface functions // - aoListenOC(key collarid, integer enabled) +aoListenOC(key collarid, integer enabled) +{ + llListenRemove(gAO_ListenerOC); + if (enabled) { - llListenRemove(gAO_ListenerOC); - if (enabled) - { - gAO_ListenerOC = llListen(gAO_ChannelOC, "", collarid, ""); - gAO_CollarKey = collarid; - } - else - { - gAO_CollarKey = NULL_KEY; - } + gAO_ListenerOC = llListen(gAO_ChannelOC, "", collarid, ""); + gAO_CollarKey = collarid; } + else + { + gAO_CollarKey = NULL_KEY; + } +} - aoState(string newstate) - { - llOwnerSay(""); - } +aoState(string newstate) +{ + llOwnerSay(""); +} - integrationCheckOC() +integrationCheckOC() +{ + if (gAO_EnabledOC) { - if (gAO_EnabledOC) + if (gAO_ChannelOC != PUBLIC_CHANNEL) { - if (gAO_ChannelOC != PUBLIC_CHANNEL) - { - aoListenOC(NULL_KEY, TRUE); - llWhisper(gAO_ChannelOC, "OpenCollar?"); - } - } - else - { - aoListenOC(NULL_KEY, FALSE); + aoListenOC(NULL_KEY, TRUE); + llWhisper(gAO_ChannelOC, "OpenCollar?"); } } + else + { + aoListenOC(NULL_KEY, FALSE); + } +} - integrationCheckLM() +integrationCheckLM() +{ + if (gAO_EnabledLM) { - if (gAO_EnabledLM) - { - gAO_ListenerLM = llListen(AO_CHANNEL_LM, "", NULL_KEY, ""); - } - else - { - llListenRemove(gAO_ListenerLM); - } + gAO_ListenerLM = llListen(AO_CHANNEL_LM, "", NULL_KEY, ""); } + else + { + llListenRemove(gAO_ListenerLM); + } +} // // Teleport Helper functions // - setTimerEvent2(float time) +setTimerEvent2(float time) +{ + if (time <= 0) { - if (time <= 0) - { - llSensorRemove(); - } - else - { - llSensorRepeat("set-Timer-Event-2", NULL_KEY, AGENT_BY_LEGACY_NAME, 0.001, 0.001, time); - } + llSensorRemove(); } + else + { + llSensorRepeat("set-Timer-Event-2", NULL_KEY, AGENT_BY_LEGACY_NAME, 0.001, 0.001, time); + } +} // // Flight Assist // - flightHover(integer yes) +flightHover(integer yes) +{ + if (yes) { - if (yes) - { - llSetForce((<0.0, 0.0, 9.8> * llGetMass()), 0); - } - else - { - llSetForce(ZERO_VECTOR, 1); - } + llSetForce((<0.0, 0.0, 9.8> * llGetMass()), 0); } + else + { + llSetForce(ZERO_VECTOR, 1); + } +} // // Movelock // - movelockMe(integer lock) +movelockMe(integer lock) +{ + if (lock) { - if (lock) - { - llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05); - llSetVehicleType(VEHICLE_TYPE_SLED); - llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05); - llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05); - } - else - { - llStopMoveToTarget(); - llSetVehicleType(VEHICLE_TYPE_NONE); - } + llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05); + llSetVehicleType(VEHICLE_TYPE_SLED); + llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05); + llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05); } + else + { + llStopMoveToTarget(); + llSetVehicleType(VEHICLE_TYPE_NONE); + } +} // // MAIN @@ -365,8 +364,6 @@ default vector targ = gMttVector - loc; float dist = llVecMag(targ); - // llOwnerSay("current: " + (string)loc + " target: " + (string)targ + " tp distance: " + (string)dist); - // If we are out of time or distance - stop if (dist < TP_TARGET_DISTANCE || llGetUnixTime() - MAX_TIME_TO_TP > gStartTPTimer || gMttVector == loc) { @@ -391,7 +388,6 @@ default http_request(key httpReqID, string Method, string Body) { - // llOwnerSay("Received HTTP " + Method + " message. Command body: " + Body); if (Method == URL_REQUEST_GRANTED) { gLatestURL = Body; @@ -429,11 +425,10 @@ default // Radar-specific command to get high-rez altitude data. // Input is list of UUIDs to query, output is list of UUID:Altitude pairs. - // Get parameters list tUUIDs = llCSV2List(llList2String(commandList, 1)); commandList = []; // Free memory integer tLength = llGetListLength(tUUIDs); - key tUUID; // Key for llGetobjectDetails() + key tUUID; vector tPos; integer i = 0; list responses; @@ -507,9 +502,9 @@ default if (extended) { currentPosition = llGetPos(); - details = llGetObjectDetails(targetkey, ([OBJECT_NAME, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_SCRIPT_MEMORY, OBJECT_SCRIPT_TIME, OBJECT_CHARACTER_TIME, OBJECT_DESC, OBJECT_ROOT, OBJECT_PRIM_COUNT, OBJECT_PRIM_EQUIVALENCE, OBJECT_TOTAL_INVENTORY_COUNT, OBJECT_VELOCITY, OBJECT_POS, OBJECT_ROT, OBJECT_OMEGA, OBJECT_CREATOR, OBJECT_OWNER, OBJECT_LAST_OWNER_ID, OBJECT_REZZER_KEY, OBJECT_GROUP, OBJECT_CREATION_TIME, OBJECT_PATHFINDING_TYPE, OBJECT_ATTACHED_POINT, OBJECT_TEMP_ATTACHED])); + details = llGetObjectDetails(targetkey, ([OBJECT_NAME, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_SCRIPT_MEMORY, OBJECT_SCRIPT_TIME, OBJECT_CHARACTER_TIME, OBJECT_DESC, OBJECT_ROOT, OBJECT_PRIM_COUNT, OBJECT_PRIM_EQUIVALENCE, OBJECT_TOTAL_INVENTORY_COUNT, OBJECT_VELOCITY, OBJECT_POS, OBJECT_ROT, OBJECT_OMEGA, OBJECT_CREATOR, OBJECT_OWNER, OBJECT_LAST_OWNER_ID, OBJECT_REZZER_KEY, OBJECT_GROUP, OBJECT_CREATION_TIME, OBJECT_REZ_TIME, OBJECT_PATHFINDING_TYPE, OBJECT_ATTACHED_POINT, OBJECT_TEMP_ATTACHED])); details = details + [currentPosition, targetkey]; - elements = 26; + elements = 27; } else { @@ -522,7 +517,7 @@ default list returnedList = [llStringToBase64(llStringTrim(llList2String(details, 0), STRING_TRIM)), llList2String(details, 1), llList2String(details, 2), llList2Integer(details, 3) / 1024, llList2Float(details, 4) * 1000.0, llList2Float(details, 5) * 1000.0]; if (extended) { - returnedList = returnedList + [llStringToBase64(llStringTrim(llList2String(details, 6), STRING_TRIM)), llList2String(details, 7), llList2Integer(details, 8), llList2Integer(details, 9), llList2Integer(details, 10), llStringToBase64(llList2String(details, 11)), llStringToBase64(llList2String(details, 12) + " (" + (string)llVecDist(llList2Vector(details, 12), currentPosition) + " m)"), llStringToBase64(llList2String(details, 13) + " (" + (string)(RAD_TO_DEG * llRot2Euler(llList2Rot(details, 13))) + ")"), llStringToBase64(llList2String(details, 14)), llList2Key(details, 15), llList2Key(details, 16), llList2Key(details, 17), llList2Key(details, 18), llList2Key(details, 19), llList2String(details, 20), llList2Integer(details, 21), llList2Integer(details, 22), llList2Integer(details, 23), llStringToBase64(llList2String(details, 24)), llList2Key(details, 25)]; + returnedList = returnedList + [llStringToBase64(llStringTrim(llList2String(details, 6), STRING_TRIM)), llList2String(details, 7), llList2Integer(details, 8), llList2Integer(details, 9), llList2Integer(details, 10), llStringToBase64(llList2String(details, 11)), llStringToBase64(llList2String(details, 12) + " (" + (string)llVecDist(llList2Vector(details, 12), currentPosition) + " m)"), llStringToBase64(llList2String(details, 13) + " (" + (string)(RAD_TO_DEG * llRot2Euler(llList2Rot(details, 13))) + ")"), llStringToBase64(llList2String(details, 14)), llList2Key(details, 15), llList2Key(details, 16), llList2Key(details, 17), llList2Key(details, 18), llList2Key(details, 19), llList2String(details, 20), llList2String(details, 21), llList2Integer(details, 22), llList2Integer(details, 23), llList2Integer(details, 24), llStringToBase64(llList2String(details, 25)), llList2Key(details, 26)]; } llOwnerSay("" + llList2CSV(returnedList) + ""); } diff --git a/indra/newview/fslslbridge.cpp b/indra/newview/fslslbridge.cpp index 2495242dd1..b2ec6834e3 100644 --- a/indra/newview/fslslbridge.cpp +++ b/indra/newview/fslslbridge.cpp @@ -55,7 +55,7 @@ static const std::string FS_BRIDGE_FOLDER = "#LSL Bridge"; static const std::string FS_BRIDGE_CONTAINER_FOLDER = "Landscaping"; static const U32 FS_BRIDGE_MAJOR_VERSION = 2; -static const U32 FS_BRIDGE_MINOR_VERSION = 28; +static const U32 FS_BRIDGE_MINOR_VERSION = 29; static const U32 FS_MAX_MINOR_VERSION = 99; static const std::string UPLOAD_SCRIPT_CURRENT = "EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt"; static const std::string FS_STATE_ATTRIBUTE = "state="; @@ -410,7 +410,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID, while (std::getline(strStreamGetScriptInfo, scriptInfoToken, ',')) { LLStringUtil::trim(scriptInfoToken); - if (scriptInfoArrayCount == 0 || scriptInfoArrayCount == 6 || scriptInfoArrayCount == 11 || scriptInfoArrayCount == 12 || scriptInfoArrayCount == 13 || scriptInfoArrayCount == 14 || scriptInfoArrayCount == 24) + if (scriptInfoArrayCount == 0 || scriptInfoArrayCount == 6 || scriptInfoArrayCount == 11 || scriptInfoArrayCount == 12 || scriptInfoArrayCount == 13 || scriptInfoArrayCount == 14 || scriptInfoArrayCount == 25) { // First value, OBJECT_NAME, should be passed from Bridge as encoded in base64 // Encoding eliminates problems with special characters and commas for CSV @@ -433,7 +433,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID, ++scriptInfoArrayCount; } - if (scriptInfoArrayCount == 6 || scriptInfoArrayCount == 26) + if (scriptInfoArrayCount == 6 || scriptInfoArrayCount == 27) { LLStringUtil::format_map_t args; args["OBJECT_NAME"] = scriptInfoArray[0].asString(); @@ -452,7 +452,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID, args["PATHFINDING_TEXT"] = ""; } report_to_nearby_chat(format_string(LLTrans::getString("fsbridge_script_info"), args)); - if (scriptInfoArrayCount == 26) + if (scriptInfoArrayCount == 27) { LLStringUtil::format_map_t args3; args3["OBJECT_DESC"] = scriptInfoArray[6].asString(); @@ -470,11 +470,12 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID, args3["OBJECT_REZZER_KEY"] = scriptInfoArray[18].asString(); args3["OBJECT_GROUP"] = scriptInfoArray[19].asUUID().notNull() ? LLSLURL("group", scriptInfoArray[19].asUUID(), "inspect").getSLURLString() : "---"; args3["OBJECT_CREATION_TIME"] = scriptInfoArray[20].asString(); - args3["OBJECT_PATHFINDING_TYPE"] = scriptInfoArray[21].asString(); - args3["OBJECT_ATTACHED_POINT"] = (scriptInfoArray[22].asInteger() < 1 || scriptInfoArray[22].asInteger() > 255) ? "---" : LLTrans::getString(LLAvatarAppearance::getAttachmentPointName(scriptInfoArray[22].asInteger())); - args3["OBJECT_TEMP_ATTACHED"] = scriptInfoArray[23].asInteger() == 1 ? LLTrans::getString("Yes") : LLTrans::getString("No"); - args3["AVATAR_POS"] = scriptInfoArray[24].asString(); - args3["INSPECTING_KEY"] = scriptInfoArray[25].asString(); + args3["OBJECT_REZ_TIME"] = scriptInfoArray[21].asString(); + args3["OBJECT_PATHFINDING_TYPE"] = scriptInfoArray[22].asString(); + args3["OBJECT_ATTACHED_POINT"] = (scriptInfoArray[23].asInteger() < 1 || scriptInfoArray[23].asInteger() > 255) ? "---" : LLTrans::getString(LLAvatarAppearance::getAttachmentPointName(scriptInfoArray[23].asInteger())); + args3["OBJECT_TEMP_ATTACHED"] = scriptInfoArray[24].asInteger() == 1 ? LLTrans::getString("Yes") : LLTrans::getString("No"); + args3["AVATAR_POS"] = scriptInfoArray[25].asString(); + args3["INSPECTING_KEY"] = scriptInfoArray[26].asString(); report_to_nearby_chat(format_string(LLTrans::getString("fsbridge_script_info_ext"), args3)); } } diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index c10c115b6f..57aad8c143 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -6801,6 +6801,7 @@ Vorheriger Besitzer: [OBJECT_LAST_OWNER_ID] Gerezt von: [OBJECT_REZZER_KEY] Gruppe: [OBJECT_GROUP] Erstellungszeit: [OBJECT_CREATION_TIME] +Rezz time: [OBJECT_REZ_TIME] Pathfinding-Typ: [OBJECT_PATHFINDING_TYPE] Angehängt an: [OBJECT_ATTACHED_POINT] Temporär angehängt: [OBJECT_TEMP_ATTACHED] diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 9ed3a6e0db..6991646b26 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3057,6 +3057,7 @@ Previous owner: [OBJECT_LAST_OWNER_ID] Rezzed by: [OBJECT_REZZER_KEY] Group: [OBJECT_GROUP] Creation time: [OBJECT_CREATION_TIME] +Rezz time: [OBJECT_REZ_TIME] Pathfinding type: [OBJECT_PATHFINDING_TYPE] Attachment point: [OBJECT_ATTACHED_POINT] Temporarily attached: [OBJECT_TEMP_ATTACHED] diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 4dad2efe65..4a92167ae8 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -6638,6 +6638,7 @@ Propriétaire précédent : [OBJECT_LAST_OWNER_ID] Posé par : [OBJECT_REZZER_KEY] Groupe : [OBJECT_GROUP] Date de création : [OBJECT_CREATION_TIME] +Rezz time: [OBJECT_REZ_TIME] Type de cheminement : [OBJECT_PATHFINDING_TYPE] Point d'attache : [OBJECT_ATTACHED_POINT] Attaché temporairement : [OBJECT_TEMP_ATTACHED] diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 4761e8b3be..6a55a5b910 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -6107,6 +6107,7 @@ Poprzedni właściciel: [OBJECT_LAST_OWNER_ID] Zrezzowany przez: [OBJECT_REZZER_KEY] Grupa: [OBJECT_GROUP] Czas utworzenia: [OBJECT_CREATION_TIME] +Czas zrezzowania: [OBJECT_REZ_TIME] Typ odnajdywania ścieżki: [OBJECT_PATHFINDING_TYPE] Punkt dołączenia: [OBJECT_ATTACHED_POINT] Tymczasowo dołączone: [OBJECT_TEMP_ATTACHED] diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 23266f4c83..17fcbe4c74 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -6402,6 +6402,7 @@ ID объекта: [INSPECTING_KEY] Выложено: [OBJECT_REZZER_KEY] Группа: [OBJECT_GROUP] Время создания: [OBJECT_CREATION_TIME] +Rezz time: [OBJECT_REZ_TIME] Тип поиска пути: [OBJECT_PATHFINDING_TYPE] Присоединено к: [OBJECT_ATTACHED_POINT] Временно присоединено: [OBJECT_TEMP_ATTACHED] From 43c47c8e018c118e831bf5ce719373863fc2e553 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 31 Jul 2022 18:26:10 +0200 Subject: [PATCH 07/26] Update German translation --- indra/newview/skins/default/xui/de/strings.xml | 2 +- indra/newview/skins/default/xui/en/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 57aad8c143..7973c4a97c 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -6801,7 +6801,7 @@ Vorheriger Besitzer: [OBJECT_LAST_OWNER_ID] Gerezt von: [OBJECT_REZZER_KEY] Gruppe: [OBJECT_GROUP] Erstellungszeit: [OBJECT_CREATION_TIME] -Rezz time: [OBJECT_REZ_TIME] +Rez-Zeit: [OBJECT_REZ_TIME] Pathfinding-Typ: [OBJECT_PATHFINDING_TYPE] Angehängt an: [OBJECT_ATTACHED_POINT] Temporär angehängt: [OBJECT_TEMP_ATTACHED] diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 6991646b26..55cc5a0094 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3057,7 +3057,7 @@ Previous owner: [OBJECT_LAST_OWNER_ID] Rezzed by: [OBJECT_REZZER_KEY] Group: [OBJECT_GROUP] Creation time: [OBJECT_CREATION_TIME] -Rezz time: [OBJECT_REZ_TIME] +Rez time: [OBJECT_REZ_TIME] Pathfinding type: [OBJECT_PATHFINDING_TYPE] Attachment point: [OBJECT_ATTACHED_POINT] Temporarily attached: [OBJECT_TEMP_ATTACHED] From cc3375541a56c1fc31d26815a671a3a9627a478b Mon Sep 17 00:00:00 2001 From: Nicky Date: Sun, 31 Jul 2022 18:50:58 +0200 Subject: [PATCH 08/26] FIRE-31865; Remove offending from textures.xml (Starlight/Starlight CUI) to get viewer to at least start. --- .../skins/starlight/textures/textures.xml | 74 ------------------ .../skins/starlightcui/textures/textures.xml | 76 ------------------- 2 files changed, 150 deletions(-) diff --git a/indra/newview/skins/starlight/textures/textures.xml b/indra/newview/skins/starlight/textures/textures.xml index 2d17351d73..72e48bdd63 100755 --- a/indra/newview/skins/starlight/textures/textures.xml +++ b/indra/newview/skins/starlight/textures/textures.xml @@ -128,7 +128,6 @@ with the same filename but different name - @@ -869,7 +868,6 @@ with the same filename but different name - @@ -914,7 +912,6 @@ with the same filename but different name - @@ -956,9 +953,6 @@ with the same filename but different name - - - @@ -1011,72 +1005,4 @@ with the same filename but different name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/indra/newview/skins/starlightcui/textures/textures.xml b/indra/newview/skins/starlightcui/textures/textures.xml index 2d17351d73..91ab1a6968 100755 --- a/indra/newview/skins/starlightcui/textures/textures.xml +++ b/indra/newview/skins/starlightcui/textures/textures.xml @@ -128,7 +128,6 @@ with the same filename but different name - @@ -869,7 +868,6 @@ with the same filename but different name - @@ -914,7 +912,6 @@ with the same filename but different name - @@ -956,9 +953,6 @@ with the same filename but different name - - - @@ -984,8 +978,6 @@ with the same filename but different name - - @@ -1011,72 +1003,4 @@ with the same filename but different name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From d828e7918502df85a240ab927fe0659b4133d7cc Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Sun, 31 Jul 2022 20:36:16 +0200 Subject: [PATCH 09/26] FIRE-31870 Update Russian translation, by Romka Swallowtail --- .../default/xui/ru/floater_model_preview.xml | 73 ++++++++++++++++--- .../floater_preferences_graphics_advanced.xml | 3 +- .../skins/default/xui/ru/floater_stats.xml | 3 + .../skins/default/xui/ru/menu_viewer.xml | 4 +- .../skins/default/xui/ru/notifications.xml | 10 --- .../default/xui/ru/panel_login_first.xml | 8 +- .../xui/ru/panel_preferences_graphics1.xml | 2 +- .../newview/skins/default/xui/ru/strings.xml | 18 ++++- 8 files changed, 88 insertions(+), 33 deletions(-) diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml index 3ab0132a85..b7b4b24be6 100644 --- a/indra/newview/skins/default/xui/ru/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml @@ -23,7 +23,7 @@ Материалы уровня детализации не входят в эталонную модель. Для некоторых физических оболочек превышен лимит вершин(256); попробуйте другой 'Метод Анализа'. Некоторые модели превышают предел оболочек (256); попробуйте 'Упрощение'. - Физика меша слишком плотная; удалить маленькие, тонкие треугольники (смотри просмотр). + Физика меша слишком плотная или содержит вырожденные треугольники. Используйте Анализ/Упрощение для решения. Эта версия не поддерживает Havok и не рекомендуется для загрузки физики в Second Life. Результаты могут быть непредсказуемыми. Один или несколько размеров меньше 0,5м, корректно будут работать только физические формы, основанные на корпусе (проанализированные). Обнаружена нераспознанная ошибка. @@ -38,6 +38,19 @@ Текстурирование отключено, слишком много [COUNT] неизвестных суставов Модель [MODEL_NAME] загружена Данные координат текстуры не полны. + Обнаружен NaN при загрузке данных о местоположении из DAE-модели, недопустимая модель. + Найдено NaN при загрузке нормалей из DAE-модели, недопустимая модель. + Обнаружен отрицательный масштаб, неподдерживаемое преобразование. domInstance_geometry: [LABEL] + Обнаружен отрицательный масштаб, неподдерживаемое преобразование после нормализации. domInstance_geometry: [LABEL] + Не удается разрешить геометрию URL. + Плохой элемент + Сцена не может быть проанализирована + Ошибка с dae - традиционно указывает на поврежденный файл. + Не удалось проверить контроллер + Не удается найти внутренние документы + Документ не имеет корня + Документ не имеет visual_scene + Невозможно обработать сетку без данных о местоположении. Недопустимая модель. @@ -50,8 +63,10 @@ - - + + + +