Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
|
|
@ -2,7 +2,7 @@
|
|||
* @file
|
||||
* @brief
|
||||
*
|
||||
* $LicenseInfo:firstyear=2020&license=fsviewerlgpl$
|
||||
* $LicenseInfo:firstyear=2021&license=fsviewerlgpl$
|
||||
* Phoenix Firestorm Viewer Source Code
|
||||
* Copyright (C) 2020, The Phoenix Firestorm Project, Inc.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -964,11 +964,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>fc2d285da5298b666fc3c54015a8669a</string>
|
||||
<string>87c4984c2bddcdaf6ca403a06f22ce4e</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.01.05-darwin-202981448.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.01.07-darwin-210010951.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -978,11 +978,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ee3c5e3449e06bc3dbb1c9dc29aca53d</string>
|
||||
<string>d33d848660ca7e4c2de789e325706d24</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.01.05-linux64-202931144.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.01.07-linux64-203630250.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -992,11 +992,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>b88e70667efc230a00d6a2d982af8fc5</string>
|
||||
<string>9e9f303912776014519c18a0205250ee</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.05-windows-202860859.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.07-windows-203561745.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1006,18 +1006,18 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>401829b65cac61a2f96179fadf7eb015</string>
|
||||
<string>ae336fe814a6867f6449d0401ea7a9e4</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.05-windows64-202860900.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.01.07-windows64-203561747.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.01.05</string>
|
||||
<string>2.01.07</string>
|
||||
</map>
|
||||
<key>fontconfig</key>
|
||||
<map>
|
||||
|
|
@ -3709,7 +3709,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>canonical_repo</key>
|
||||
<string>https://bitbucket.org/lindenlab/viewer</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2020, The Phoenix Firestorm Project, Inc.</string>
|
||||
<string>Copyright (c) 2021, The Phoenix Firestorm Project, Inc.</string>
|
||||
<key>description</key>
|
||||
<string>Firestorm Viewer</string>
|
||||
<key>license</key>
|
||||
|
|
|
|||
|
|
@ -1360,7 +1360,8 @@ Sovereign Engineer
|
|||
MAINT-7343
|
||||
SL-11079
|
||||
OPEN-343
|
||||
SL-11625
|
||||
SL-11625
|
||||
BUG-229030
|
||||
SpacedOut Frye
|
||||
VWR-34
|
||||
VWR-45
|
||||
|
|
|
|||
|
|
@ -392,6 +392,7 @@ void LLStreamingAudio_FMODSTUDIO::setGain(F32 vol)
|
|||
Check_FMOD_Error(mFMODInternetStreamChannelp->setVolume(vol), "FMOD::Channel::setVolume");
|
||||
}
|
||||
}
|
||||
|
||||
// <DKO> Streamtitle display
|
||||
// virtual
|
||||
bool LLStreamingAudio_FMODSTUDIO::getNewMetadata(LLSD& metadata)
|
||||
|
|
@ -404,14 +405,17 @@ bool LLStreamingAudio_FMODSTUDIO::getNewMetadata(LLSD& metadata)
|
|||
mNewMetadata = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
return mNewMetadata;
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
metadata = LLSD();
|
||||
return false;
|
||||
}
|
||||
// </DKO>
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// manager of possibly-multiple internet audio streams
|
||||
|
||||
|
|
|
|||
|
|
@ -1208,7 +1208,9 @@ namespace
|
|||
{
|
||||
LLError::RecorderPtr r = *i;
|
||||
|
||||
if (!r->enabled())
|
||||
// <FS:Ansariel> Crash fix
|
||||
//if (!r->enabled())
|
||||
if (!r || !r->enabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ LLSingletonBase::vec_t LLSingletonBase::dep_sort()
|
|||
// extracts just the first (key) element from each sorted_iterator, then
|
||||
// uses vec_t's range constructor... but frankly this is more
|
||||
// straightforward, as long as we remember the above reserve() call!
|
||||
for (const SingletonDeps::sorted_iterator::value_type& pair : sdeps.sort())
|
||||
for (const SingletonDeps::sorted_iterator::value_type pair : sdeps.sort())
|
||||
{
|
||||
ret.push_back(pair.first);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -895,16 +895,24 @@ void LLPluginProcessParent::poll(F64 timeout)
|
|||
{
|
||||
// timed out with no incoming data. Just return.
|
||||
}
|
||||
else if(status == EBADF)
|
||||
// <FS:Beq> better logging of poll issues
|
||||
// else if(status == EBADF)
|
||||
else if(APR_STATUS_IS_EBADF(status))
|
||||
{
|
||||
// This happens when one of the file descriptors in the pollset is destroyed, which happens whenever a plugin's socket is closed.
|
||||
// The pollset has been or will be recreated, so just return.
|
||||
LL_DEBUGS("PluginPoll") << "apr_pollset_poll returned EBADF" << LL_ENDL;
|
||||
}
|
||||
else if(status != APR_SUCCESS)
|
||||
// <FS:Beq> better logging of poll issues
|
||||
// else if(status != APR_SUCCESS)
|
||||
// {
|
||||
// LL_WARNS("PluginPoll") << "apr_pollset_poll failed with status " << status << LL_ENDL;
|
||||
// }
|
||||
else
|
||||
{
|
||||
LL_WARNS("PluginPoll") << "apr_pollset_poll failed with status " << status << LL_ENDL;
|
||||
LL_WARNS("PluginPoll") << "apr_pollset_poll failed with status " << status << " (" << APR_TO_OS_ERROR(status) << ")" << LL_ENDL;
|
||||
}
|
||||
// </FS:Beq>
|
||||
}
|
||||
|
||||
// Remove instances in the done state from the sInstances map.
|
||||
|
|
|
|||
|
|
@ -874,10 +874,11 @@ void LLTexUnit::setTextureColorSpace(eTextureColorSpace space)
|
|||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
// #endif // <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
{
|
||||
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
|
||||
}
|
||||
#endif // <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
}
|
||||
|
||||
LLLightState::LLLightState(S32 index)
|
||||
|
|
|
|||
|
|
@ -4202,6 +4202,9 @@ void LLContextMenu::show(S32 x, S32 y, LLView* spawning_view)
|
|||
{
|
||||
y += height;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-10883: Prevent context menu from going off screen
|
||||
y = llmin(y, menu_region_rect.mTop);
|
||||
}
|
||||
|
||||
// Open out to the left if menu extends past right edge
|
||||
|
|
@ -4215,6 +4218,9 @@ void LLContextMenu::show(S32 x, S32 y, LLView* spawning_view)
|
|||
{
|
||||
x -= width;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-10883: Prevent context menu from going off screen
|
||||
x = llmax(x, menu_region_rect.mLeft);
|
||||
}
|
||||
|
||||
S32 local_x, local_y;
|
||||
|
|
|
|||
|
|
@ -932,6 +932,8 @@ BOOL LLScrollListCtrl::selectFirstItem()
|
|||
// virtual
|
||||
BOOL LLScrollListCtrl::selectNthItem( S32 target_index )
|
||||
{
|
||||
// <FS:Ansariel> FIRE-30571: Comboboxes select all items then pressing Page-Up
|
||||
target_index = llclamp(target_index, 0, (S32)mItemList.size() - 1);
|
||||
return selectItemRange(target_index, target_index);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -953,6 +953,30 @@ std::string LLUrlEntryAgentRLVAnonymizedName::getName(const LLAvatarName& avatar
|
|||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
// <FS:Ansariel> FIRE-30611: "You" in transcript is underlined
|
||||
///
|
||||
/// FSUrlEntryAgentSelf Describes the agent's Second Life agent Url, e.g.,
|
||||
/// secondlife:///app/agentself/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
|
||||
FSUrlEntryAgentSelf::FSUrlEntryAgentSelf() : LLUrlEntryAgent()
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
mPattern = boost::regex(APP_HEADER_REGEX "/agentself/[\\da-f-]+/\\w+",
|
||||
boost::regex::perl|boost::regex::icase);
|
||||
}
|
||||
|
||||
std::string FSUrlEntryAgentSelf::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
|
||||
{
|
||||
if (LLUI::getInstance()->mSettingGroups["config"]->getBOOL("FSChatHistoryShowYou"))
|
||||
{
|
||||
return LLTrans::getString("AgentNameSubst");
|
||||
}
|
||||
else
|
||||
{
|
||||
return LLUrlEntryAgent::getLabel(url, cb);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
//
|
||||
// LLUrlEntryGroup Describes a Second Life group Url, e.g.,
|
||||
// secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about
|
||||
|
|
|
|||
|
|
@ -362,6 +362,20 @@ private:
|
|||
};
|
||||
// [/RLVa:KB]
|
||||
|
||||
// <FS:Ansariel> FIRE-30611: "You" in transcript is underlined
|
||||
///
|
||||
/// FSUrlEntryAgentSelf Describes the agent's Second Life agent Url, e.g.,
|
||||
/// secondlife:///app/agentself/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
|
||||
class FSUrlEntryAgentSelf : public LLUrlEntryAgent
|
||||
{
|
||||
public:
|
||||
FSUrlEntryAgentSelf();
|
||||
private:
|
||||
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
|
||||
};
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
||||
///
|
||||
/// LLUrlEntryExperienceProfile Describes a Second Life experience profile Url, e.g.,
|
||||
/// secondlife:///app/experience/0e346d8b-4433-4d66-a6b0-fd37083abc4c/profile
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ LLUrlRegistry::LLUrlRegistry()
|
|||
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
|
||||
registerUrl(new LLUrlEntryAgentRLVAnonymizedName());
|
||||
// [/RLVa:KB]
|
||||
registerUrl(new FSUrlEntryAgentSelf());// <FS:Ansariel> FIRE-30611: "You" in transcript is underlined
|
||||
// LLUrlEntryAgent*Name must appear before LLUrlEntryAgent since
|
||||
// LLUrlEntryAgent is a less specific (catchall for agent urls)
|
||||
registerUrl(new LLUrlEntryAgent());
|
||||
|
|
|
|||
|
|
@ -2638,7 +2638,7 @@ if (DARWIN)
|
|||
set(MACOSX_BUNDLE_BUNDLE_NAME "Firestorm")
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
|
||||
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2010-2020 The Phoenix Firestorm Project, Inc.")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2010-2021 The Phoenix Firestorm Project, Inc.")
|
||||
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "Firestorm.nib")
|
||||
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication")
|
||||
|
||||
|
|
|
|||
|
|
@ -3,4 +3,4 @@
|
|||
CFBundleName = "Firestorm";
|
||||
|
||||
CFBundleShortVersionString = "Firestorm version %%VERSION%%";
|
||||
CFBundleGetInfoString = "Firestorm version %%VERSION%%, Copyright 2010-2020 The Phoenix Firestorm Project, Inc.";
|
||||
CFBundleGetInfoString = "Firestorm version %%VERSION%%, Copyright 2010-2021 The Phoenix Firestorm Project, Inc.";
|
||||
|
|
|
|||
|
|
@ -276,10 +276,8 @@
|
|||
icon="Command_View_Icon"
|
||||
label_ref="Command_View_Label"
|
||||
tooltip_ref="Command_View_Tooltip"
|
||||
execute_function="Floater.Toggle"
|
||||
execute_parameters="camera"
|
||||
is_running_function="Floater.IsOpen"
|
||||
is_running_parameters="camera"
|
||||
execute_function="View.ToggleCameraFloater"
|
||||
is_running_function="View.CheckCameraFloater"
|
||||
/>
|
||||
<command name="reporter"
|
||||
available_in_toybox="true"
|
||||
|
|
|
|||
|
|
@ -25590,5 +25590,16 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSUseSmallCameraFloater</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, the camera floater will be smaller and not contain the camera preset controls.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ uniform sampler2D specularMap;
|
|||
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
||||
vec3 linear_to_srgb(vec3 cl);// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
void main()
|
||||
{
|
||||
vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
|
||||
|
|
@ -52,6 +53,7 @@ void main()
|
|||
vec4 norm = texture2D(normalMap, vary_texcoord0.xy);
|
||||
vec4 spec = texture2D(specularMap, vary_texcoord0.xy);
|
||||
|
||||
col.rgb = linear_to_srgb(col.rgb);// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
frag_data[0] = vec4(col.rgb, 0.0);
|
||||
frag_data[1] = spec;
|
||||
frag_data[2] = vec4(norm.xy,0,0);
|
||||
|
|
|
|||
|
|
@ -405,6 +405,7 @@ void main()
|
|||
vec3 npos = normalize(-pos.xyz);
|
||||
|
||||
vec3 light = vec3(0, 0, 0);
|
||||
final_specular.rgb = srgb_to_linear(final_specular.rgb);// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
|
||||
#define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w );
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,10 @@ void main()
|
|||
vec3 n = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz);
|
||||
#ifdef HAS_NORMAL_MAP
|
||||
vec3 t = normalize((mat*vec4(tangent.xyz+position.xyz,1.0)).xyz-pos.xyz);
|
||||
vec3 b = cross(n, t)*tangent.w;
|
||||
// <FS:Beq> normalize the bitangent (cross product of two normalised vectors is not itself normalised)
|
||||
// vec3 b = cross(n, t)*tangent.w;
|
||||
vec3 b = normalize(cross(n, t)*tangent.w);
|
||||
// </FS:Beq>
|
||||
|
||||
vary_mat0 = vec3(t.x, b.x, n.x);
|
||||
vary_mat1 = vec3(t.y, b.y, n.y);
|
||||
|
|
@ -122,11 +125,11 @@ vary_normal = n;
|
|||
#else //HAS_SKIN
|
||||
vec3 n = normalize(normal_matrix * normal);
|
||||
#ifdef HAS_NORMAL_MAP
|
||||
// <FS:Beq> tangents should not use the inv_transpose matrix
|
||||
// vec3 t = normalize(normal_matrix * tangent.xyz);
|
||||
vec3 t = normalize((modelview_projection_matrix * vec4(tangent.xyz,0)).xyz);
|
||||
vec3 t = normalize(normal_matrix * tangent.xyz);
|
||||
// <FS:Beq> normalize the bitangent (cross product of two normalised vectors is not itself normalised)
|
||||
// vec3 b = cross(n,t)*tangent.w;
|
||||
vec3 b = normalize(cross(n,t)*tangent.w);
|
||||
// </FS:Beq>
|
||||
vec3 b = cross(n,t)*tangent.w;
|
||||
//vec3 t = cross(b,n) * binormal.w;
|
||||
|
||||
vary_mat0 = vec3(t.x, b.x, n.x);
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@ out vec4 frag_color;
|
|||
#define frag_color gl_FragColor
|
||||
#endif
|
||||
|
||||
uniform sampler2DRect depthMap;
|
||||
// uniform sampler2DRect depthMap; // <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
uniform sampler2DRect diffuseRect;
|
||||
uniform sampler2DRect specularRect;
|
||||
uniform samplerCube environmentMap;
|
||||
// uniform samplerCube environmentMap;// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
uniform sampler2D noiseMap;
|
||||
uniform sampler2D lightFunc;
|
||||
|
||||
|
|
@ -73,10 +73,10 @@ void main()
|
|||
vec3 norm = getNorm(frag.xy);
|
||||
|
||||
vec4 spec = texture2DRect(specularRect, frag.xy);
|
||||
spec.rgb = srgb_to_linear(spec.rgb);
|
||||
// spec.rgb = srgb_to_linear(spec.rgb);// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
diff.rgb = srgb_to_linear(diff.rgb);
|
||||
|
||||
// diff.rgb = srgb_to_linear(diff.rgb);// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
|
||||
float noise = texture2D(noiseMap, frag.xy / 128.0).b;
|
||||
vec3 npos = normalize(-pos);
|
||||
|
||||
|
|
|
|||
|
|
@ -40,9 +40,14 @@ out vec4 frag_color;
|
|||
|
||||
uniform sampler2DRect diffuseRect;
|
||||
uniform sampler2DRect specularRect;
|
||||
uniform sampler2DRect depthMap;
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// uniform sampler2DRect depthMap;
|
||||
// </FS:Beq>
|
||||
uniform sampler2DRect normalMap;
|
||||
uniform samplerCube environmentMap;
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// uniform samplerCube environmentMap;
|
||||
// </FS:Beq>
|
||||
|
||||
uniform sampler2D noiseMap;
|
||||
uniform sampler2D projectionMap;
|
||||
uniform sampler2D lightFunc;
|
||||
|
|
@ -182,11 +187,12 @@ void main()
|
|||
|
||||
|
||||
vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
// SL-12005 Projector light pops as we get closer, more objectionable than being in wrong color space.
|
||||
// We can't switch to linear here unless we do it everywhere*
|
||||
// *gbuffer is sRGB, convert to linear whenever sampling from it
|
||||
diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// // SL-12005 Projector light pops as we get closer, more objectionable than being in wrong color space.
|
||||
// // We can't switch to linear here unless we do it everywhere*
|
||||
// // *gbuffer is sRGB, convert to linear whenever sampling from it
|
||||
// diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
// </FS:Beq>
|
||||
vec3 dlit = vec3(0, 0, 0);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -35,11 +35,13 @@ out vec4 frag_color;
|
|||
|
||||
uniform sampler2DRect diffuseRect;
|
||||
uniform sampler2DRect specularRect;
|
||||
uniform sampler2DRect normalMap;
|
||||
uniform samplerCube environmentMap;
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
//uniform sampler2DRect normalMap;
|
||||
//uniform samplerCube environmentMap;
|
||||
// </FS:Beq>
|
||||
uniform sampler2D noiseMap;
|
||||
uniform sampler2D lightFunc;
|
||||
uniform sampler2DRect depthMap;
|
||||
//uniform sampler2DRect depthMap;// <FS:Beq/> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
|
||||
uniform vec3 env_mat[3];
|
||||
uniform float sun_wash;
|
||||
|
|
@ -90,7 +92,7 @@ void main()
|
|||
float noise = texture2D(noiseMap, frag.xy/128.0).b;
|
||||
|
||||
vec3 col = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
col.rgb = srgb_to_linear(col.rgb);
|
||||
// col.rgb = srgb_to_linear(col.rgb); // <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
|
||||
float fa = falloff+1.0;
|
||||
float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ out vec4 frag_color;
|
|||
uniform sampler2DRect diffuseRect;
|
||||
uniform sampler2DRect specularRect;
|
||||
uniform sampler2DRect normalMap;
|
||||
uniform sampler2DRect lightMap;
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// uniform sampler2DRect lightMap;
|
||||
uniform sampler2DRect depthMap;
|
||||
uniform samplerCube environmentMap;
|
||||
uniform sampler2D lightFunc;
|
||||
|
|
@ -90,7 +91,7 @@ void main()
|
|||
vec4 diffuse = texture2DRect(diffuseRect, tc);
|
||||
|
||||
//convert to gamma space
|
||||
//diffuse.rgb = linear_to_srgb(diffuse.rgb);
|
||||
diffuse.rgb = linear_to_srgb(diffuse.rgb);// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye) uniform sampler2DRect depthMap;
|
||||
|
||||
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
|
||||
vec3 color = vec3(0);
|
||||
|
|
|
|||
|
|
@ -177,8 +177,11 @@ void main()
|
|||
float da = dot(norm, lv);
|
||||
|
||||
vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
//light shaders output linear and are gamma corrected later in postDeferredGammaCorrectF.glsl
|
||||
diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586
|
||||
// This makes the comment below incorrect, it will presumably be removed if/when the lab apply the proper changes)
|
||||
// // light shaders output linear and are gamma corrected later in postDeferredGammaCorrectF.glsl
|
||||
// diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
// </FS:Beq>
|
||||
|
||||
vec4 spec = texture2DRect(specularRect, frag.xy);
|
||||
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ void default_lighting()
|
|||
{
|
||||
vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
|
||||
|
||||
color *= vertex_color;
|
||||
|
||||
if (color.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
|
||||
color *= vertex_color;
|
||||
|
||||
color.rgb = atmosLighting(color.rgb);
|
||||
|
||||
color.rgb = scaleSoftClip(color.rgb);
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ void fullbright_lighting_water()
|
|||
{
|
||||
vec4 color = diffuseLookup(vary_texcoord0.xy);
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
if (color.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
color.rgb = fullbrightAtmosTransport(color.rgb);
|
||||
|
||||
frag_color = applyWaterFog(color);
|
||||
|
|
|
|||
|
|
@ -41,13 +41,15 @@ VARYING vec2 vary_texcoord0;
|
|||
|
||||
void fullbright_lighting_water()
|
||||
{
|
||||
vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
|
||||
vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
|
||||
|
||||
if (color.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
color.rgb = fullbrightAtmosTransport(color.rgb);
|
||||
|
||||
frag_color = applyWaterFog(color);
|
||||
|
|
|
|||
|
|
@ -41,13 +41,13 @@ void default_lighting_water()
|
|||
{
|
||||
vec4 color = diffuseLookup(vary_texcoord0.xy);
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
if (color.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
color.rgb = atmosLighting(color.rgb);
|
||||
|
||||
frag_color = applyWaterFog(color);
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ void default_lighting_water()
|
|||
{
|
||||
vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
if (color.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
color.rgb *= vertex_color.rgb;
|
||||
|
||||
color.rgb = atmosLighting(color.rgb);
|
||||
|
||||
color = applyWaterFog(color);
|
||||
|
|
|
|||
|
|
@ -191,11 +191,12 @@ void main()
|
|||
float da = dot(norm, lv);
|
||||
|
||||
vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
// SL-12005 Projector light pops as we get closer, more objectionable than being in wrong color space.
|
||||
// We can't switch to linear here unless we do it everywhere*
|
||||
// *gbuffer IS sRGB, convert to linear since this shader outputs linear
|
||||
diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586
|
||||
// removing comments as colour space change
|
||||
// // SL-12005 Projector light pops as we get closer, more objectionable than being in wrong color space.
|
||||
// // We can't switch to linear here unless we do it everywhere*
|
||||
// // *gbuffer IS sRGB, convert to linear since this shader outputs linear
|
||||
// diff_tex.rgb = srgb_to_linear(diff_tex.rgb);
|
||||
vec4 spec = texture2DRect(specularRect, frag.xy);
|
||||
|
||||
vec3 dlit = vec3(0, 0, 0);
|
||||
|
|
|
|||
|
|
@ -88,6 +88,10 @@ void main()
|
|||
da = pow(da, light_gamma);
|
||||
|
||||
vec4 diffuse = texture2DRect(diffuseRect, tc);
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// convert to gamma space
|
||||
diffuse.rgb = linear_to_srgb(diffuse.rgb);
|
||||
// </FS:Beq>
|
||||
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
|
||||
|
||||
vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
|
||||
|
|
|
|||
|
|
@ -188,8 +188,10 @@ void main()
|
|||
lv = proj_origin-pos.xyz;
|
||||
lv = normalize(lv);
|
||||
float da = dot(norm, lv);
|
||||
|
||||
vec3 diff_tex = srgb_to_linear(texture2DRect(diffuseRect, frag.xy).rgb);
|
||||
// <FS:Beq> Colour space and shader fixes for BUG-228586 (Rye)
|
||||
// vec3 diff_tex = srgb_to_linear(texture2DRect(diffuseRect, frag.xy).rgb);
|
||||
vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
// </FS:Beq>
|
||||
vec4 spec = texture2DRect(specularRect, frag.xy);
|
||||
vec3 dlit = vec3(0, 0, 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -1505,17 +1505,10 @@ void FSChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
}
|
||||
|
||||
name_params.use_default_link_style = false;
|
||||
name_params.link_href = LLSLURL("agent", chat.mFromID, "inspect").getSLURLString();
|
||||
name_params.link_href = LLSLURL(from_me ? "agentself" : "agent", chat.mFromID, "inspect").getSLURLString();
|
||||
|
||||
if (from_me && gSavedSettings.getBOOL("FSChatHistoryShowYou"))
|
||||
{
|
||||
appendText(LLTrans::getString("AgentNameSubst"), prependNewLineState, name_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add link to avatar's inspector and delimiter to message.
|
||||
appendText(std::string(name_params.link_href), prependNewLineState, name_params);
|
||||
}
|
||||
// Add link to avatar's inspector and delimiter to message.
|
||||
appendText(std::string(name_params.link_href), prependNewLineState, name_params);
|
||||
|
||||
prependNewLineState = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -1323,6 +1323,38 @@ void LLAgentCamera::updateCamera()
|
|||
gAgentCamera.getPanDownKey() > 0.f); // bottom
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Phototools camera
|
||||
camera_floater = LLFloaterReg::findTypedInstance<LLFloaterCamera>("phototools_camera");
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->mRotate->setToggleState(gAgentCamera.getOrbitRightKey() > 0.f, // left
|
||||
gAgentCamera.getOrbitUpKey() > 0.f, // top
|
||||
gAgentCamera.getOrbitLeftKey() > 0.f, // right
|
||||
gAgentCamera.getOrbitDownKey() > 0.f); // bottom
|
||||
|
||||
camera_floater->mTrack->setToggleState(gAgentCamera.getPanLeftKey() > 0.f, // left
|
||||
gAgentCamera.getPanUpKey() > 0.f, // top
|
||||
gAgentCamera.getPanRightKey() > 0.f, // right
|
||||
gAgentCamera.getPanDownKey() > 0.f); // bottom
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
camera_floater = LLFloaterReg::findTypedInstance<LLFloaterCamera>("fs_camera_small");
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->mRotate->setToggleState(gAgentCamera.getOrbitRightKey() > 0.f, // left
|
||||
gAgentCamera.getOrbitUpKey() > 0.f, // top
|
||||
gAgentCamera.getOrbitLeftKey() > 0.f, // right
|
||||
gAgentCamera.getOrbitDownKey() > 0.f); // bottom
|
||||
|
||||
camera_floater->mTrack->setToggleState(gAgentCamera.getPanLeftKey() > 0.f, // left
|
||||
gAgentCamera.getPanUpKey() > 0.f, // top
|
||||
gAgentCamera.getPanRightKey() > 0.f, // right
|
||||
gAgentCamera.getPanDownKey() > 0.f); // bottom
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// Handle camera movement based on keyboard.
|
||||
const F32 ORBIT_OVER_RATE = 90.f * DEG_TO_RAD; // radians per second
|
||||
const F32 ORBIT_AROUND_RATE = 90.f * DEG_TO_RAD; // radians per second
|
||||
|
|
|
|||
|
|
@ -268,6 +268,12 @@ void LLFloaterCamera::resetCameraMode()
|
|||
if (!floater_camera) return;
|
||||
floater_camera->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// <FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
floater_camera = LLFloaterCamera::findSmallInstance();
|
||||
if (!floater_camera) return;
|
||||
floater_camera->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onAvatarEditingAppearance(bool editing)
|
||||
|
|
@ -282,6 +288,12 @@ void LLFloaterCamera::onAvatarEditingAppearance(bool editing)
|
|||
if (!floater_camera) return;
|
||||
floater_camera->handleAvatarEditingAppearance(editing);
|
||||
// <FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
floater_camera = LLFloaterCamera::findSmallInstance();
|
||||
if (!floater_camera) return;
|
||||
floater_camera->handleAvatarEditingAppearance(editing);
|
||||
// <FS:Ansariel>
|
||||
}
|
||||
|
||||
void LLFloaterCamera::handleAvatarEditingAppearance(bool editing)
|
||||
|
|
@ -324,6 +336,18 @@ void LLFloaterCamera::toPrevMode()
|
|||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
floater_camera = LLFloaterCamera::findSmallInstance();
|
||||
if (floater_camera)
|
||||
{
|
||||
floater_camera->updateItemsSelection();
|
||||
if(floater_camera->inFreeCameraMode())
|
||||
{
|
||||
activate_camera_tool();
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
LLFloaterCamera* LLFloaterCamera::findInstance()
|
||||
|
|
@ -338,6 +362,13 @@ LLFloaterCamera* LLFloaterCamera::findPhototoolsInstance()
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
LLFloaterCamera* LLFloaterCamera::findSmallInstance()
|
||||
{
|
||||
return LLFloaterReg::findTypedInstance<LLFloaterCamera>("fs_camera_small");
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
void LLFloaterCamera::onOpen(const LLSD& key)
|
||||
{
|
||||
LLFirstUse::viewPopup();
|
||||
|
|
@ -353,7 +384,9 @@ void LLFloaterCamera::onOpen(const LLSD& key)
|
|||
toPrevMode();
|
||||
mClosed = FALSE;
|
||||
|
||||
populatePresetCombo();
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
if (mPresetCombo)
|
||||
populatePresetCombo();
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onClose(bool app_quitting)
|
||||
|
|
@ -381,7 +414,8 @@ LLFloaterCamera::LLFloaterCamera(const LLSD& val)
|
|||
: LLFloater(val),
|
||||
mClosed(FALSE),
|
||||
mCurrMode(CAMERA_CTRL_MODE_PAN),
|
||||
mPrevMode(CAMERA_CTRL_MODE_PAN)
|
||||
mPrevMode(CAMERA_CTRL_MODE_PAN),
|
||||
mPresetCombo(nullptr) // <FS:Ansariel> Optional small camera floater
|
||||
{
|
||||
LLHints::getInstance()->registerHintTarget("view_popup", getHandle());
|
||||
mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
|
||||
|
|
@ -395,7 +429,7 @@ BOOL LLFloaterCamera::postBuild()
|
|||
mRotate = getChild<LLJoystickCameraRotate>(ORBIT);
|
||||
mZoom = findChild<LLPanelCameraZoom>(ZOOM);
|
||||
mTrack = getChild<LLJoystickCameraTrack>(PAN);
|
||||
mPresetCombo = getChild<LLComboBox>("preset_combo");
|
||||
mPresetCombo = findChild<LLComboBox>("preset_combo"); // <FS:Ansariel> Optional small camera floater
|
||||
|
||||
// <FS:Ansariel> Improved camera floater
|
||||
//getChild<LLTextBox>("precise_ctrs_label")->setShowCursorHand(false);
|
||||
|
|
@ -421,8 +455,15 @@ BOOL LLFloaterCamera::postBuild()
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this));
|
||||
LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this));
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
//mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this));
|
||||
//LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this));
|
||||
if (mPresetCombo)
|
||||
{
|
||||
mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this));
|
||||
LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this));
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
update();
|
||||
|
||||
|
|
@ -598,6 +639,19 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
|||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
camera_floater = LLFloaterCamera::findSmallInstance();
|
||||
if (camera_floater)
|
||||
{
|
||||
// <FS:Ansariel> FIRE-29950: Re-add weird legacy object view camera toggle
|
||||
//camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
// </FS:Ansariel>
|
||||
camera_floater->updateItemsSelection();
|
||||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
// <FS:Ansariel> Improved camera floater
|
||||
else if ("reset_view" == name)
|
||||
|
|
@ -612,6 +666,12 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
|||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
camera_floater = LLFloaterCamera::findSmallInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
switchToPreset("rear_view");
|
||||
}
|
||||
|
|
@ -628,6 +688,12 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
|||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
camera_floater = LLFloaterCamera::findSmallInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
switchToPreset(name);
|
||||
}
|
||||
}
|
||||
|
|
@ -696,6 +762,15 @@ void LLFloaterCamera::switchToPreset(const std::string& name)
|
|||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
camera_floater = LLFloaterCamera::findSmallInstance();
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->updateItemsSelection();
|
||||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
void LLFloaterCamera::fromFreeToPresets()
|
||||
|
|
|
|||
|
|
@ -95,6 +95,8 @@ private:
|
|||
static LLFloaterCamera* findInstance();
|
||||
// <FS:Ansariel> Phototools camera
|
||||
static LLFloaterCamera* findPhototoolsInstance();
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
static LLFloaterCamera* findSmallInstance();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
|
|
|
|||
|
|
@ -102,11 +102,15 @@ BOOL LLFloaterConversationPreview::postBuild()
|
|||
file = "chat";
|
||||
}
|
||||
mChatHistoryFileName = file;
|
||||
// <FS:Ansariel> Obsolete because of https://bitbucket.org/lindenlab/viewer/commits/57b32eb01cd35bbac440569df885036eb24f2369
|
||||
//if (mIsGroup && !LLStringUtil::endsWith(mChatHistoryFileName, GROUP_CHAT_SUFFIX))
|
||||
//{
|
||||
// mChatHistoryFileName += GROUP_CHAT_SUFFIX;
|
||||
//}
|
||||
// <FS:Ansariel> Broken version got removed in https://bitbucket.org/lindenlab/viewer/commits/57b32eb01cd35bbac440569df885036eb24f2369
|
||||
// but this is actually needed in the fixed form: If a group chat
|
||||
// log is stored in conversation.log without the suffix, the filename
|
||||
// will not be updated until the conversation is removed from the log,
|
||||
// resulting in the old chat log being displayed.
|
||||
if (mIsGroup && !LLStringUtil::endsWith(mChatHistoryFileName, GROUP_CHAT_SUFFIX))
|
||||
{
|
||||
mChatHistoryFileName += GROUP_CHAT_SUFFIX;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[NAME]"] = name;
|
||||
|
|
|
|||
|
|
@ -2513,7 +2513,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram");
|
||||
LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
|
||||
LLCheckBoxCtrl* ctrl_shader_enable = getChild<LLCheckBoxCtrl>("BasicShaders");
|
||||
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
|
||||
|
|
@ -2521,39 +2520,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
|
||||
LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
|
||||
|
||||
// if vertex shaders off, disable all shader related products
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"))
|
||||
{
|
||||
ctrl_shader_enable->setEnabled(FALSE);
|
||||
ctrl_shader_enable->setValue(FALSE);
|
||||
|
||||
ctrl_wind_light->setEnabled(FALSE);
|
||||
ctrl_wind_light->setValue(FALSE);
|
||||
|
||||
sky->setEnabled(FALSE);
|
||||
|
||||
ctrl_reflections->setEnabled(FALSE);
|
||||
ctrl_reflections->setValue(0);
|
||||
|
||||
ctrl_avatar_vp->setEnabled(FALSE);
|
||||
ctrl_avatar_vp->setValue(FALSE);
|
||||
|
||||
ctrl_avatar_cloth->setEnabled(FALSE);
|
||||
ctrl_avatar_cloth->setValue(FALSE);
|
||||
|
||||
ctrl_shadows->setEnabled(FALSE);
|
||||
ctrl_shadows->setValue(0);
|
||||
|
||||
ctrl_ssao->setEnabled(FALSE);
|
||||
ctrl_ssao->setValue(FALSE);
|
||||
|
||||
ctrl_dof->setEnabled(FALSE);
|
||||
ctrl_dof->setValue(FALSE);
|
||||
|
||||
ctrl_deferred->setEnabled(FALSE);
|
||||
ctrl_deferred->setValue(FALSE);
|
||||
}
|
||||
|
||||
// disabled windlight
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4392,7 +4392,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
// <FS:Ansariel> Fix "outfits" context menu
|
||||
if (outfits_id == mUUID)
|
||||
if (model->isObjectDescendentOf(mUUID, outfits_id) && getCategory() &&
|
||||
(getCategory()->getPreferredType() == LLFolderType::FT_NONE ||
|
||||
getCategory()->getPreferredType() == LLFolderType::FT_MY_OUTFITS))
|
||||
{
|
||||
items.push_back(std::string("New Outfit"));
|
||||
}
|
||||
|
|
@ -4498,17 +4500,17 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
|
|||
// Not sure what the right thing is to do here.
|
||||
if (!isCOFFolder() && cat && (cat->getPreferredType() != LLFolderType::FT_OUTFIT))
|
||||
{
|
||||
// <FS:Ansariel> Fix "outfits" context menu
|
||||
//if (!isInboxFolder()) // don't allow creation in inbox
|
||||
if (!isInboxFolder() && outfits_id != mUUID) // don't allow creation in inbox
|
||||
// </FS:Ansariel>
|
||||
if (!isInboxFolder()) // don't allow creation in inbox
|
||||
{
|
||||
// Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
|
||||
if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
|
||||
{
|
||||
items.push_back(std::string("New Folder"));
|
||||
}
|
||||
if (!isMarketplaceListingsFolder())
|
||||
// <FS:Ansariel> Fix "outfits" context menu
|
||||
//if (!isMarketplaceListingsFolder())
|
||||
if (!isMarketplaceListingsFolder() && !model->isObjectDescendentOf(mUUID, outfits_id))
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
items.push_back(std::string("New Script"));
|
||||
items.push_back(std::string("New Note"));
|
||||
|
|
|
|||
|
|
@ -470,7 +470,13 @@ void LLLogChat::loadChatHistory(const std::string& file_name, std::list<LLSD>& m
|
|||
if (is_group)
|
||||
{
|
||||
std::string old_name(file_name);
|
||||
old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
// <FS:Ansariel> FIRE-30582: Fix out of range crash
|
||||
//old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
if (LLStringUtil::endsWith(old_name, GROUP_CHAT_SUFFIX))
|
||||
{
|
||||
old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
fptr = LLFile::fopen(LLLogChat::makeLogFileName(old_name), "r");
|
||||
if (fptr)
|
||||
{
|
||||
|
|
@ -1234,7 +1240,13 @@ void LLLoadHistoryThread::loadHistory(const std::string& file_name, std::list<LL
|
|||
if (is_group)
|
||||
{
|
||||
std::string old_name(file_name);
|
||||
old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
// <FS:Ansariel> FIRE-30582: Fix out of range crash
|
||||
//old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
if (LLStringUtil::endsWith(old_name, GROUP_CHAT_SUFFIX))
|
||||
{
|
||||
old_name.erase(old_name.size() - GROUP_CHAT_SUFFIX.size());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
fptr = LLFile::fopen(LLLogChat::makeLogFileName(old_name), "r");
|
||||
if (fptr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
|
|||
mFilterMap["filter_type_textures"] = 0x01 << LLInventoryType::IT_TEXTURE;
|
||||
mFilterMap["filter_type_snapshots"] = 0x01 << LLInventoryType::IT_SNAPSHOT;
|
||||
mFilterMap["filter_type_meshes"] = 0x01 << LLInventoryType::IT_MESH;
|
||||
mFilterMap["filter_type_settings"] = 0x01 << LLInventoryType::IT_SETTINGS;
|
||||
|
||||
// initialize empty filter mask
|
||||
mFilterMask = 0;
|
||||
|
|
|
|||
|
|
@ -146,5 +146,9 @@ void LLPanelPresetsCameraPulldown::onViewButtonClick(const LLSD& user_data)
|
|||
// close the minicontrol, we're bringing up the big one
|
||||
setVisible(FALSE);
|
||||
|
||||
LLFloaterReg::toggleInstanceOrBringToFront("camera");
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
//LLFloaterReg::toggleInstanceOrBringToFront("camera");
|
||||
std::string floater_name = gSavedSettings.getBOOL("FSUseSmallCameraFloater") ? "fs_camera_small" : "camera";
|
||||
LLFloaterReg::toggleInstanceOrBringToFront(floater_name);
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,6 +226,20 @@ public:
|
|||
};
|
||||
LLAgentHandler gAgentHandler;
|
||||
|
||||
// <FS:Ansariel> FIRE-30611: "You" in transcript is underlined
|
||||
class FSAgentSelfHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
// requires trusted browser to trigger
|
||||
FSAgentSelfHandler() : LLCommandHandler("agentself", UNTRUSTED_THROTTLE) { }
|
||||
|
||||
bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
|
||||
{
|
||||
return gAgentHandler.handle(params, query_map, web);
|
||||
}
|
||||
};
|
||||
FSAgentSelfHandler gAgentSelfHandler;
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -1162,7 +1162,9 @@ LLVector3d LLToolGrabBase::getGrabPointGlobal()
|
|||
|
||||
void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset)
|
||||
{
|
||||
if (!object) return;
|
||||
// <FS:Ansariel> Crash fix
|
||||
//if (!object) return;
|
||||
if (!object || !object->getRegion()) return;
|
||||
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
|
|
@ -1199,7 +1201,9 @@ void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, co
|
|||
|
||||
void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick)
|
||||
{
|
||||
if (!object) return;
|
||||
// <FS:Ansariel> Crash fix
|
||||
//if (!object) return;
|
||||
if (!object || !object->getRegion()) return;
|
||||
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,20 @@ void handleRenderHiDPIChanged(const LLSD& newvalue)
|
|||
}
|
||||
// </FS:TS> FIRE-24081
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
void handleSmallCameraFloaterChanged(const LLSD& newValue)
|
||||
{
|
||||
std::string old_floater_name = newValue.asBoolean() ? "camera" : "fs_camera_small";
|
||||
std::string new_floater_name = newValue.asBoolean() ? "fs_camera_small" : "camera";
|
||||
|
||||
if (LLFloaterReg::instanceVisible(old_floater_name))
|
||||
{
|
||||
LLFloaterReg::hideInstance(old_floater_name);
|
||||
LLFloaterReg::showInstance(new_floater_name);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void settings_setup_listeners()
|
||||
|
|
@ -1263,6 +1277,9 @@ void settings_setup_listeners()
|
|||
|
||||
// <FS:Ansariel> Dynamic texture memory calculation
|
||||
gSavedSettings.getControl("FSDynamicTextureMemory")->getSignal()->connect(boost::bind(&handleDynamicTextureMemoryChanged, _2));
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
gSavedSettings.getControl("FSUseSmallCameraFloater")->getSignal()->connect(boost::bind(&handleSmallCameraFloaterChanged, _2));
|
||||
}
|
||||
|
||||
#if TEST_CACHED_CONTROL
|
||||
|
|
|
|||
|
|
@ -266,6 +266,8 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
|
||||
|
||||
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
LLFloaterReg::add("fs_camera_small", "floater_fs_camera_small.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
|
||||
LLFloaterReg::add("camera_presets", "floater_camera_presets.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCameraPresets>);
|
||||
LLFloaterReg::add("chat_voice", "floater_voice_chat_volume.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatVoiceVolume>);
|
||||
// <FS:Ansariel> [FS communication UI]
|
||||
|
|
|
|||
|
|
@ -11404,6 +11404,27 @@ bool use_http_textures()
|
|||
}
|
||||
// <FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
class FSToggleCameraFloater : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
std::string floater_name = gSavedSettings.getBOOL("FSUseSmallCameraFloater") ? "fs_camera_small" : "camera";
|
||||
LLFloaterReg::toggleInstance(floater_name);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class FSCheckCameraFloater : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
static LLCachedControl<bool> fsUseSmallCameraFloater(gSavedSettings, "FSUseSmallCameraFloater");
|
||||
return LLFloaterReg::instanceVisible(fsUseSmallCameraFloater ? "fs_camera_small" : "camera");
|
||||
}
|
||||
};
|
||||
// <FS:Ansariel>
|
||||
|
||||
void initialize_menus()
|
||||
{
|
||||
// A parameterized event handler used as ctrl-8/9/0 zoom controls below.
|
||||
|
|
@ -11499,7 +11520,11 @@ void initialize_menus()
|
|||
// <FS:Zi> Add reset camera angles menu
|
||||
view_listener_t::addMenu(new LLViewResetCameraAngles(), "View.ResetCameraAngles");
|
||||
// </FS:Zi>
|
||||
|
||||
// <FS:Ansariel> Optional small camera floater
|
||||
view_listener_t::addMenu(new FSToggleCameraFloater(), "View.ToggleCameraFloater");
|
||||
view_listener_t::addMenu(new FSCheckCameraFloater(), "View.CheckCameraFloater");
|
||||
// </FS:Ansariel>
|
||||
|
||||
// Me > Movement
|
||||
view_listener_t::addMenu(new LLAdvancedAgentFlyingInfo(), "Agent.getFlying");
|
||||
|
||||
|
|
|
|||
|
|
@ -84,6 +84,10 @@
|
|||
|
||||
#include "llviewernetwork.h"
|
||||
|
||||
// <FS:Ansariel> FIRE-30632: Bulk Windlight import
|
||||
#include "llenvironment.h"
|
||||
#include "llsettingsvo.h"
|
||||
|
||||
class LLFileEnableUpload : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
|
|
@ -1032,6 +1036,100 @@ void upload_new_resource(
|
|||
}
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-30632: Bulk Windlight import
|
||||
static std::set<std::string> windlight_filenames;
|
||||
static bool bulk_windlight_import_active = false;
|
||||
|
||||
void on_windlight_imported(LLUUID inventory_id, LLSD results, const std::string& name)
|
||||
{
|
||||
if (inventory_id.isNull() || !results["success"].asBoolean())
|
||||
{
|
||||
LLSD args;
|
||||
args["NAME"] = name;
|
||||
LLNotificationsUtil::add("CantCreateInventoryName", args);
|
||||
}
|
||||
|
||||
windlight_filenames.erase(name);
|
||||
|
||||
if (windlight_filenames.empty())
|
||||
{
|
||||
bulk_windlight_import_active = false;
|
||||
LLUploadDialog::modalUploadFinished();
|
||||
LLNotificationsUtil::add("WindlightBulkImportFinished");
|
||||
}
|
||||
}
|
||||
|
||||
const void import_windlight_bulk(const std::vector<std::string>& filenames, LLFilePicker::ELoadFilter filter_type, LLSettingsType::type_e settings_type)
|
||||
{
|
||||
LLSD messages;
|
||||
LLSettingsBase::ptr_t settings;
|
||||
if (filenames.size() < 1) return;
|
||||
|
||||
bulk_windlight_import_active = true;
|
||||
LLUploadDialog::modalUploadDialog(LLTrans::getString("ImportingWindlightBulk"));
|
||||
|
||||
const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS);
|
||||
|
||||
windlight_filenames.clear();
|
||||
windlight_filenames.insert(filenames.begin(), filenames.end());
|
||||
|
||||
for (auto& filename : filenames)
|
||||
{
|
||||
switch (settings_type)
|
||||
{
|
||||
case LLSettingsType::ST_SKY:
|
||||
settings = LLEnvironment::createSkyFromLegacyPreset(filename, messages);
|
||||
break;
|
||||
case LLSettingsType::ST_WATER:
|
||||
settings = LLEnvironment::createWaterFromLegacyPreset(filename, messages);
|
||||
break;
|
||||
case LLSettingsType::ST_DAYCYCLE:
|
||||
settings = LLEnvironment::createDayCycleFromLegacyPreset(filename, messages);
|
||||
break;
|
||||
default:
|
||||
settings.reset();
|
||||
break;
|
||||
}
|
||||
|
||||
if (settings)
|
||||
{
|
||||
LLSettingsVOBase::createInventoryItem(settings, parent_id, LLURI::unescape(gDirUtilp->getBaseFileName(filename, true)),
|
||||
[filename](LLUUID asset_id, LLUUID inventory_id, LLUUID, LLSD results) { on_windlight_imported(inventory_id, results, filename); });
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("WLImportFail", messages);
|
||||
windlight_filenames.erase(filename);
|
||||
}
|
||||
}
|
||||
|
||||
// For error cases
|
||||
if (windlight_filenames.empty())
|
||||
{
|
||||
bulk_windlight_import_active = false;
|
||||
LLUploadDialog::modalUploadFinished();
|
||||
LLNotificationsUtil::add("WindlightBulkImportFinished");
|
||||
}
|
||||
}
|
||||
|
||||
class FSFileImportWindlightBulk : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
LLSettingsType::type_e settings_type = (LLSettingsType::type_e)userdata.asInteger();
|
||||
(new LLFilePickerReplyThread(boost::bind(&import_windlight_bulk, _1, _2, settings_type), LLFilePicker::FFLOAD_XML, true))->getFile();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class FSFileEnableImportWindlightBulk : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
return !bulk_windlight_import_active;
|
||||
}
|
||||
};
|
||||
// </FS:Ansariel>
|
||||
|
||||
void init_menu_file()
|
||||
{
|
||||
|
|
@ -1053,5 +1151,10 @@ void init_menu_file()
|
|||
view_listener_t::addMenu(new LLMeshUploadVisible(), "File.VisibleUploadModel");
|
||||
view_listener_t::addCommit(new FSFileImportLinkset(), "File.ImportLinkset"); // <FS:CR> Import linkset item
|
||||
|
||||
// <FS:Ansariel> FIRE-30632: Bulk Windlight import
|
||||
view_listener_t::addCommit(new FSFileImportWindlightBulk(), "File.ImportWindlightBulk");
|
||||
view_listener_t::addEnable(new FSFileEnableImportWindlightBulk(), "File.EnableImportWindlightBulk");
|
||||
// </FS:Ansariel>
|
||||
|
||||
// "File.SaveTexture" moved to llpanelmaininventory so that it can be properly handled.
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,12 +61,17 @@
|
|||
class FSSettingsCollector : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
FSSettingsCollector() {}
|
||||
FSSettingsCollector()
|
||||
{
|
||||
mMarketplaceFolderUUID = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false);
|
||||
}
|
||||
|
||||
virtual ~FSSettingsCollector() {}
|
||||
|
||||
bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)
|
||||
{
|
||||
if (item && item->getType() == LLAssetType::AT_SETTINGS &&
|
||||
!gInventory.isObjectDescendentOf(item->getUUID(), mMarketplaceFolderUUID) &&
|
||||
mSeen.find(item->getAssetUUID()) == mSeen.end())
|
||||
{
|
||||
mSeen.insert(item->getAssetUUID());
|
||||
|
|
@ -79,6 +84,7 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
LLUUID mMarketplaceFolderUUID;
|
||||
std::set<LLUUID> mSeen;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ BEGIN
|
|||
VALUE "FileDescription", "Firestorm"
|
||||
VALUE "FileVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}"
|
||||
VALUE "InternalName", "Firestorm"
|
||||
VALUE "LegalCopyright", "Copyright \251 2010-2020, The Phoenix Firestorm Project, Inc."
|
||||
VALUE "LegalCopyright", "Copyright \251 2010-2021, The Phoenix Firestorm Project, Inc."
|
||||
VALUE "OriginalFilename", "Firestorm.exe"
|
||||
VALUE "ProductName", "Firestorm"
|
||||
VALUE "ProductVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}"
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 323 B |
|
After Width: | Height: | Size: 405 B |
|
After Width: | Height: | Size: 332 B |
|
After Width: | Height: | Size: 403 B |
|
After Width: | Height: | Size: 328 B |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 331 B |
|
|
@ -93,7 +93,8 @@
|
|||
<combo_box.item value="filter_type_textures" label="Texturen" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Fotos" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_separator" label="------------" enabled="false" />
|
||||
<combo_box.item value="filter_type_settings" label="Einstellungen" />
|
||||
<combo_box.item value="filter_separator" label="------------" />
|
||||
<combo_box.item value="filter_type_custom" label="Benutzerdefiniert..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -170,7 +170,6 @@
|
|||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
tool_tip="Rear View"
|
||||
parameter="Rear View" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Back_Off" />
|
||||
|
|
|
|||
|
|
@ -522,6 +522,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Textures" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_type_settings" label="Settings" />
|
||||
<combo_box.item value="filter_separator" label="------------" enabled="false" />
|
||||
<combo_box.item value="filter_type_custom" label="Custom..." />
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Tekstury" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Zdjęcia" />
|
||||
<combo_box.item value="filter_type_meshes" label="Mesze" />
|
||||
<combo_box.item value="filter_type_settings" label="Otoczenia" />
|
||||
<combo_box.item value="filter_type_custom" label="Własny filtr..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Текстуры" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Снимки" />
|
||||
<combo_box.item value="filter_type_meshes" label="Меш" />
|
||||
<combo_box.item value="filter_type_settings" label="Настройки" />
|
||||
<combo_box.item value="filter_type_custom" label="Другое..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="fs_camera_floater_small" title="Kamerasteuerungen">
|
||||
<floater.string name="rotate_tooltip">
|
||||
Kamera um Fokus drehen
|
||||
</floater.string>
|
||||
<floater.string name="zoom_tooltip">
|
||||
Kamera auf Fokus zoomen
|
||||
</floater.string>
|
||||
<floater.string name="move_tooltip">
|
||||
Kamera nach oben, unten, links und rechts bewegen
|
||||
</floater.string>
|
||||
<floater.string name="free_mode_title">
|
||||
Objekt ansehen
|
||||
</floater.string>
|
||||
|
||||
<panel name="zoom">
|
||||
<layout_stack name="camera_view_layout_stack">
|
||||
<layout_panel name="camera_rotate_layout_panel">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="camera_zoom_layout_panel">
|
||||
<slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="panel_track">
|
||||
<joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
<panel name="buttons_view">
|
||||
<panel_camera_item name="front_view" tool_tip="Frontalansicht">
|
||||
<panel_camera_item.text name="front_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item name="group_view" tool_tip="Seitenansicht">
|
||||
<panel_camera_item.text name="side_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item name="rear_view" tool_tip="Rückansicht">
|
||||
<panel_camera_item.text name="rear_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
<panel name="buttons">
|
||||
<panel_camera_item name="object_view" tool_tip="Objekt-Ansicht">
|
||||
<panel_camera_item.text name="object_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item name="mouselook_view" tool_tip="Mouselook">
|
||||
<panel_camera_item.text name="mouselook_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item name="reset_view" tool_tip="Ansicht zurücksetzen">
|
||||
<panel_camera_item.text name="reset_view_text">
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -122,6 +122,11 @@
|
|||
<menu_item_call label="Meine Umgebungen..." name="my_environs"/>
|
||||
<menu_item_call label="Persönliche Beleuchtung..." name="adjustment_tool"/>
|
||||
<menu_item_check label="Wolken pausieren" name="pause_clouds"/>
|
||||
<menu label="Mehrfach-Import" name="WL Bulk Import">
|
||||
<menu_item_call label="Tage..." name="WL Bulk Import Days"/>
|
||||
<menu_item_call label="Himmel..." name="WL Bulk Import Skies"/>
|
||||
<menu_item_call label="Wasser..." name="WL Bulk Import Water"/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu label="Foto und Video" name="photo_and_video">
|
||||
<menu_item_call label="Fototools" name="phototools_item_call"/>
|
||||
|
|
|
|||
|
|
@ -5474,4 +5474,10 @@ Falls Sie diesen Nutzungsbestimmungen nicht zustimmen, sollten keinerlei finanzi
|
|||
<notification name="EnableHiDPI">
|
||||
HiDPI kann negative Effekte aufweisen und die Leistung beeinträchtigen.
|
||||
</notification>
|
||||
<notification name="CantCreateInventoryName">
|
||||
Dieses Inventar kann nicht erstellt werden: [NAME]
|
||||
</notification>
|
||||
<notification name="WindlightBulkImportFinished">
|
||||
Mehrfach-Import von Windlight abgeschlossen.
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@
|
|||
<combo_box.item value="filter_type_textures" label="Texturen" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Fotos" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_separator" label="------------" enabled="false" />
|
||||
<combo_box.item value="filter_type_settings" label="Einstellungen" />
|
||||
<combo_box.item value="filter_separator" label="------------" />
|
||||
<combo_box.item value="filter_type_custom" label="Benutzerdefiniert..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@
|
|||
<check_box label="Deaktiviere automatisches Öffnen der Blockierliste" name="FSDisableBlockListAutoOpen" tool_tip="Deaktiviert das automatische Öffnen der Blockierliste, wenn Avatare oder Objekte geblockt werden."/>
|
||||
<check_box label="„Freunde“ und „Gruppen“ im Menü „Unterhalten“ öffnen die [SHORT_VIEWER_GENERATION]-Version" name="FSUseV2Friends" tool_tip="Falls aktiviert, werden Freunde bzw. Gruppen im „Leute“-Fenster geöffnet - ansonsten im Fenster „Kontakte“."/>
|
||||
<check_box label="Ursprüngliche Version des Objekteigenschaften-Fensters verwenden" name="FSUseLegacyObjectProperties" tool_tip="Falls aktiviert, wird die ursprüngliche Version im Viewer-1-Stil des Eigenschaften-Fensters für Objekte verwendet."/>
|
||||
<check_box label="Kleineres Fenster für Kamerasteuerung verwenden" name="FSUseSmallCameraFloater" tool_tip="Falls aktiviert, wird die ursprüngliche, kleinere Version des Fensters für die Kamerasteuerung ohne die Kontrollen für die Kamera-Voreinstellungen verwendet."/>
|
||||
<text name="standalone_textbox">
|
||||
Eigene Fenster verwenden für:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -7159,4 +7159,7 @@ Ihre aktuelle Position: [AVATAR_POS]
|
|||
<string name="FSAreaSearch_Cost_Label">
|
||||
[COST] L$
|
||||
</string>
|
||||
<string name="ImportingWindlightBulk">
|
||||
Importiere Windlight...
|
||||
</string>
|
||||
</strings>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@
|
|||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
tool_tip="Rear View"
|
||||
parameter="Rear View" />
|
||||
<panel_camera_item.picture image_name="Cam_Preset_Back_Off" />
|
||||
<panel_camera_item.selected_picture image_name="Cam_Preset_Back_On" />
|
||||
|
|
|
|||
|
|
@ -0,0 +1,413 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<!-- header_height="0"-->
|
||||
<floater
|
||||
legacy_header_height="0"
|
||||
header_height="0"
|
||||
bg_alpha_image_overlay="LtGray_50"
|
||||
can_dock="false"
|
||||
can_minimize="false"
|
||||
can_resize="true"
|
||||
can_close="false"
|
||||
chrome="true"
|
||||
follows="bottom"
|
||||
height="77"
|
||||
min_height="77"
|
||||
layout="topleft"
|
||||
name="fs_camera_floater_small"
|
||||
help_topic="camera_floater_small"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
save_dock_state="false"
|
||||
single_instance="true"
|
||||
width="155"
|
||||
min_width="155">
|
||||
<floater.string
|
||||
name="rotate_tooltip">
|
||||
Rotate Camera Around Focus
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="zoom_tooltip">
|
||||
Zoom Camera Towards Focus
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="move_tooltip">
|
||||
Move Camera Up and Down, Left and Right
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="camera_modes_title">
|
||||
camera_modes_title
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="pan_mode_title">
|
||||
pan_mode_title
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="presets_mode_title">
|
||||
presets_mode_title
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="free_mode_title">
|
||||
free_mode_title
|
||||
</floater.string>
|
||||
<panel
|
||||
border="false"
|
||||
class="camera_zoom_panel"
|
||||
height="50"
|
||||
layout="topleft"
|
||||
left="2"
|
||||
mouse_opaque="false"
|
||||
name="zoom"
|
||||
follows="all"
|
||||
top="25"
|
||||
width="150">
|
||||
|
||||
<layout_stack
|
||||
top="0"
|
||||
enabled="true"
|
||||
height="50"
|
||||
left="0"
|
||||
mouse_opaque="true"
|
||||
name="camera_view_layout_stack"
|
||||
orientation="horizontal"
|
||||
width="150"
|
||||
follows="all">
|
||||
|
||||
<layout_panel
|
||||
name="camera_rotate_layout_panel"
|
||||
user_resize="false"
|
||||
height="80"
|
||||
width="80">
|
||||
|
||||
<joystick_rotate
|
||||
follows="all"
|
||||
height="80"
|
||||
width="80"
|
||||
image_selected="Cam_Rotate_In"
|
||||
image_unselected="Cam_Rotate_Out"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="cam_rotate_stick"
|
||||
quadrant="left"
|
||||
scale_image="true"
|
||||
sound_flags="3"
|
||||
visible="true"
|
||||
tool_tip="Orbit camera around focus"
|
||||
held_down_delay.seconds="0.0"
|
||||
top="0" />
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
name="camera_zoom_layout_panel"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
height="70"
|
||||
width="16">
|
||||
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="16"
|
||||
image_disabled="AddItem_Disabled"
|
||||
image_selected="AddItem_Press"
|
||||
image_unselected="AddItem_Off"
|
||||
layout="topleft"
|
||||
left_delta="-2"
|
||||
name="zoom_plus_btn"
|
||||
scale_image="false"
|
||||
width="16"
|
||||
top="0">
|
||||
<commit_callback
|
||||
function="Zoom.plus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.plus" />
|
||||
</button>
|
||||
<slider_bar
|
||||
height="48"
|
||||
layout="topleft"
|
||||
name="zoom_slider"
|
||||
orientation="vertical"
|
||||
follows="top|left|bottom"
|
||||
tool_tip="Zoom camera toward focus"
|
||||
top_delta="13"
|
||||
left_delta="1"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
width="16">
|
||||
<commit_callback function="Slider.value_changed"/>
|
||||
</slider_bar>
|
||||
<button
|
||||
follows="bottom|left"
|
||||
height="16"
|
||||
image_disabled="MinusItem_Disabled"
|
||||
image_selected="MinusItem_Press"
|
||||
image_unselected="MinusItem_Off"
|
||||
layout="topleft"
|
||||
name="zoom_minus_btn"
|
||||
scale_image="true"
|
||||
top_delta="44"
|
||||
left_delta="0"
|
||||
width="16">
|
||||
<commit_callback
|
||||
function="Zoom.minus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.minus" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
name="panel_track"
|
||||
user_resize="false"
|
||||
height="80"
|
||||
width="80">
|
||||
|
||||
<joystick_track
|
||||
follows="all"
|
||||
height="80"
|
||||
width="80"
|
||||
image_selected="Cam_Tracking_In"
|
||||
image_unselected="Cam_Tracking_Out"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="cam_track_stick"
|
||||
quadrant="left"
|
||||
scale_image="true"
|
||||
sound_flags="3"
|
||||
tool_tip="Move camera up and down, left and right"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
||||
</panel>
|
||||
|
||||
<panel
|
||||
border="false"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
top="0"
|
||||
follows="top|left"
|
||||
name="buttons_view"
|
||||
width="56">
|
||||
<panel_camera_item
|
||||
name="front_view"
|
||||
tool_tip="Front view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="Front View" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Front_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Front_On" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="front_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
tool_tip="Side view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="20"
|
||||
top_delta="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="Side View" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Side_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Side_On" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="group_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
tool_tip="Rear view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="20"
|
||||
top_delta="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="Rear View" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Back_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Back_On" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="rear_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
|
||||
<panel
|
||||
border="false"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
left_pad="4"
|
||||
top="0"
|
||||
name="buttons"
|
||||
width="58">
|
||||
<panel_camera_item
|
||||
name="object_view"
|
||||
tool_tip="Object view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="4">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="object_view" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Object_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Object_View_On" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="object_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="mouselook_view"
|
||||
tool_tip="Mouselook view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="20"
|
||||
top_delta="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="mouselook_view" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="MouseLook_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="MouseLook_View_On" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="mouselook_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="reset_view"
|
||||
tool_tip="Reset view"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="20"
|
||||
top_delta="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="reset_view" />
|
||||
<panel_camera_item.icon_over
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
top="18"
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="StopReload_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
top="18"
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="StopReload_Over" />
|
||||
<panel_camera_item.text
|
||||
width="0"
|
||||
name="reset_view_text">
|
||||
""
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -1461,7 +1461,7 @@
|
|||
label="Depth of Field focus follows pointer"
|
||||
layout="topleft"
|
||||
name="FSFocusPointFollowsPointer"
|
||||
tool_tip="Depth of Field focus will follow your mouse, this behaviour matches that seen when using flycam. Use in conjunction with lock"
|
||||
tool_tip="Depth of Field (DoF) focus will follow your mouse, this behaviour matches that seen when using flycam. Use in conjunction with DoF focus lock"
|
||||
top_pad="4"
|
||||
width="256"/>
|
||||
<check_box
|
||||
|
|
|
|||
|
|
@ -237,11 +237,9 @@
|
|||
label="Camera Controls"
|
||||
name="Camera Controls">
|
||||
<menu_item_check.on_check
|
||||
function="Floater.Visible"
|
||||
parameter="camera" />
|
||||
function="View.CheckCameraFloater" />
|
||||
<menu_item_check.on_click
|
||||
function="Floater.Toggle"
|
||||
parameter="camera" />
|
||||
function="View.ToggleCameraFloater" />
|
||||
</menu_item_check>
|
||||
|
||||
<menu_item_separator/>
|
||||
|
|
@ -1114,7 +1112,38 @@
|
|||
function="RLV.EnableIfNot"
|
||||
parameter="setenv" />
|
||||
</menu_item_check>
|
||||
|
||||
<menu_item_separator/>
|
||||
<menu
|
||||
label="Bulk Import"
|
||||
name="WL Bulk Import">
|
||||
<menu_item_call
|
||||
label="Days..."
|
||||
name="WL Bulk Import Days">
|
||||
<menu_item_call.on_click
|
||||
function="File.ImportWindlightBulk"
|
||||
parameter="2"/>
|
||||
<menu_item_call.on_enable
|
||||
function="File.EnableImportWindlightBulk"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Skies..."
|
||||
name="WL Bulk Import Skies">
|
||||
<menu_item_call.on_click
|
||||
function="File.ImportWindlightBulk"
|
||||
parameter="0"/>
|
||||
<menu_item_call.on_enable
|
||||
function="File.EnableImportWindlightBulk"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Water..."
|
||||
name="WL Bulk Import Water">
|
||||
<menu_item_call.on_click
|
||||
function="File.ImportWindlightBulk"
|
||||
parameter="1"/>
|
||||
<menu_item_call.on_enable
|
||||
function="File.EnableImportWindlightBulk"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
<!--
|
||||
|
|
|
|||
|
|
@ -13578,5 +13578,19 @@ No valid environment setting selected.
|
|||
Please note that "Shared Environment" and "Day cycle based" cannot be selected!
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="CantCreateInventoryName"
|
||||
type="notify">
|
||||
<tag>fail</tag>
|
||||
Cannot create inventory item: [NAME]
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="WindlightBulkImportFinished"
|
||||
type="notifytip">
|
||||
Bulk import of Windlights has finished.
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Textures" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_type_settings" label="Settings" />
|
||||
<combo_box.item value="filter_separator" label="------------" enabled="false" />
|
||||
<combo_box.item value="filter_type_custom" label="Custom..." />
|
||||
|
||||
|
|
|
|||
|
|
@ -783,11 +783,11 @@
|
|||
name="FSInspectAvatarSlurlOpensProfile"
|
||||
tool_tip="If enabled, Firestorm will open the profile of an avatar directly when clicking on a link with its name"
|
||||
initial_value="true"
|
||||
top_pad="8"
|
||||
top_pad="6"
|
||||
left="10"
|
||||
width="250" />
|
||||
<check_box
|
||||
top_pad="2"
|
||||
top_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Disable automatic opening of block list"
|
||||
|
|
@ -796,7 +796,7 @@
|
|||
control_name="FSDisableBlockListAutoOpen"
|
||||
tool_tip="Disables the automatic opening of the block list when blocking avatars or objects."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
top_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="'Friends' and 'Groups' in 'Comm' menu opens the [SHORT_VIEWER_GENERATION] based windows"
|
||||
|
|
@ -805,7 +805,7 @@
|
|||
control_name="FSUseV2Friends"
|
||||
tool_tip="If enabled, Friends / Groups will open through the People panel - otherwise they will open in the Contacts panel."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
top_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Use legacy object properties"
|
||||
|
|
@ -813,6 +813,15 @@
|
|||
width="270"
|
||||
control_name="FSUseLegacyObjectProperties"
|
||||
tool_tip="If enabled, the legacy object profile window will be used when opening object properties."/>
|
||||
<check_box
|
||||
top_pad="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Use small camera window"
|
||||
name="FSUseSmallCameraFloater"
|
||||
width="270"
|
||||
control_name="FSUseSmallCameraFloater"
|
||||
tool_tip="If enabled, the smaller, legacy camera window without camera preset controls will be used."/>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
|
|
|
|||
|
|
@ -3202,4 +3202,6 @@ Your current position: [AVATAR_POS]
|
|||
<string name="TexturePickerOutfitHeader">Picture for Outfit</string>
|
||||
<string name="unknown_script">(Unknown script)</string>
|
||||
<string name="FSAreaSearch_Cost_Label">L$[COST]</string>
|
||||
|
||||
<string name="ImportingWindlightBulk">Importing Windlights...</string>
|
||||
</strings>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
draw_stripes="true"
|
||||
scroll_bar_bg_visible="false"
|
||||
scroll_bar_bg_color="black"
|
||||
mouse_wheel_opaque="false"
|
||||
mouse_wheel_opaque="true"
|
||||
mouse_opaque="true"
|
||||
background_visible="true"
|
||||
heading_height="23"
|
||||
|
|
|
|||
|
|
@ -235,7 +235,6 @@
|
|||
<text name="scale_label">
|
||||
Échelle (1 = aucune) :
|
||||
</text>
|
||||
<spinner name="import_scale" value="1.0"/>
|
||||
<text name="dimensions_label">
|
||||
Dimensions :
|
||||
</text>
|
||||
|
|
@ -243,38 +242,140 @@
|
|||
[X] X [Y] X [Z]
|
||||
</text>
|
||||
<check_box label="Inclure les textures" name="upload_textures"/>
|
||||
<text name="include_label">
|
||||
Modèles d'avatar uniquement :
|
||||
</text>
|
||||
</panel>
|
||||
<panel label="Outrepasser" title="Avatar" name="rigging_panel">
|
||||
<check_box label="Inclure pondération de la peau :" name="upload_skin"/>
|
||||
<check_box label="Inclure position des articulations :" name="upload_joints"/>
|
||||
<check_box label="Verrouiller l’échelle si la position des articulations est définie" name="lock_scale_if_joint_position"/>
|
||||
<text name="pelvis_offset_label">
|
||||
Décalage Z (élever/abaisser l'avatar) :
|
||||
</text>
|
||||
<spinner name="pelvis_offset" value="0.0"/>
|
||||
<text name="skin_too_many_joints">
|
||||
Trop d'articulations texturées
|
||||
</text>
|
||||
<text name="skin_unknown_joint">
|
||||
Le modèle a des articulations inconnues
|
||||
</text>
|
||||
<text name="joints_descr">
|
||||
Articulations :
|
||||
</text>
|
||||
<text name="conflicts_description">
|
||||
[CONFLICTS] Conflits dans la/les articulations [JOINTS_COUNT]
|
||||
</text>
|
||||
<text name="pos_overrides_descr">
|
||||
Position annulée pour l'articulation '[JOINT]':
|
||||
</text>
|
||||
<scroll_list name="pos_overrides_list">
|
||||
<scroll_list.columns label="Modèle" name="model_name"/>
|
||||
<scroll_list.columns label="X" name="axis_x"/>
|
||||
<scroll_list.columns label="Y" name="axis_y"/>
|
||||
<scroll_list.columns label="Z" name="axis_z"/>
|
||||
</scroll_list>
|
||||
</panel>
|
||||
<panel label="Journal" name="logs_panel">
|
||||
<check_box label="Afficher le journal détaillé" name="verbose_logging"/>
|
||||
</panel>
|
||||
<panel label="Réglages aperçu" name="mesh_preview_settings_panel">
|
||||
<text name="mesh_upload_behaviour_label">
|
||||
Chargement des modèles :
|
||||
</text>
|
||||
<check_box label="Activation automatique des poids" tool_tip="Régler automatiquement le poids des mesh avec les informations de rigging" name="mesh_preview_auto_weights"/>
|
||||
<check_box label="Visualisation automatique des poids" tool_tip="Visualiser automatiquement les poids dans l'aperçu des meshes avec les info de rigging" name="mesh_preview_auto_show_weights"/>
|
||||
<text name="mesh_preview_colors_label">
|
||||
Couleurs de l'aperçu des modèles :
|
||||
</text>
|
||||
<text name="user_label">
|
||||
Général :
|
||||
</text>
|
||||
<color_swatch label="Arrière-plan" tool_tip="Couleur d'arrière-plan pour l'uploader" name="mesh_preview_canvas_color"/>
|
||||
<color_swatch label="Arêtes du modèle" tool_tip="Couleur des arêtes du modèle dans l'aperçu de l'uploader" name="mesh_preview_edge_color"/>
|
||||
<text name="physics_settings_label">
|
||||
Physiques :
|
||||
</text>
|
||||
<color_swatch label="Arêtes du physique" tool_tip="Couleur des arêtes pour les triangles du physique dans l'aperçu de l'uploader" name="mesh_preview_physics_edge_color"/>
|
||||
<color_swatch label="Physique" tool_tip="Couleur de remplissage pour les physiques dans l'aperçu de l'uploader" name="mesh_preview_physics_fill_color"/>
|
||||
<text name="physics_issues_setting_label">
|
||||
Pb des physiques :
|
||||
</text>
|
||||
<color_swatch label="Mauvaises arêtes" tool_tip="Couleur des arêtes pour les triangles dégénérés (fin) dans l'aperçu de l'uploader" name="mesh_preview_degenerate_edge_color"/>
|
||||
<color_swatch label="Mauvais triangles" tool_tip="Couleur de remplissage pour les triangles dégénérés (fin) dans l'aperçu de l'uploader" name="mesh_degenerate_fill_color"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
<panel name="weights_and_warning_panel">
|
||||
<button label="Calculer les poids et les frais" name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
|
||||
<button label="Annuler" name="cancel_btn"/>
|
||||
<button label="Charger le modèle" name="ok_btn" tool_tip="Charger dans le simulateur"/>
|
||||
<button label="Effacer les paramètres / réinitialiser le formulaire" name="reset_btn"/>
|
||||
<button label="Charger" name="ok_btn" tool_tip="Charger dans le simulateur"/>
|
||||
<button label="Effacer les paramètres / réinitialiser" name="reset_btn"/>
|
||||
<text name="upload_fee">
|
||||
Frais de chargement : [FEE] L$
|
||||
Frais de chargt : [FEE] L$
|
||||
</text>
|
||||
<text name="prim_weight">
|
||||
Impact sur le terrain : [EQ]
|
||||
Impact terrain : [EQ]
|
||||
</text>
|
||||
<text name="download_weight">
|
||||
Téléchargement : [ST]
|
||||
Chargement : [ST]
|
||||
</text>
|
||||
<text name="physics_weight">
|
||||
Propriétés physiques : [PH]
|
||||
Physique : [PH]
|
||||
</text>
|
||||
<text name="server_weight">
|
||||
Serveur : [SIM]
|
||||
</text>
|
||||
<panel name="price_breakdown_panel">
|
||||
<text name="price_breakdown_title">
|
||||
Répartition des coûts
|
||||
</text>
|
||||
<text name="price_breakdown_labels">
|
||||
Chargement :
|
||||
Physique :
|
||||
Instances :
|
||||
Textures :
|
||||
Modèle :
|
||||
</text>
|
||||
</panel>
|
||||
<!--
|
||||
<text name="streaming_breakdown_labels">
|
||||
Streaming/Téléchargement :
|
||||
Élevé :
|
||||
Moyen :
|
||||
Bas :
|
||||
Le plus bas :
|
||||
</text>
|
||||
-->
|
||||
<panel name="physics_costs_panel">
|
||||
<text name="physics_breakdown_title">
|
||||
Coûts du physique
|
||||
</text>
|
||||
<text name="physics_breakdown_labels">
|
||||
Enveloppe :
|
||||
Maillage :
|
||||
Analysé :
|
||||
</text>
|
||||
</panel>
|
||||
<panel name="preview_controls_panel">
|
||||
<panel name="preview_controls_inner_panel">
|
||||
<text name="preview_controls_title">
|
||||
Contrôles de l'aperçu
|
||||
</text>
|
||||
<combo_box name="preview_lod_combo" tool_tip="Dargestelltes LOD in der Vorschau">
|
||||
<combo_item name="high">Élevé</combo_item>
|
||||
<combo_item name="medium">Moyen</combo_item>
|
||||
<combo_item name="low">Faible</combo_item>
|
||||
<combo_item name="lowest">Le plus faible</combo_item>
|
||||
</combo_box>
|
||||
</panel>
|
||||
<check_box label="Arêtes" name="show_edges"/>
|
||||
<check_box label="Textures" name="show_textures"/>
|
||||
<check_box label="Guide UV" name="show_uv_guide"/>
|
||||
<check_box label="Physique" name="show_physics"/>
|
||||
<text name="exploder_label" width="105">
|
||||
Aperçu :
|
||||
</text>
|
||||
<slider name="physics_explode" width="75" />
|
||||
<check_box label="Poids" name="show_skin_weight"/>
|
||||
<check_box label="Positions articul." name="show_joint_positions"/>
|
||||
<check_box label="Surcharge pos. articulations" name="show_joint_overrides"/>
|
||||
</panel>
|
||||
<text name="warning_title">
|
||||
Remarque :
|
||||
</text>
|
||||
|
|
@ -287,33 +388,6 @@
|
|||
</panel>
|
||||
</panel>
|
||||
<text name="lod_label">
|
||||
Aperçu :
|
||||
Aperçu :
|
||||
</text>
|
||||
<panel name="right_panel">
|
||||
<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d'aperçu.">
|
||||
<combo_item name="high">
|
||||
Élevé
|
||||
</combo_item>
|
||||
<combo_item name="medium">
|
||||
Moyen
|
||||
</combo_item>
|
||||
<combo_item name="low">
|
||||
Faible
|
||||
</combo_item>
|
||||
<combo_item name="lowest">
|
||||
Le plus faible
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
<text name="label_display">
|
||||
Afficher...
|
||||
</text>
|
||||
<check_box label="Coins" name="show_edges"/>
|
||||
<check_box label="Propriétés physiques" name="show_physics"/>
|
||||
<check_box label="Textures" name="show_textures"/>
|
||||
<check_box label="Pondération de la peau" name="show_skin_weight"/>
|
||||
<check_box label="Articulations" name="show_joint_positions"/>
|
||||
<text name="physics_explode_label">
|
||||
Décomposition de l'aperçu :
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
Vista laterale
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item name="rear_view">/>
|
||||
<panel_camera_item name="rear_view">
|
||||
<panel_camera_item.text name="rear_view_text">
|
||||
Vista retro
|
||||
</panel_camera_item.text>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="fs_camera_floater_small" title="Sterowanie kamerą">
|
||||
<floater.string name="rotate_tooltip">
|
||||
Obróć kamerę wokół punktu skupienia
|
||||
</floater.string>
|
||||
<floater.string name="zoom_tooltip">
|
||||
Przybliż kamerę do punktu skupienia
|
||||
</floater.string>
|
||||
<floater.string name="move_tooltip">
|
||||
Poruszaj kamerą w górę, w dół, w lewo i w prawo
|
||||
</floater.string>
|
||||
<floater.string name="free_mode_title">
|
||||
Pokaż obiekt
|
||||
</floater.string>
|
||||
<panel name="zoom">
|
||||
<layout_stack name="camera_view_layout_stack">
|
||||
<layout_panel name="camera_rotate_layout_panel">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Obróć kamerę wokół punktu skupienia" />
|
||||
</layout_panel>
|
||||
<layout_panel name="camera_zoom_layout_panel">
|
||||
<slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do punktu skupienia" />
|
||||
</layout_panel>
|
||||
<layout_panel name="panel_track">
|
||||
<joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
<panel name="buttons_view">
|
||||
<panel_camera_item name="front_view" tool_tip="Widok od przodu" />
|
||||
<panel_camera_item name="group_view" tool_tip="Widok ponad ramieniem" />
|
||||
<panel_camera_item name="rear_view" tool_tip="Widok od tyłu" />
|
||||
</panel>
|
||||
<panel name="buttons">
|
||||
<panel_camera_item name="object_view" tool_tip="Pokazywanie obiektu" />
|
||||
<panel_camera_item name="mouselook_view" tool_tip="Widok pierwszoosobowy" />
|
||||
<panel_camera_item name="reset_view" tool_tip="Resetuj widok" />
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -198,7 +198,7 @@
|
|||
<check_box label="Auto-włączanie wag" tool_tip="Automatycznie włącz wagi dla meszy z informacjami o riggowaniu" name="mesh_preview_auto_weights" />
|
||||
<check_box label="Auto-podgląd wag" tool_tip="Automatycznie wyświetlaj wagi w podglądzie dla meszy z informacjami o riggowaniu" name="mesh_preview_auto_show_weights" />
|
||||
<text name="mesh_preview_colors_label">
|
||||
Kolory podglądu przesyłania:
|
||||
Kolory podglądu przesyłania:
|
||||
</text>
|
||||
<text name="user_label">
|
||||
Ogólne:
|
||||
|
|
@ -249,13 +249,13 @@ Tekstury:
|
|||
Model:
|
||||
</text>
|
||||
</panel>
|
||||
<text name="streaming_breakdown_labels">
|
||||
<!-- <text name="streaming_breakdown_labels">
|
||||
Streaming:
|
||||
Wysokie:
|
||||
Średnie:
|
||||
Niskie:
|
||||
Najniższe:
|
||||
</text>
|
||||
</text> -->
|
||||
<panel name="physics_costs_panel">
|
||||
<text name="physics_breakdown_title">
|
||||
Koszty fizyki
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@
|
|||
<panel name="P_DoF_Settings">
|
||||
<check_box label="Włącz głębię ostrości" name="UseDepthofField" tool_tip="Ta opcja włączy głębię ostrości, która służy do 'określania zakresu odległości, w którym obiekty obserwowane przez urządzenie optyczne sprawiają wrażenie ostrych' (Wikipedia). Jeśli nie korzystasz z tej funkcji - wyłącz ją, przyspieszy to wyświetlanie obrazu. Jeśli nie możesz włączyć tej funkcji lub zobaczyć żadnego z jej efektów włącz 'Zaawansowane oświetlenie' w karcie 'Światła'."/>
|
||||
<check_box label="Włącz również pod wodą" tool_tip="Domyślnie głębia ostrości jest wyłączona pod wodą nawet z opcją powyżej zaznaczoną jako włączoną. To ustawienie usuwa to ograniczenie. Pamiętaj, że prawdopodobnie będzie trzeba ręcznie ustawiać punkt skupienia Twojej kamery na obserwowanych obiektach pod wodą za pomocą klikania na nich z klawiszem ALT." name="UseDoFUnderwater"/>
|
||||
<check_box label="Głębia ostrości podąża za kursorem" name="FSFocusPointFollowsPointer" tool_tip="Głębia ostrości (DoF) będzie podążać za kursorem myszy - to zachowanie jest zgodne z tym, co widać podczas korzystania z Flycam. Używaj w połączeniu z blokadą ostrości DoF." />
|
||||
<check_box label="Pokazuj pole widzenia w przeglądarce" name="MIC_Show_FOV" tool_tip="Ta opcja pokazuje pionowe pole widzenia kamery. W SL jest możliwe, aby zmienić długość ogniskowej tak, jak w realnym życiu - im mniejsze pole widzenia, tym większa ogniskowa obiektywu. Ogniskowa 50mm ma pole widzenia 27.0 stopni. Aby ustawić pole widzenia użyj suwaka poniżej. Zobacz: 'pl.wikipedia.org/wiki/Kąt_widzenia', aby wyświetlić tabelkę prezentującą stosunek pomiędzy polem widzenia, a ogniskową (mm). WYŁĄCZ TĘ FUNKCJĘ PRZED ROBIENIEM ZDJĘĆ, ALBO BĘDZIE ONA WIDOCZNA NA OBRAZIE!"/>
|
||||
</panel>
|
||||
<panel name="P_Zoom">
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@
|
|||
<menu_item_call label="Moje otoczenia..." name="my_environs" />
|
||||
<menu_item_call label="Własne oświetlenie..." name="adjustment_tool" />
|
||||
<menu_item_check label="Pauzuj chmury" name="pause_clouds" />
|
||||
<menu label="Import wielu plików" name="WL Bulk Import">
|
||||
<menu_item_call label="Dni..." name="WL Bulk Import Days" />
|
||||
<menu_item_call label="Nieba..." name="WL Bulk Import Skies" />
|
||||
<menu_item_call label="Woda..." name="WL Bulk Import Water" />
|
||||
</menu>
|
||||
</menu>
|
||||
<!-- <menu label="Edytor otoczenia" name="Environment Editor">
|
||||
<menu_item_call label="Ustawienia otoczenia" name="Environment Settings"/>
|
||||
|
|
@ -133,6 +138,7 @@
|
|||
<menu name="photo_and_video" label="Foto i Wideo">
|
||||
<menu_item_call label="Narzędzia fotograficzne" name="phototools_item_call"/>
|
||||
<menu_item_call label="Fotograf: kamera" name="cameratools_item_call"/>
|
||||
<menu_item_check label="Blokada głębi ostrości dla skupienia" name="lock_focus_point" />
|
||||
</menu>
|
||||
<menu_item_call label="Przeszukiwanie obszaru" name="area_search"/>
|
||||
<menu_item_call label="Eksplorator dźwięków" name="Sound Explorer"/>
|
||||
|
|
|
|||
|
|
@ -5099,4 +5099,10 @@ Skopiuj do własnej szafy i spróbuj ponownie.
|
|||
|
||||
Pamiętaj, że nie można wybrać "otoczenia współdzielonego" i "bazowanego na cyklu dnia"!
|
||||
</notification>
|
||||
<notification name="CantCreateInventoryName">
|
||||
Nie można utworzyć: [NAME]
|
||||
</notification>
|
||||
<notification name="WindlightBulkImportFinished">
|
||||
Zakończył się zbiorowy import Windlightów.
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Tekstury" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Zdjęcia" />
|
||||
<combo_box.item value="filter_type_meshes" label="Mesze" />
|
||||
<combo_box.item value="filter_type_settings" label="Otoczenia" />
|
||||
<combo_box.item value="filter_type_custom" label="Własny filtr..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@
|
|||
<check_box label="Wyłącz automatyczne otwieranie listy zablokowanych" name="FSDisableBlockListAutoOpen" tool_tip="Wyłącza automatyczne otwieranie listy zablokowanych podczas blokowania awatarów lub obiektów." />
|
||||
<check_box label="'Znajomi' oraz 'Grupy' w menu 'Komunikacja' otwierają okna w stylu [SHORT_VIEWER_GENERATION]" name="FSUseV2Friends" tool_tip="Gdy włączysz tą opcję, to Znajomi / Grupy będą się otwierać poprzez okno Ludzie - w przeciwnym wypadku będzie się to odbywać w oknie Kontaktów." />
|
||||
<check_box label="Stary sposób wyświetlania właściwości obiektu" name="FSUseLegacyObjectProperties" tool_tip="Gdy włączysz tą opcję, to stare okno właściwości obiektu będzie używane zamiast nowego."/>
|
||||
<check_box label="Użyj małego okna kamery" name="FSUseSmallCameraFloater" tool_tip="Jeśli ta opcja jest włączona, to zostanie użyte mniejsze, starsze okno kamery bez elementów sterujących wstępnymi ustawieniami." />
|
||||
<text name="standalone_textbox">
|
||||
Używaj osobnych okien dla:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@
|
|||
<check_box label="Włącz głębię ostrości (rozmywaj widok z wyjątkiem miejsca, gdzie skupiona jest kamera)" name="UseDoF"/>
|
||||
<check_box label="Włączaj w trybie budowania" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Włączaj pod wodą" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="Głębia ostrości podąża za kursorem" name="FSFocusPointFollowsPointer" tool_tip="Głębia ostrości (DoF) będzie podążać za kursorem myszy - to zachowanie jest zgodne z tym, co widać podczas korzystania z Flycam. Używaj w połączeniu z blokadą ostrości DoF." />
|
||||
<slider label="Wartość F kamery:" name="CameraFNum" tool_tip="Wartość F kamery dla głębi ostrości"/>
|
||||
<slider label="Ogniskowa (mm):" name="CameraFocal" tool_tip="Ogniskowa dla głębi ostrości (w milimetrach)"/>
|
||||
<slider label="Pole widzenia (°):" name="Camera FOV" tool_tip="Pionowy kąt pola widzenia kamery dla głębi ostrości (w stopniach)"/>
|
||||
|
|
|
|||
|
|
@ -6416,4 +6416,7 @@ Twoja aktualna pozycja: [AVATAR_POS]
|
|||
<string name="FSAreaSearch_Cost_Label">
|
||||
[COST]L$
|
||||
</string>
|
||||
<string name="ImportingWindlightBulk">
|
||||
Importowanie Windlightów...
|
||||
</string>
|
||||
</strings>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="fs_camera_floater_small">
|
||||
<floater.string name="rotate_tooltip">
|
||||
Вращать камеру вокруг точки фокуса
|
||||
</floater.string>
|
||||
<floater.string name="zoom_tooltip">
|
||||
Масштаб камеры к точке фокуса
|
||||
</floater.string>
|
||||
<floater.string name="move_tooltip">
|
||||
Двигать камеру вверх/вниз, влево/вправо
|
||||
</floater.string>
|
||||
<panel name="zoom">
|
||||
<layout_stack name="camera_view_layout_stack">
|
||||
<layout_panel name="camera_rotate_layout_panel">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Вращение камеры вокруг точки фокусировки"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="camera_zoom_layout_panel">
|
||||
<slider_bar name="zoom_slider" tool_tip="Приблизить/отдалить камеру к/от точки фокусировки"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="panel_track">
|
||||
<joystick_track name="cam_track_stick" tool_tip="Двигать камеру вверх и вниз, влево и вправо"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
<panel name="buttons_view">
|
||||
<panel_camera_item name="front_view" tool_tip="Вид спереди"/>
|
||||
<panel_camera_item name="group_view" tool_tip="Вид сбоку"/>
|
||||
<panel_camera_item name="rear_view" tool_tip="Вид сзади"/>
|
||||
</panel>
|
||||
<panel name="buttons">
|
||||
<panel_camera_item name="object_view" tool_tip="Вид на объект"/>
|
||||
<panel_camera_item name="mouselook_view" tool_tip="Вид от первого лица"/>
|
||||
<panel_camera_item name="reset_view" tool_tip="Сбросить вид"/>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -193,6 +193,8 @@
|
|||
tool_tip="Это включит Глубину Резкости, которая «определит расстояние между ближайшими и самыми дальними объектами в сцене, которые выглядят приемлемо резкими в изображении» (Википедия). Если вы не используете его, отключите его, и это ускорит частоту кадров. Если вы не можете включить эту функцию или не видите ее эффекта, включите «Расширенная модель освещения» на вкладке «Свет»." />
|
||||
<check_box name="UseDoFUnderwater" label="Включить Глубину Резкости под водой"
|
||||
tool_tip="Как правило, глубина резкости отключается под водой, даже с указанным выше флажком. Этот параметр устранит это ограничение. Обратите внимание, что вам, возможно, придется вручную переориентировать камеру на нужные объекты, нажав на них, когда вы находитесь под водой." />
|
||||
<check_box label="Фокус ГР следует за указателем" name="FSFocusPointFollowsPointer"
|
||||
tool_tip="Фокус глубины резкости (DoF) будет следовать за курсором мыши, это поведение соответствует тому, что наблюдается при использовании летающей камеры. Используйте вместе с блокировкой фокуса Глубины резкости"/>
|
||||
<check_box name="MIC_Show_FOV" label="Показать Угол Обзора (FOV) на экране"
|
||||
tool_tip="Это покажет вам Угол Обзора камеры. Внутри вьювера можно изменить длину объектива так же, как в реальной жизни. Чем меньше значение Угол Обзора, тем длиннее объектив камеры. 50-мм объектив имеет Угол Обзора 27,0 градусов. Для настройки Угол Обзора используйте панель «Зум» ниже. См.'http://en.wikipedia.org/wiki/Angle_of_view' для таблицы, показывающей взаимосвязь между Угол Обзора и фокусным расстоянием объектива (мм). ВЫКЛЮЧИТЕ ПЕРЕД НАЧАЛОМ СЪЕМКИ ИЛИ ЭТО БУДЕТ НА ИЗОБРАЖЕНИИ!"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -128,6 +128,11 @@
|
|||
<menu_item_call label="Моя Окружающая среда..." name="my_environs"/>
|
||||
<menu_item_call label="Личное Освещение..." name="adjustment_tool"/>
|
||||
<menu_item_check label="Пауза Облаков" name="pause_clouds"/>
|
||||
<menu label="Массовый импорт" name="WL Bulk Import">
|
||||
<menu_item_call label="Дни..." name="WL Bulk Import Days"/>
|
||||
<menu_item_call label="Небеса..." name="WL Bulk Import Skies"/>
|
||||
<menu_item_call label="Вода..." name="WL Bulk Import Water"/>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
<!-- <menu label="Положение солнца" name="Environment Settings">
|
||||
|
|
@ -159,6 +164,7 @@
|
|||
<menu name="photo_and_video" label="Фото и Видео">
|
||||
<menu_item_call label="Инструменты фото" name="phototools_item_call"/>
|
||||
<menu_item_call label="Инструменты камеры" name="cameratools_item_call"/>
|
||||
<menu_item_check label="Блокировка фокуса Глубины резкости" name="lock_focus_point"/>
|
||||
</menu>
|
||||
<menu_item_call label="Поиск вокруг" name="area_search"/>
|
||||
<menu_item_call label="Проводник звуков" name="Sound Explorer"/>
|
||||
|
|
@ -344,6 +350,7 @@
|
|||
<menu label="Всплывающие подсказки" name="Hover Tips">
|
||||
<menu_item_check label="Показывать Подсказки" name="Show Tips"/>
|
||||
<menu_item_check label="Подсказки о земле" name="Land Tips"/>
|
||||
<menu_item_check label="Подсказки на все объекты" name="Tips On All Objects"/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu label="Типы визуализации" name="Rendering Types">
|
||||
|
|
|
|||
|
|
@ -5218,4 +5218,10 @@ URL: [AUDIOURL]
|
|||
|
||||
Обратите внимание, что нельзя выбрать «Общая среда» и «Дневной цикл»!
|
||||
</notification>
|
||||
<notification name="CantCreateInventoryName">
|
||||
Невозможно создать элемент инвентаря: [NAME]
|
||||
</notification>
|
||||
<notification name="WindlightBulkImportFinished">
|
||||
Массовый импорт Окружающей среды завершен.
|
||||
</notification>
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Текстуры" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Снимки" />
|
||||
<combo_box.item value="filter_type_meshes" label="Меш" />
|
||||
<combo_box.item value="filter_type_settings" label="Настройки" />
|
||||
<combo_box.item value="filter_type_custom" label="Другое..." />
|
||||
</combo_box>
|
||||
<tab_container name="inventory filter tabs">
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@
|
|||
<check_box label="Отключить автоматическое открытие списка заблокированного" name="FSDisableBlockListAutoOpen" tool_tip="Отключить автоматическое открытие списка заблокированного, юкогда вы блокируете аватара или объект" />
|
||||
<check_box label="Открывать окна в стиле [SHORT_VIEWER_GENERATION] для 'Друзья' и 'Группы'" name="FSUseV2Friends" tool_tip="Когда вы включите эту опцию, друзья / группы будут открыты в окнах - в противном случае, это будет сделано в Контактах." />
|
||||
<check_box label="Использовать устаревшие окно свойства объектов" name="FSUseLegacyObjectProperties" tool_tip="Если включено, при открытии свойств объекта будет использоваться старое окно свойств."/>
|
||||
<check_box label="Использовать маленькое окно камеры" name="FSUseSmallCameraFloater" tool_tip="Если этот параметр включен, будет использоваться меньшее, устаревшее окно камеры без элементов управления предустановками камеры."/>
|
||||
<text name="standalone_textbox">
|
||||
Использовать отдельные окна для:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,7 @@
|
|||
<check_box label="Включить глубину резкости (Это размоет вид за исключением фокусировки камеры.)" name="UseDoF"/>
|
||||
<check_box label="Включить в режиме редактирования" name="RenderDepthOfFieldInEditMode"/>
|
||||
<check_box label="Разрешить когда под водой" name="FSRenderDoFUnderwater"/>
|
||||
<check_box label="Фокус ГР следует за указателем" name="FSFocusPointFollowsPointer" tool_tip="Фокус глубины резкости (DoF) будет следовать за курсором мыши, это поведение соответствует тому, что наблюдается при использовании летающей камеры. Используйте вместе с блокировкой фокуса Глубины резкости"/>
|
||||
<slider label="Номер фокуса камеры:" name="CameraFNum" tool_tip="Номер фокуса камеры - значение для эффекта глубины резкости"/>
|
||||
<slider label="Фокусное расстояние (мм):" name="CameraFocal" tool_tip="Фокусное расстояние камеры для эффекта глубины резкости (в миллиметрах)"/>
|
||||
<slider label="Угол зрения камеры (град.):" name="Camera FOV" tool_tip="Вертикальный угол зрения камеры для эффекта глубины резкости (в градусах)"/>
|
||||
|
|
|
|||
|
|
@ -7037,4 +7037,7 @@ ID объекта: [INSPECTING_KEY]
|
|||
<string name="unknown_script">
|
||||
(Неизвестный скрипт)
|
||||
</string>
|
||||
<string name="ImportingWindlightBulk">
|
||||
Импорт окружающей среды ...
|
||||
</string>
|
||||
</strings>
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@
|
|||
<combo_box.item value="filter_type_textures" label="Textures" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_type_settings" label="Settings" />
|
||||
<combo_box.item value="filter_separator" label="------------" enabled="false" />
|
||||
<combo_box.item value="filter_type_custom" label="Custom..." />
|
||||
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ https://accounts.secondlife.com/change_email/
|
|||
<panel
|
||||
class="panel_preference_backup"
|
||||
filename="panel_preferences_backup.xml"
|
||||
label="Backup"
|
||||
label="Backup & Restore"
|
||||
layout="topleft"
|
||||
help_topic="preferences_backup_tab"
|
||||
name="backup" />
|
||||
|
|
|
|||