Merge branch 'DRTVWR-587-maint-V' of https://github.com/secondlife/viewer
# Conflicts: # indra/llcommon/lleventdispatcher.h # indra/newview/llagentcamera.cppmaster
commit
0a26ba4fd9
|
|
@ -1064,7 +1064,6 @@ BOOL LLAvatarAppearance::loadSkeletonNode ()
|
|||
mRoot->addChild(mMeshLOD[MESH_ID_UPPER_BODY]);
|
||||
mRoot->addChild(mMeshLOD[MESH_ID_LOWER_BODY]);
|
||||
mRoot->addChild(mMeshLOD[MESH_ID_SKIRT]);
|
||||
mRoot->addChild(mMeshLOD[MESH_ID_HEAD]);
|
||||
|
||||
LLAvatarJoint *skull = (LLAvatarJoint*)mRoot->findJoint("mSkull");
|
||||
if (skull)
|
||||
|
|
|
|||
|
|
@ -336,7 +336,13 @@ if (LL_TESTS)
|
|||
LL_ADD_INTEGRATION_TEST(bitpack "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(classic_callback "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(commonmisc "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(lazyeventapi "" "${test_libs}")
|
||||
if (WINDOWS)
|
||||
# As of 2023-07-27, lazyeventapi.h triggers a bug in older clang,
|
||||
# unfortunately the version we run on our TeamCity Mac build agent. As we
|
||||
# move forward, either with an updated TC agent or GitHub builds, remove
|
||||
# this 'if'.
|
||||
LL_ADD_INTEGRATION_TEST(lazyeventapi "" "${test_libs}")
|
||||
endif ()
|
||||
LL_ADD_INTEGRATION_TEST(llbase64 "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(llcond "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(lldate "" "${test_libs}")
|
||||
|
|
|
|||
|
|
@ -71,25 +71,26 @@ namespace LL
|
|||
mOperations.push_back(std::make_pair(name, desc));
|
||||
// Use connect_extended() so the lambda is passed its own
|
||||
// connection.
|
||||
|
||||
// apply() can't accept a template per se; it needs a particular
|
||||
// specialization. Specialize out here to work around a clang bug:
|
||||
// https://github.com/llvm/llvm-project/issues/41999
|
||||
auto func{ &LazyEventAPIBase::add_trampoline
|
||||
<const std::string&, const std::string&, ARGS...> };
|
||||
// We can't bind an unexpanded parameter pack into a lambda --
|
||||
// shame really. Instead, capture it as a std::tuple and then, in
|
||||
// the lambda, use apply() to convert back to function args.
|
||||
// shame really. Instead, capture all our args as a std::tuple and
|
||||
// then, in the lambda, use apply() to pass to add_trampoline().
|
||||
auto args{ std::make_tuple(name, desc, std::forward<ARGS>(rest)...) };
|
||||
|
||||
mParams.init.connect_extended(
|
||||
[name, desc, rest = std::make_tuple(std::forward<ARGS>(rest)...)]
|
||||
[func, args]
|
||||
(const boost::signals2::connection& conn, LLEventAPI* instance)
|
||||
{
|
||||
// we only need this connection once
|
||||
conn.disconnect();
|
||||
// Our add() method distinguishes name and desc because we
|
||||
// capture them separately. But now, because apply()
|
||||
// expects a tuple specifying ALL the arguments, expand to
|
||||
// a tuple including add_trampoline() arguments: instance,
|
||||
// name, desc, rest.
|
||||
// apply() can't accept a template per se; it needs a
|
||||
// particular specialization.
|
||||
apply(&LazyEventAPIBase::add_trampoline<const std::string&, const std::string&, ARGS...>,
|
||||
std::tuple_cat(std::make_tuple(instance, name, desc),
|
||||
rest));
|
||||
// apply() expects a tuple specifying ALL the arguments,
|
||||
// so prepend instance.
|
||||
apply(func, std::tuple_cat(std::make_tuple(instance), args));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ public:
|
|||
private:
|
||||
static std::string formatlist(const LLSD&);
|
||||
template <typename... ARGS>
|
||||
void callFail(ARGS&&... args) const;
|
||||
[[noreturn]] void callFail(ARGS&&... args) const;
|
||||
|
||||
// store a plain dumb back-pointer because we don't have to manage the
|
||||
// parent LLEventDispatcher's lifespan
|
||||
|
|
@ -338,7 +338,7 @@ std::string LLEventDispatcher::LLSDArgsMapper::formatlist(const LLSD& list)
|
|||
}
|
||||
|
||||
template <typename... ARGS>
|
||||
void LLEventDispatcher::LLSDArgsMapper::callFail(ARGS&&... args) const
|
||||
[[noreturn]] void LLEventDispatcher::LLSDArgsMapper::callFail(ARGS&&... args) const
|
||||
{
|
||||
_parent->callFail<LLEventDispatcher::DispatchError>
|
||||
(_function, std::forward<ARGS>(args)...);
|
||||
|
|
@ -388,7 +388,7 @@ struct LLEventDispatcher::LLSDDispatchEntry: public LLEventDispatcher::DispatchE
|
|||
std::string mismatch(llsd_matches(mRequired, event));
|
||||
if (! mismatch.empty())
|
||||
{
|
||||
return callFail(desc, ": bad request: ", mismatch);
|
||||
callFail(desc, ": bad request: ", mismatch);
|
||||
}
|
||||
// Event syntax looks good, go for it!
|
||||
return mFunc(event);
|
||||
|
|
@ -425,7 +425,7 @@ struct LLEventDispatcher::ParamsDispatchEntry: public LLEventDispatcher::Dispatc
|
|||
catch (const LL::apply_error& err)
|
||||
{
|
||||
// could hit runtime errors with LL::apply()
|
||||
return callFail(err.what());
|
||||
callFail(err.what());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -472,11 +472,11 @@ struct LLEventDispatcher::ArrayParamsDispatchEntry: public LLEventDispatcher::Pa
|
|||
// array, we must have an argskey.
|
||||
if (argskey.empty())
|
||||
{
|
||||
return callFail("LLEventDispatcher has no args key");
|
||||
callFail("LLEventDispatcher has no args key");
|
||||
}
|
||||
if ((! event.has(argskey)))
|
||||
{
|
||||
return callFail("missing required key ", std::quoted(argskey));
|
||||
callFail("missing required key ", std::quoted(argskey));
|
||||
}
|
||||
args = event[argskey];
|
||||
}
|
||||
|
|
@ -708,7 +708,7 @@ LLSD LLEventDispatcher::try_call(const std::string& key, const std::string& name
|
|||
|
||||
template <typename EXCEPTION, typename... ARGS>
|
||||
//static
|
||||
void LLEventDispatcher::sCallFail(ARGS&&... args)
|
||||
[[noreturn]] void LLEventDispatcher::sCallFail(ARGS&&... args)
|
||||
{
|
||||
auto error = stringize(std::forward<ARGS>(args)...);
|
||||
LL_WARNS("LLEventDispatcher") << error << LL_ENDL;
|
||||
|
|
@ -716,7 +716,7 @@ void LLEventDispatcher::sCallFail(ARGS&&... args)
|
|||
}
|
||||
|
||||
template <typename EXCEPTION, typename... ARGS>
|
||||
void LLEventDispatcher::callFail(ARGS&&... args) const
|
||||
[[noreturn]] void LLEventDispatcher::callFail(ARGS&&... args) const
|
||||
{
|
||||
// Describe this instance in addition to the error itself.
|
||||
sCallFail<EXCEPTION>(*this, ": ", std::forward<ARGS>(args)...);
|
||||
|
|
|
|||
|
|
@ -475,13 +475,9 @@ private:
|
|||
virtual LLSD getMetadata() const = 0;
|
||||
|
||||
template <typename... ARGS>
|
||||
LLSD callFail(ARGS&&... args) const
|
||||
[[noreturn]] void callFail(ARGS&&... args) const
|
||||
{
|
||||
mParent->callFail<LLEventDispatcher::DispatchError>(std::forward<ARGS>(args)...);
|
||||
#ifndef _MSC_VER
|
||||
// pacify the compiler
|
||||
return {};
|
||||
#endif
|
||||
}
|
||||
};
|
||||
typedef std::map<std::string, std::unique_ptr<DispatchEntry> > DispatchMap;
|
||||
|
|
@ -584,9 +580,9 @@ private:
|
|||
protected:
|
||||
// raise specified EXCEPTION with specified stringize(ARGS)
|
||||
template <typename EXCEPTION, typename... ARGS>
|
||||
void callFail(ARGS&&... args) const;
|
||||
[[noreturn]] void callFail(ARGS&&... args) const;
|
||||
template <typename EXCEPTION, typename... ARGS>
|
||||
static
|
||||
[[noreturn]] static
|
||||
void sCallFail(ARGS&&... args);
|
||||
|
||||
// Manage transient state, e.g. which registered callable we're attempting
|
||||
|
|
@ -724,10 +720,6 @@ template <typename Method, typename InstanceGetter>
|
|||
LLEventDispatcher::invoker_function
|
||||
LLEventDispatcher::make_invoker(Method f, const InstanceGetter& getter)
|
||||
{
|
||||
// function_arity<member function> includes its implicit 'this' pointer
|
||||
constexpr auto arity = LL::function_arity<
|
||||
typename std::remove_reference<Method>::type>::value - 1;
|
||||
|
||||
return [f, getter](const LLSD& args)
|
||||
{
|
||||
// always_return<LLSD>() immediately calls the lambda we pass, and
|
||||
|
|
@ -736,6 +728,10 @@ LLEventDispatcher::make_invoker(Method f, const InstanceGetter& getter)
|
|||
[f, getter, args]
|
||||
()
|
||||
{
|
||||
// function_arity<member function> includes its implicit 'this' pointer
|
||||
constexpr auto arity = LL::function_arity<
|
||||
typename std::remove_reference<Method>::type>::value - 1;
|
||||
|
||||
// Use bind_front() to bind the method to (a pointer to) the object
|
||||
// returned by getter(). It's okay to capture and bind a pointer
|
||||
// because this bind_front() object will last only as long as this
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ public:
|
|||
/// otherwise, instantiate a more specific LLSDParam<T> to convert; that
|
||||
/// preserves the existing customization mechanism
|
||||
template <typename T>
|
||||
operator T() const { return LLSDParam<T>(value_); }
|
||||
operator T() const { return LLSDParam<std::decay_t<T>>(value_); }
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1200,6 +1200,9 @@ namespace tut
|
|||
void object::test<20>()
|
||||
{
|
||||
set_test_name("call array-style functions with right-size arrays");
|
||||
#if defined(_MSC_VER) && _MSC_VER <= 1933
|
||||
skip("This test fails on VS older than VS2022 ver 17.4");
|
||||
#endif
|
||||
std::vector<U8> binary;
|
||||
for (size_t h(0x01), i(0); i < 5; h+= 0x22, ++i)
|
||||
{
|
||||
|
|
@ -1238,6 +1241,9 @@ namespace tut
|
|||
void object::test<21>()
|
||||
{
|
||||
set_test_name("verify that passing LLSD() to const char* sends NULL");
|
||||
#if defined(_MSC_VER) && _MSC_VER <= 1933
|
||||
skip("This test fails on VS older than VS2022 ver 17.4");
|
||||
#endif
|
||||
|
||||
ensure_equals("Vars::cp init", v.cp, "");
|
||||
work("methodna_map_mdft", LLSDMap("cp", LLSD()));
|
||||
|
|
@ -1251,6 +1257,9 @@ namespace tut
|
|||
template<> template<>
|
||||
void object::test<22>()
|
||||
{
|
||||
#if defined(_MSC_VER) && _MSC_VER <= 1933
|
||||
skip("This test fails on VS older than VS2022 ver 17.4");
|
||||
#endif
|
||||
set_test_name("call map-style functions with (full | oversized) (arrays | maps)");
|
||||
const char binary[] = "\x99\x88\x77\x66\x55";
|
||||
LLSD array_full(LLSDMap
|
||||
|
|
|
|||
|
|
@ -19656,17 +19656,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSDisableMinZoomDist</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Disable the constraint on the closest distance the camera is allowed to get to an object.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSIgnoreSimulatorCameraConstraints</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -366,18 +366,6 @@
|
|||
<integer>1</integer>
|
||||
</map>
|
||||
|
||||
<key>FSDisableMinZoomDist</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Disable the constraint on the closest distance the camera is allowed to get to an object.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
|
||||
<key>FSIgnoreSimulatorCameraConstraints</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -107,6 +107,12 @@ const F32 GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME = 0.5f;
|
|||
|
||||
const F32 OBJECT_EXTENTS_PADDING = 0.5f;
|
||||
|
||||
static bool isDisableCameraConstraints()
|
||||
{
|
||||
static LLCachedControl<bool> sDisableCameraConstraints(gSavedSettings, "DisableCameraConstraints", false);
|
||||
return sDisableCameraConstraints;
|
||||
}
|
||||
|
||||
// The agent instance.
|
||||
LLAgentCamera gAgentCamera;
|
||||
|
||||
|
|
@ -598,9 +604,9 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance)
|
|||
{
|
||||
BOOL soft_limit = FALSE; // is the bounding box to be treated literally (volumes) or as an approximation (avatars)
|
||||
|
||||
if (!mFocusObject || mFocusObject->isDead() ||
|
||||
if (!mFocusObject || mFocusObject->isDead() ||
|
||||
mFocusObject->isMesh() ||
|
||||
gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
isDisableCameraConstraints())
|
||||
{
|
||||
obj_min_distance = 0.f;
|
||||
return TRUE;
|
||||
|
|
@ -770,39 +776,44 @@ F32 LLAgentCamera::getCameraZoomFraction(bool get_third_person)
|
|||
// already [0,1]
|
||||
return mHUDTargetZoom;
|
||||
}
|
||||
else if (get_third_person || (mFocusOnAvatar && cameraThirdPerson()))
|
||||
|
||||
if (isDisableCameraConstraints())
|
||||
{
|
||||
return mCameraZoomFraction;
|
||||
}
|
||||
|
||||
if (get_third_person || (mFocusOnAvatar && cameraThirdPerson()))
|
||||
{
|
||||
return clamp_rescale(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION, 1.f, 0.f);
|
||||
}
|
||||
else if (cameraCustomizeAvatar())
|
||||
|
||||
if (cameraCustomizeAvatar())
|
||||
{
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
return clamp_rescale(distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM, 1.f, 0.f );
|
||||
}
|
||||
else
|
||||
{
|
||||
F32 min_zoom;
|
||||
F32 max_zoom = getCameraMaxZoomDistance();
|
||||
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
if (mFocusObject.notNull())
|
||||
F32 min_zoom;
|
||||
F32 max_zoom = getCameraMaxZoomDistance();
|
||||
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
if (mFocusObject.notNull())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = LAND_MIN_ZOOM;
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
|
||||
return clamp_rescale(distance, min_zoom, max_zoom, 1.f, 0.f);
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = LAND_MIN_ZOOM;
|
||||
}
|
||||
|
||||
return clamp_rescale(distance, min_zoom, max_zoom, 1.f, 0.f);
|
||||
}
|
||||
|
||||
void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
||||
|
|
@ -815,6 +826,10 @@ void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
|||
{
|
||||
mHUDTargetZoom = fraction;
|
||||
}
|
||||
else if (isDisableCameraConstraints())
|
||||
{
|
||||
mCameraZoomFraction = fraction;
|
||||
}
|
||||
else if (mFocusOnAvatar && cameraThirdPerson())
|
||||
{
|
||||
mCameraZoomFraction = rescale(fraction, 0.f, 1.f, MAX_ZOOM_FRACTION, MIN_ZOOM_FRACTION);
|
||||
|
|
@ -852,6 +867,7 @@ void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
|||
// [/RLVa:KB]
|
||||
// mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
|
||||
}
|
||||
|
||||
startCameraAnimation();
|
||||
}
|
||||
|
||||
|
|
@ -956,58 +972,44 @@ void LLAgentCamera::cameraZoomIn(const F32 fraction)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 current_distance = (F32)camera_offset_unit.normalize();
|
||||
F32 new_distance = current_distance * fraction;
|
||||
|
||||
// Freeing the camera movement some more -KC
|
||||
static LLCachedControl<bool> disable_minconstraints(gSavedSettings,"FSDisableMinZoomDist");
|
||||
if (!disable_minconstraints)
|
||||
// Unless camera is unlocked
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
// Don't move through focus point
|
||||
if (mFocusObject)
|
||||
{
|
||||
LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]);
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
if (mFocusObject->isAvatar())
|
||||
// Don't move through focus point
|
||||
if (mFocusObject)
|
||||
{
|
||||
calcCameraMinDistance(min_zoom);
|
||||
LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]);
|
||||
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
calcCameraMinDistance(min_zoom);
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
//F32 max_distance = getCameraMaxZoomDistance();
|
||||
F32 max_distance = getCameraMaxZoomDistance(true);
|
||||
max_distance = llmin(max_distance, current_distance * 4.f); //Scaled max relative to current distance. MAINT-3154
|
||||
new_distance = llmin(new_distance, max_distance);
|
||||
|
||||
if (cameraCustomizeAvatar())
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
new_distance = llclamp(new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM);
|
||||
}
|
||||
}
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
//F32 max_distance = getCameraMaxZoomDistance();
|
||||
F32 max_distance = getCameraMaxZoomDistance(true);
|
||||
|
||||
max_distance = llmin(max_distance, current_distance * 4.f); //Scaled max relative to current distance. MAINT-3154
|
||||
|
||||
if (new_distance > max_distance)
|
||||
{
|
||||
new_distance = max_distance;
|
||||
|
||||
/*
|
||||
// Unless camera is unlocked
|
||||
if (!LLViewerCamera::sDisableCameraConstraints)
|
||||
{
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if(cameraCustomizeAvatar())
|
||||
{
|
||||
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2.0.0
|
||||
if ( (RlvActions::isRlvEnabled()) && (!allowFocusOffsetChange(new_distance * camera_offset_unit)) )
|
||||
return;
|
||||
|
|
@ -1036,54 +1038,48 @@ void LLAgentCamera::cameraOrbitIn(const F32 meters)
|
|||
changeCameraToMouselook(FALSE);
|
||||
}
|
||||
|
||||
mCameraZoomFraction = llclamp(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION);
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
mCameraZoomFraction = llclamp(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 current_distance = (F32)camera_offset_unit.normalize();
|
||||
F32 new_distance = current_distance - meters;
|
||||
|
||||
// Freeing the camera movement some more -KC
|
||||
static LLCachedControl<bool> disable_minconstraints(gSavedSettings,"FSDisableMinZoomDist");
|
||||
if (!disable_minconstraints)
|
||||
{
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
// Don't move through focus point
|
||||
if (mFocusObject.notNull())
|
||||
|
||||
// Unless camera is unlocked
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
// Don't move through focus point
|
||||
if (mFocusObject.notNull())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
//F32 max_distance = getCameraMaxZoomDistance();
|
||||
F32 max_distance = getCameraMaxZoomDistance(true);
|
||||
new_distance = llmin(new_distance, max_distance);
|
||||
|
||||
if (CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode())
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
new_distance = llclamp(new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM);
|
||||
}
|
||||
}
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
//F32 max_distance = getCameraMaxZoomDistance();
|
||||
F32 max_distance = getCameraMaxZoomDistance(true);
|
||||
|
||||
if (new_distance > max_distance)
|
||||
{
|
||||
// Unless camera is unlocked
|
||||
if (!gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if( CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode() )
|
||||
{
|
||||
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
|
||||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2.0.0
|
||||
if ( (RlvActions::isRlvEnabled()) && (!allowFocusOffsetChange(new_distance * camera_offset_unit)) )
|
||||
return;
|
||||
|
|
@ -1095,7 +1091,6 @@ void LLAgentCamera::cameraOrbitIn(const F32 meters)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// cameraPanIn()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -1825,8 +1820,7 @@ F32 LLAgentCamera::calcCameraFOVZoomFactor()
|
|||
// don't FOV zoom on mostly transparent objects
|
||||
F32 obj_min_dist = 0.f;
|
||||
// Freeing the camera movement some more -KC
|
||||
static LLCachedControl<bool> disable_minconstraints(gSavedSettings,"FSDisableMinZoomDist");
|
||||
if (!disable_minconstraints)
|
||||
if (!isDisableCameraConstraints())
|
||||
calcCameraMinDistance(obj_min_dist);
|
||||
F32 current_distance = llmax(0.001f, camera_offset_dir.magVec());
|
||||
|
||||
|
|
@ -1938,7 +1932,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
local_camera_offset = gAgent.getFrameAgent().rotateToAbsolute( local_camera_offset );
|
||||
}
|
||||
|
||||
if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))
|
||||
if (!isDisableCameraConstraints() && !mCameraCollidePlane.isExactlyZero() &&
|
||||
(!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))
|
||||
{
|
||||
LLVector3 plane_normal;
|
||||
plane_normal.setVec(mCameraCollidePlane.mV);
|
||||
|
|
@ -2057,11 +2052,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
camera_position_global = focusPosGlobal + mCameraFocusOffset;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Replace frequently called gSavedSettings
|
||||
//if (!gSavedSettings.getBOOL("DisableCameraConstraints") && !gAgent.isGodlike())
|
||||
static LLCachedControl<bool> sDisableCameraConstraints(gSavedSettings, "DisableCameraConstraints");
|
||||
if (!sDisableCameraConstraints && !gAgent.isGodlike())
|
||||
// </FS:Ansariel>
|
||||
if (!isDisableCameraConstraints() && !gAgent.isGodlike())
|
||||
{
|
||||
LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromPosGlobal(camera_position_global);
|
||||
bool constrain = true;
|
||||
|
|
@ -2367,21 +2358,13 @@ F32 LLAgentCamera::getCameraMinOffGround()
|
|||
{
|
||||
return 0.f;
|
||||
}
|
||||
else
|
||||
|
||||
if (isDisableCameraConstraints())
|
||||
{
|
||||
// <FS:Ansariel> Replace frequently called gSavedSettings
|
||||
//if (gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
static LLCachedControl<bool> sDisableCameraConstraints(gSavedSettings, "DisableCameraConstraints");
|
||||
if (sDisableCameraConstraints)
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return -1000.f;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0.5f;
|
||||
}
|
||||
return -1000.f;
|
||||
}
|
||||
|
||||
return 0.5f;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -191,8 +191,8 @@ void LLDrawPoolAvatar::beginDeferredPass(S32 pass)
|
|||
is_deferred_render = true;
|
||||
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{ //impostor pass does not have rigid or impostor rendering
|
||||
pass += 2;
|
||||
{ //impostor pass does not have impostor rendering
|
||||
++pass;
|
||||
}
|
||||
|
||||
switch (pass)
|
||||
|
|
@ -218,7 +218,7 @@ void LLDrawPoolAvatar::endDeferredPass(S32 pass)
|
|||
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{
|
||||
pass += 2;
|
||||
++pass;
|
||||
}
|
||||
|
||||
switch (pass)
|
||||
|
|
@ -439,7 +439,7 @@ void LLDrawPoolAvatar::render(S32 pass)
|
|||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{
|
||||
renderAvatars(NULL, pass+2);
|
||||
renderAvatars(NULL, ++pass);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -454,7 +454,7 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
|
|||
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{ //impostor render does not have impostors or rigid rendering
|
||||
pass += 2;
|
||||
++pass;
|
||||
}
|
||||
|
||||
switch (pass)
|
||||
|
|
@ -482,7 +482,7 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)
|
|||
|
||||
if (LLPipeline::sImpostorRender)
|
||||
{
|
||||
pass += 2;
|
||||
++pass;
|
||||
}
|
||||
|
||||
switch (pass)
|
||||
|
|
|
|||
|
|
@ -5897,11 +5897,6 @@ U32 LLVOAvatar::renderRigid()
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!mIsBuilt)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool should_alpha_mask = shouldAlphaMask();
|
||||
LLGLState test(GL_ALPHA_TEST, should_alpha_mask);
|
||||
|
|
|
|||
|
|
@ -1353,7 +1353,7 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
|
|||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// draw tractor beam when editing objects
|
||||
// draw tractor (selection) beam when editing objects
|
||||
//--------------------------------------------------------------------
|
||||
//virtual
|
||||
void LLVOAvatarSelf::idleUpdateTractorBeam()
|
||||
|
|
@ -3449,12 +3449,14 @@ BOOL LLVOAvatarSelf::needsRenderBeam()
|
|||
LLTool *tool = LLToolMgr::getInstance()->getCurrentTool();
|
||||
|
||||
BOOL is_touching_or_grabbing = (tool == LLToolGrab::getInstance() && LLToolGrab::getInstance()->isEditing());
|
||||
if (LLToolGrab::getInstance()->getEditingObject() &&
|
||||
LLToolGrab::getInstance()->getEditingObject()->isAttachment())
|
||||
{
|
||||
// don't render selection beam on hud objects
|
||||
is_touching_or_grabbing = FALSE;
|
||||
}
|
||||
LLViewerObject* objp = LLToolGrab::getInstance()->getEditingObject();
|
||||
if (objp // might need to be "!objp ||" instead of "objp &&".
|
||||
&& (objp->isAttachment() || objp->isAvatar()))
|
||||
{
|
||||
// don't render grab tool's selection beam on hud objects,
|
||||
// attachments or avatars
|
||||
is_touching_or_grabbing = FALSE;
|
||||
}
|
||||
return is_touching_or_grabbing || (getAttachmentState() & AGENT_STATE_EDITING && LLSelectMgr::getInstance()->shouldShowSelection());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -539,8 +539,6 @@
|
|||
tool_tip="Adətən avatar üzərinə basmaqla kameranın yerləşməsi sıfırlanır. Bu seçim bu davranışı düzəldir."/>
|
||||
<check_box label="Tp-dan sonra kamera yerləşməsini sıfırla" name="FSResetCameraOnTP"
|
||||
tool_tip="Bir qayda olaraq, teleportasiya zamanı (region daxilində) kamera yerləşməsi sıfırlanır. Bu seçim bu davranışın qarşısını alır."/>
|
||||
<check_box label="Minimum kamera məsafəsini deaktiv edin" name="disableminzoomdist"
|
||||
tool_tip="Kamera və obyekt arasında ən yaxın məsafə məhdudiyyətini söndürür."/>
|
||||
<check_box name="ignorecameraconstraints" label="Kameranın maneəsiz hərəkətinə icazə verin"
|
||||
tool_tip="Kameranın obyektlərdən kənara çıxarılmasına məhəl qoymur. YENİDƏN BAŞLAMA TƏLƏB EDİR!"/>
|
||||
<check_box name="resetcamerapositiononmovement" label="Hərəkət edərkən kamera yerləşməsini sıfırlayın"
|
||||
|
|
|
|||
|
|
@ -125,8 +125,6 @@
|
|||
tool_tip="Adətən avatarın üzərinə basmaqla kameranın yerləşməsi sıfırlanır. Bu seçim bu davranışı düzəldir."/>
|
||||
<check_box name="FSResetCameraOnTP" label="Tp-dan sonra kamera yerləşməsini sıfırlayın"
|
||||
tool_tip="Bir qayda olaraq, teleportasiya zamanı (region daxilində) kameranın yerləşməsi sıfırlanır. Bu seçim bu davranışın qarşısını alır."/>
|
||||
<check_box name="disableminzoomdist" label="Minimum məsafəni söndürün"
|
||||
tool_tip="Obyektə ən yaxın kamera məsafəsi ilə bağlı məhdudiyyəti söndürür."/>
|
||||
<check_box name="ignorecameraconstraints" label="Məhdudiyyətsiz kamera hərəkəti"
|
||||
tool_tip="Kameranın obyektlərdən 'itələməsini' yoxsayır. YENİDƏN BAŞLAMA TƏLƏB EDİR!"/>
|
||||
<check_box name="resetcameraonmovement"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
<check_box label="Avatarınızın üzərinə basanda kamera yerləşməsi saxlanılır" name="clickonavatarkeepscamera" tool_tip="Adətən, avatar üzərinə basdığınız zaman o, kameranın yerləşdirməsini sıfırlayır. Bu seçim bu davranışı aradan qaldırır."/>
|
||||
<check_box label="Teleportasiyadan sonra kamera yerləşməsini saxlayın (region daxilində)" name="FSResetCameraOnTP" tool_tip="Bir qayda olaraq, teleportasiya zamanı kameranın yerləşməsi sıfırlanır. Bu seçim bu davranışın qarşısını alır."/>
|
||||
<check_box label="Avatar hərəkət edərkən kamera yerləşməsini saxlayın" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Minimal kamera yaxınlaşdırma məsafəsini söndürün" name="disableminzoomdist" tool_tip="Kameranın yaxın məsafə limitini söndürmək sizə obyektə daha çox yaxınlaşmağa imkan verəcək."/>
|
||||
<check_box label="Baxışı sıfırlayan zaman avatarı kameraya doğru çevirin" name="resetviewturnsavatar" tool_tip="Baxış rejimi sıfırlandıqda (ESC düyməsini basmaqla) bu seçim avatarı kameraya doğru çevirir."/>
|
||||
<check_box label="Kameranın primdən keçməsinə icazə verin" name="ignorecameraconstraints" tool_tip="Kameranın primitivlər arasında sərbəst hərəkət etməsinə icazə verin"/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
|
|
@ -556,7 +556,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="Klick auf Avatar hält Kameraposition" name="clickonavatarkeepscamera" tool_tip="Normalerweise wird die Kameraposition beim Anklicken des Avatars zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Kameraposition nach Teleport zurücksetzen" name="FSResetCameraOnTP" tool_tip="Normalerweise wird die Kameraposition beim Teleportieren zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Minimale Zoomdistanz aufheben" name="disableminzoomdist" tool_tip="Deaktiviert die minimale Zoomdistanz der Kamera zu einem Objekt."/>
|
||||
<check_box label="Kamerabewegung durch Primitiva erlauben" name="ignorecameraconstraints" tool_tip="Ignoriert die Beschränkung, dass die Kamera nicht durch primitive Objekte bewegt werden kann. ERFORDERT NEUSTART!"/>
|
||||
<check_box label="Kamera bei Avatarbewegung zurücksetzen" name="resetcamerapositiononmovement" tool_tip="Setzt die Kameraposition zurück, sobald der Avatar bewegt wird."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -129,7 +129,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="Klick auf Avatar hält Kameraposition" name="clickonavatarkeepscamera" tool_tip="Normalerweise wird die Kameraposition beim Anklicken des Avatars zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Kameraposition nach Teleport zurücksetzen" name="FSResetCameraOnTP" tool_tip="Normalerweise wird die Kameraposition beim Teleportieren zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Minimale Zoomdistanz aufheben" name="disableminzoomdist" tool_tip="Deaktiviert die minimale Zoomdistanz der Kamera zu einem Objekt."/>
|
||||
<check_box label="Kamerabewegung durch Primitiva erlauben" name="ignorecameraconstraints" tool_tip="Ignoriert die Beschränkung, dass die Kamera nicht durch primitive Objekte bewegt werden kann. ERFORDERT NEUSTART!"/>
|
||||
<check_box label="Kamera bei Avatarbewegung zurücksetzen" name="resetcameraonmovement" tool_tip="Setzt die Kameraposition zurück, sobald der Avatar bewegt wird."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
<check_box label="Klick auf Avatar hält Kameraposition" name="clickonavatarkeepscamera" tool_tip="Normalerweise wird die Kameraposition beim Anklicken des Avatars zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Kameraposition nach Teleport zurücksetzen (innerhalb einer Region)" name="FSResetCameraOnTP" tool_tip="Normalerweise wird die Kameraposition beim Teleportieren zurückgesetzt. Diese Option verhindert dieses Verhalten."/>
|
||||
<check_box label="Kameraposition bei Avatarbewegung zurücksetzen" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Minimale Zoomdistanz der Kamera aufheben" name="disableminzoomdist" tool_tip="Deaktiviert die minimale Zoomdistanz der Kamera zu einem Objekt."/>
|
||||
<check_box label="Beim Zurücksetzen der Ansicht Avatar in Blickrichtung der Kamera drehen" name="resetviewturnsavatar" tool_tip="Behält die Blickrichtung der Kamera bei und dreht den Avatar, wenn die Ansicht zurückgesetzt wird (Beim Drücken von ESC)."/>
|
||||
<check_box label="Kamerabewegung durch primitive Objekte erlauben" name="ignorecameraconstraints" tool_tip="Ignoriert die Beschränkung, dass die Kamera nicht durch primitive Objekte bewegt werden kann." width="305"/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
|
|
@ -4449,17 +4449,6 @@
|
|||
width="250"
|
||||
control_name="FSResetCameraOnTP"
|
||||
tool_tip="Normally, the camera position gets reset when teleporting (within a region). This option prevents this behavior."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Disable minimum camera zoom distance"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="disableminzoomdist"
|
||||
width="250"
|
||||
control_name="FSDisableMinZoomDist"
|
||||
tool_tip="Disable the constraint on the closest distance the camera is allowed to get to an object."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
follows="left|top"
|
||||
|
|
|
|||
|
|
@ -768,17 +768,6 @@
|
|||
width="250"
|
||||
control_name="FSResetCameraOnTP"
|
||||
tool_tip="Normally, the camera position gets reset when teleporting (within a region). This option prevents this behavior."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Disable minimum camera zoom distance"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="disableminzoomdist"
|
||||
width="250"
|
||||
control_name="FSDisableMinZoomDist"
|
||||
tool_tip="Disable the constraint on the closest distance the camera is allowed to get to an object."/>
|
||||
<check_box
|
||||
top_pad="2"
|
||||
follows="left|top"
|
||||
|
|
|
|||
|
|
@ -208,18 +208,6 @@
|
|||
name="FSResetCameraOnMovement"
|
||||
width="270"
|
||||
control_name="FSResetCameraOnMovement"/>
|
||||
<check_box
|
||||
top_pad="3"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="false"
|
||||
label="Disable minimum camera zoom distance"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="disableminzoomdist"
|
||||
width="350"
|
||||
control_name="FSDisableMinZoomDist"
|
||||
tool_tip="Disable the constraint on the closest distance the camera is allowed to get to an object."/>
|
||||
<check_box
|
||||
top_pad="3"
|
||||
follows="left|top"
|
||||
|
|
|
|||
|
|
@ -479,7 +479,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="Mantener vista al pulsar tu avatar" name="clickonavatarkeepscamera" tool_tip="Normalmente, cuando haces clic sobre tu avatar, se restablece la posición de la cámara. Esta opción evita este comportamiento."/>
|
||||
<check_box label="Restablecer cámara tras teleporte" name="FSResetCameraOnTP" tool_tip="Normalmente, la posición de la cámara se restablece tras un teleporte (dentro de la misma región). Esta opción evita este comportamiento."/>
|
||||
<check_box label="Desactivar distancia mínima de zoom" name="disableminzoomdist" tool_tip="Desactiva la restricción de la distancia de cámara más cercana posible a un objeto."/>
|
||||
<check_box label="Permitir libertad de cámara" name="ignorecameraconstraints" tool_tip="Ignora el 'empujón' que el simulador aplica a tu cámara para mantenerla fuera de los objetos. ¡REQUIERE REINICIAR¡"/>
|
||||
<check_box label="Restablecer cámara al mover el avatar" name="resetcamerapositiononmovement" tool_tip="Restablece la cámara a su posición por defecto cuando mueves el avatar"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="Mantener vista al pulsar tu avatar" name="clickonavatarkeepscamera" tool_tip="Normalmente, cuando haces clic sobre tu avatar, se restablece la posición de la cámara. Esta opción evita este comportamiento."/>
|
||||
<check_box label="Restablecer cámara tras teleporte" name="FSResetCameraOnTP" tool_tip="Normalmente, la posición de la cámara se restablece tras un teleporte (dentro de la misma región). Esta opción evita este comportamiento."/>
|
||||
<check_box label="Desactivar distancia mínima de zoom" name="disableminzoomdist" tool_tip="Desactiva la restricción de la distancia de cámara más cercana posible a un objeto."/>
|
||||
<check_box label="Permitir libertad de cámara" name="ignorecameraconstraints" tool_tip="Ignora el 'empujón' que el simulador aplica a tu cámara para mantenerla fuera de los objetos. ¡REQUIERE REINICIAR¡"/>
|
||||
<check_box label="Restablecer cámara al mover el avatar" name="resetcameraonmovement" tool_tip="Restablece la cámara a su posición por defecto cuando mueves el avatar"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
<check_box label="Hacer clic en mi avatar mantiene la posición de la cámara" name="clickonavatarkeepscamera" tool_tip="Normalmente, hacer clic en tu avatar restablece la posición de la cámara. Esta configuración evita ese comportamiento."/>
|
||||
<check_box label="Restablecer posición de la cámara al mover el avatar" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Restablecer posición de la cámara tras teleportarme (en la misma región)" name="FSResetCameraOnTP" tool_tip="Normalmente, la posición de la cámara se restablece cuando te teleportas. Esta opción evita ese comportamiento."/>
|
||||
<check_box label="Desactivar la distancia mínima de zoom" name="disableminzoomdist" tool_tip="Desactiva el límite de cercanía de la cámara a un objeto o avatar."/>
|
||||
<check_box label="Orientar avatar hacia la dirección de la cámara al restablecer la vista" name="resetviewturnsavatar" tool_tip="Esta opción mantiene la dirección de la cámara y orienta al avatar cuando se restablece la vista (al pulsar la tecla ESC)."/>
|
||||
<check_box label="Permitir a la cámara moverse a través de objetos" name="ignorecameraconstraints" tool_tip="Ignora el 'empujón' que el simulador aplica a tu cámara para mantenerla fuera de los objetos." width="285"/>
|
||||
<text name="ignorecameraconstraints_requires_restart" top_pad="-2" top_delta="-1">
|
||||
|
|
|
|||
|
|
@ -587,7 +587,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="Clic sur votre avi garde la pos. de la caméra" name="clickonavatarkeepscamera" tool_tip="Normalement, un clic sur votre avatar réinitialise la position de la caméra. Cette option supprime ce comportement."/>
|
||||
<check_box label="Réinit pos. caméra après téléportation" name="FSResetCameraOnTP" tool_tip="Normalement, la position de la caméra est réinitialisée lors d`une téléportation (dans une région). Cette option permet d'éviter ce comportement."/>
|
||||
<check_box label="Désactiver dist. min. zoom caméra" name="disableminzoomdist" tool_tip="Désactiver la contrainte sur la distance minimale de la caméra par rapport à un objet."/>
|
||||
<check_box label="La caméra se déplace sans contraintes" name="ignorecameraconstraints" tool_tip="Ignorer la 'poussée' que le simulateur applique à votre appareil photo pour le maintenir hors des objets. NÉCESSITE UN REDÉMARRAGE !"/>
|
||||
<check_box label="Réinit. pos. cam. sur le mvt de l'avi" name="resetcamerapositiononmovement" tool_tip="Réinit la cam. à sa pos. par défaut lorsque vous déplacez l'avi"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -129,7 +129,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="Clic sur l'avatar garde la pos. de la caméra" name="clickonavatarkeepscamera" tool_tip="Normalement, la position de la caméra est réinitialisée lorsque l'on clique sur l'avatar. Cette option permet d'éviter ce comportement."/>
|
||||
<check_box label="Réinit. la pos. de la cam. après téléportation" name="FSResetCameraOnTP" tool_tip="Normalement, la position de la caméra est réinitialisée lors de la téléportation. Cette option permet d'éviter ce comportement."/>
|
||||
<check_box label="Désactive la dist. min. du zoom" name="disableminzoomdist" tool_tip="Désactive la distance maximale de zoom de l'appareil photo par rapport à un objet."/>
|
||||
<check_box label="La caméra peut traverser les objets" name="ignorecameraconstraints" tool_tip="Ignore la règle empêchant la caméra de se déplacer à l'intérieur des objets. NÉCESSITE UN REDÉMARRAGE !"/>
|
||||
<check_box label="Réinit. la pos. de la cam. quand l'avatar bouge" name="resetcameraonmovement" tool_tip="Réinitialise la caméra à sa position par défaut lorsque vous déplacez l'avatar."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
<check_box label="Cliquer sur votre avatar ne touche pas à la caméra" name="clickonavatarkeepscamera" tool_tip="Activer cette option empêche la caméra de se réinitialiser lorsque vous cliquez sur votre avatar."/>
|
||||
<check_box label="Réinitialise la caméra après une téléportation dans la région" name="FSResetCameraOnTP" tool_tip="Activer cette option réinitialisera le niveau de zoom de la caméra après une téléportation au sein d'une même région."/>
|
||||
<check_box label="Repositionner la caméra lors des déplacements de l'avatar" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Désactiver les contraintes de limitation de zoom" name="disableminzoomdist" tool_tip="Désactive la limitation de distance pour zoomer."/>
|
||||
<check_box label="Tourner l'avatar lorsque je réinitialise la caméra" name="resetviewturnsavatar" tool_tip="Activer cette option ne déplacera pas la caméra mais tournera votre avatar dans sa direction lorsque vous réinitialisez la caméra via le bouton ESC."/>
|
||||
<check_box label="Permettre à la caméra de traverser les objets" name="ignorecameraconstraints" tool_tip="Ignore les déplacements de caméra que le simulateur effectue lorsque celle-ci s'approche trop près des objets."/>
|
||||
<text name="ignorecameraconstraints_requires_restart">(Redémarrage requis)</text>
|
||||
|
|
|
|||
|
|
@ -468,7 +468,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="Clic sull'avatar mantiene posizione cam" name="clickonavatarkeepscamera" tool_tip="Normalmente, cliccando sul tuo avatar la posizione della camera si resetta, spuntando questa opzione, si annulla tale effetto."/>
|
||||
<check_box label="Ripristina cam dopo teleport (in regione)" name="FSResetCameraOnTP" tool_tip="Normalmente, la posizione della cam viene resettata quando ci si teletrasporta, togliendo la spunta da questa opzione, si annulla tale effetto."/>
|
||||
<check_box label="Disabilita distanza minima zoom" name="disableminzoomdist" tool_tip="Disabilita i limiti sulla distanza minima da un oggetto a cui la camera può arrivare."/>
|
||||
<check_box label="Permetti movimento senza limiti" name="ignorecameraconstraints" tool_tip="Ignora la 'spinta' che il simulatore applica alla camera per tenerla fuori dagli oggetti. RICHIEDE RIAVVIO."/>
|
||||
<check_box label="Ripristina cam quando l'avatar si muove" name="resetcamerapositiononmovement" tool_tip="Ripristina la camera alla posizione predefinita quando l'avatar si muove."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="Clic sull'avatar mantiene posizione cam" name="clickonavatarkeepscamera" tool_tip="Normalmente il clic sull'avatar ripristina la camera. Questa opzione evita questo comportamento"/>
|
||||
<check_box label="Ripristina cam dopo teleport" name="FSResetCameraOnTP" tool_tip="Normalmente la posizione della camera viene ripristinata dopo il TP (entro la regione). Questa opzione evita questo comportamento"/>
|
||||
<check_box label="Disabilita distanza minima zoom" name="disableminzoomdist" tool_tip="Disabilita i limiti sulla distanza minima da un oggetto a cui la camera può arrivare"/>
|
||||
<check_box label="Permette movimento senza limiti" name="ignorecameraconstraints" tool_tip="Ignora la 'spinta' che il simulatore applica alla camera per tenerla fuori dagli oggetti. RICHIEDE RIAVVIO"/>
|
||||
<check_box label="Ripristina cam al movimento avatar" name="resetcameraonmovement" tool_tip="Ripristina la camera alla posizione normale quando si muove l'avatar"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
<check_box label="Mantieni la posizione della camera cliccando l'avatar" name="clickonavatarkeepscamera" tool_tip="Normalmente, cliccando sul tuo avatar la posizione della camera si resetta, spuntando questa opzione, si annulla tale effetto."/>
|
||||
<check_box label="Ripristina posizione telecamera dopo il teleport (nella stessa regione)" name="FSResetCameraOnTP" tool_tip="Normalmente, la posizione della cam viene resettata quando ci si teletrasporta, togliendo la spunta da questa opzione, si annulla tale effetto."/>
|
||||
<check_box label="Ripristina posizione camera quando si muove l'avatar" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Disabilita limite di zoom della telecamera" name="disableminzoomdist" tool_tip="Disabilita il limite di zoom nell'avvicinarsi ad un'oggetto"/>
|
||||
<check_box label="Quando si ripristina la vista, gira l'avatar verso la cam" name="resetviewturnsavatar" tool_tip="Mantiene la linea di vista della camera e ruota l'avatar, se la visuale viene resettata (tasto ESC)."/>
|
||||
<check_box label="Consente alla cam di spostarsi dentro ai prim" name="ignorecameraconstraints" tool_tip="Ignora la 'spinta', che riceve la cam dal simulatore, quando ci si avvicina troppo ad un prim."/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
|
|
@ -746,7 +746,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="アバタークリックでカメラ位置をリセットしない" name="clickonavatarkeepscamera" tool_tip="通常は、自分自身のアバターをクリックするとカメラ位置がリセットされます。このオプションはこの動作を回避します。"/>
|
||||
<check_box label="テレポート後にカメラ位置をリセット" name="FSResetCameraOnTP" tool_tip="通常は、同一SIM内では、テレポートした後にカメラ位置はリセットされませんが、このオプションはリセットを有効にします。"/>
|
||||
<check_box label="最小カメラ距離を無効化" name="disableminzoomdist" tool_tip="オブジェクトに対して許容されている最小距離の制約を無効にします。"/>
|
||||
<check_box label="カメラが制限なく動くのを許可" name="ignorecameraconstraints" tool_tip="通常はSIMによってオブジェクトの外側にしかカメラを当てられませんが、この制限を無視してオブジェクトの中に入ることができるようになります。再起動が必要です!"/>
|
||||
<check_box label="アバターが動いたらカメラ位置をリセット" name="resetcamerapositiononmovement" tool_tip="自分自身のアバターを動かしたらカメラ位置をデフォルトの位置に戻します。"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -148,7 +148,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="アバタークリックでカメラ位置をリセットしない" name="clickonavatarkeepscamera" tool_tip="通常は、自分自身のアバターをクリックするとカメラ位置がリセットされます。このオプションはこの動作を回避します。" />
|
||||
<check_box label="テレポート後にカメラ位置をリセット" name="FSResetCameraOnTP" tool_tip="通常は、同一SIM内では、テレポートした後にカメラ位置はリセットされませんが、このオプションはリセットを有効にします。" />
|
||||
<check_box label="最小カメラ距離を無効化" name="disableminzoomdist" tool_tip="オブジェクトに対して許容されている最小距離の制約を無効にします。" />
|
||||
<check_box label="カメラが制限なく動くのを許可" name="ignorecameraconstraints" tool_tip="通常はSIMによってオブジェクトの外側にしかカメラを当てられませんが、この制限を無視してオブジェクトの中に入ることができるようになります。再起動が必要です!" />
|
||||
<check_box label="アバターが動いたらカメラ位置をリセット" name="resetcameraonmovement" tool_tip="自分自身のアバターを動かしたらカメラ位置をデフォルトの位置に戻します。" />
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
<check_box label="アバターをクリックしてもカメラの位置を変更しない" name="clickonavatarkeepscamera" tool_tip="通常、アバターをクリックするとカメラの位置がリセットされます。このオプションはこの動作を回避します。"/>
|
||||
<check_box label="(同じSIM内で)テレポートした後のカメラの位置を元に戻す" name="FSResetCameraOnTP" tool_tip="通常、テレポートする時にカメラの位置がリセットされます。このオプションはこの動作を回避します。"/>
|
||||
<check_box label="アバターが動く時にカメラの位置を元に戻す" name="FSResetCameraOnMovement" />
|
||||
<check_box label="至近距離の制限を解除" name="disableminzoomdist" tool_tip="オブジェクトにカメラが近づける距離には制限がありますが、この制限を解除して近づけます。"/>
|
||||
<check_box label="カメラリセット時にアバターを振り返らせる" name="resetviewturnsavatar" tool_tip="Escキーでカメラをリセットすると、アバターがカメラの方を向きます。"/>
|
||||
<check_box label="プリムの向こう側が見えるようにカメラ移動の制限を解除" name="ignorecameraconstraints" tool_tip="通常はプリムにぶつかるとそれより先にカメラを進めることはできないが、この制限を解除してプリムの向こう側にカメラを回ることができます。"/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
|
|
@ -468,7 +468,6 @@
|
|||
<panel name="P_Misc_Settings">
|
||||
<check_box label="Nie resetuj kamery, gdy kliknę na awatara" name="clickonavatarkeepscamera" tool_tip="Normalnie gdy klikniesz na swojego awatara pozycja kamery ulega zresetowaniu. Ta opcja usuwa to zachowanie."/>
|
||||
<check_box label="Resetuj pozycję kamery po teleportacji" name="FSResetCameraOnTP" tool_tip="Normalnie pozycja kamery ulega zresetowaniu po teleportacji. Ta opcja zapobiega temu zachowaniu."/>
|
||||
<check_box label="Wyłącz minimalną odl. przybliżenia" name="disableminzoomdist" tool_tip="Wyłącz ograniczenie w przybliżaniu obiektów."/>
|
||||
<check_box label="Przenikaj przez primy bez ograniczeń" name="ignorecameraconstraints" tool_tip="Ignoruje 'pchnięcie' stosowane przez symulator, aby utrzymać kamerę na zewnątrz obiektów. WYMAGA RESTARTU!"/>
|
||||
<check_box label="Resetuj pozycję kamery przy poruszaniu się" name="resetcamerapositiononmovement" tool_tip="Resetuje pozycję kamery do domyślnej pozycji, gdy poruszysz awatarem."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@
|
|||
<panel name="P_Add_Cam_Opt_Settings">
|
||||
<check_box label="Nie resetuj kamery, gdy kliknę na awatara" name="clickonavatarkeepscamera" tool_tip="Normalnie gdy klikniesz na swojego awatara pozycja kamery ulega zresetowaniu. Ta opcja usuwa to zachowanie."/>
|
||||
<check_box label="Resetuj pozycję kamery po teleportacji" name="FSResetCameraOnTP" tool_tip="Normalnie pozycja kamery ulega zresetowaniu po teleportacji. Ta opcja zapobiega temu zachowaniu."/>
|
||||
<check_box label="Wyłącz minimalną odl. przybliżenia" name="disableminzoomdist" tool_tip="Wyłącz ograniczenie w przybliżaniu obiektów."/>
|
||||
<check_box label="Przenikaj przez primy bez ograniczeń" name="ignorecameraconstraints" tool_tip="Ignoruje 'pchnięcie' stosowane przez symulator, aby utrzymać kamerę na zewnątrz obiektów. WYMAGA RESTARTU!"/>
|
||||
<check_box label="Resetuj pozycję kamery przy poruszaniu się" name="resetcameraonmovement" tool_tip="Resetuje pozycję kamery do domyślnej pozycji, gdy poruszysz awatarem."/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
<check_box label="Nie resetuj kamery, gdy kliknę na swojego awatara" name="clickonavatarkeepscamera" tool_tip="Normalnie gdy klikniesz na swojego awatara pozycja kamery ulega zresetowaniu. Ta opcja usuwa to zachowanie."/>
|
||||
<check_box label="Resetowanie pozycji kamery po teleportacji (wewnątrz regionu)" name="FSResetCameraOnTP" tool_tip="Normalnie pozycja kamery ulega zresetowaniu po teleportacji. Ta opcja zapobiega temu zachowaniu."/>
|
||||
<check_box label="Resetowanie pozycji kamery przy poruszaniu się awatarem" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Wyłącz minimalną odległość przybliżenia kamery" name="disableminzoomdist" tool_tip="Wyłącz ograniczenie w przybliżaniu obiektów."/>
|
||||
<check_box label="Obracaj awatara w stronę patrzenia kamery podczas resetowania widoku" name="resetviewturnsavatar" tool_tip="Po zresetowaniu widoku (lub naciśnięciu klawisza ESC) kierunek patrzenia kamery zostaje zachowany, a awatar - obrócony w jego stronę."/>
|
||||
<check_box label="Przenikanie kamery przez primy bez ograniczeń" name="ignorecameraconstraints" tool_tip="Ignoruje 'pchnięcie' stosowane przez symulator, aby utrzymać kamerę na zewnątrz obiektów."/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
|
|
@ -539,8 +539,6 @@
|
|||
tool_tip="Обычно нажатие на аватар сбрасывает положение камеры. Этот параметр устраняет это поведение."/>
|
||||
<check_box label="Сброс позиции камеры после телепорта" name="FSResetCameraOnTP"
|
||||
tool_tip="Как правило, положение камеры сбрасывается при телепортации (в пределах региона). Этот параметр предотвращает это поведение."/>
|
||||
<check_box label="Откл. минимальное расстояние камеры" name="disableminzoomdist"
|
||||
tool_tip="Отключает ограничение на ближайшее расстоянии от камеры до объекта."/>
|
||||
<check_box name="ignorecameraconstraints" label="Разрешить двигать камеру без преград"
|
||||
tool_tip="Игнорирует «выталкивание» камеры из объектов. ТРЕБУЕТ ПРЕЗАПУСК!"/>
|
||||
<check_box name="resetcamerapositiononmovement" label="Сброс позиции камеры при движении"
|
||||
|
|
|
|||
|
|
@ -125,8 +125,6 @@
|
|||
tool_tip="Обычно нажатие на аватар сбрасывает положение камеры. Этот параметр устраняет это поведение."/>
|
||||
<check_box name="FSResetCameraOnTP" label="Сброс положение камеры после телепорта"
|
||||
tool_tip="Как правило, положение камеры сбрасывается при телепортации (в пределах региона). Этот параметр предотвращает это поведение."/>
|
||||
<check_box name="disableminzoomdist" label="Отключить минимальное расстояние"
|
||||
tool_tip="Отключает ограничение на ближайшем расстоянии камеры до объекта."/>
|
||||
<check_box name="ignorecameraconstraints" label="Движение камеры без ограничений"
|
||||
tool_tip="Игнорирует «выталкивание» камеры из объектов. ТРЕБУЕТ РЕСТАРТА!"/>
|
||||
<check_box name="resetcameraonmovement"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
<check_box label="Нажатие на ваш аватар сохраняет положение камеры" name="clickonavatarkeepscamera" tool_tip="Обычно, при нажатии на аватаре сбрасывает положение камеры. Эта опция удаляет это поведение."/>
|
||||
<check_box label="Сохранять положение камеры после телепортации (в пределах региона)" name="FSResetCameraOnTP" tool_tip="Как правило, положение камеры сбрасывается при телепортации. Эта опция предотвращает это поведение."/>
|
||||
<check_box label="Сохранять положение камеры при движении аватара" name="FSResetCameraOnMovement"/>
|
||||
<check_box label="Отключить минимальное расстояние приближения камеры" name="disableminzoomdist" tool_tip="Отключение ограничения на близкое расстояние камеры позволит приблизиться ближе к объекту."/>
|
||||
<check_box label="Повернуть аватар в направлении камеры при сбросе вида" name="resetviewturnsavatar" tool_tip="Эта опция поворачивает аватара в направлении камеры при сбросе режима вида (нажмитие клавиши ESC)."/>
|
||||
<check_box label="Разрешить камере двигаться сквозь примы" name="ignorecameraconstraints" tool_tip="Разрешить камере двигаться без ограничений сквозь примы"/>
|
||||
<text name="ignorecameraconstraints_requires_restart">
|
||||
|
|
|
|||
Loading…
Reference in New Issue