Merge branch 'master' of D:/Dev/phoenix-firestorm-camus
|
|
@ -221,6 +221,7 @@ Ansariel Hiller
|
|||
STORM-2151
|
||||
MAINT-6917
|
||||
MAINT-8085
|
||||
STORM-2145
|
||||
MAINT-8723
|
||||
SL-10385
|
||||
SL-10891
|
||||
|
|
@ -787,6 +788,7 @@ Jonathan Yap
|
|||
STORM-2100
|
||||
STORM-2104
|
||||
STORM-2142
|
||||
STORM-2145
|
||||
SL-10089
|
||||
Kadah Coba
|
||||
STORM-1060
|
||||
|
|
@ -1513,6 +1515,7 @@ Whirly Fizzle
|
|||
STORM-1930
|
||||
BUG-6659
|
||||
STORM-2078
|
||||
BUG-17349
|
||||
Whoops Babii
|
||||
VWR-631
|
||||
VWR-1640
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
/**
|
||||
|
||||
* @file llfloater.cpp
|
||||
* @brief LLFloater base class
|
||||
*
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ public:
|
|||
virtual void setColor(const LLColor4& color);
|
||||
|
||||
// Ansariel: Changed to virtual. We might want to change the transparency ourself!
|
||||
virtual F32 getCurrentTransparency();
|
||||
virtual F32 getCurrentTransparency();
|
||||
|
||||
void setTransparencyType(ETypeTransparency type);
|
||||
ETypeTransparency getTransparencyType() const {return mTransparencyType;}
|
||||
|
|
|
|||
|
|
@ -345,6 +345,7 @@ set(viewer_SOURCE_FILES
|
|||
llfloaterbuycurrencyhtml.cpp
|
||||
llfloaterbuyland.cpp
|
||||
llfloatercamera.cpp
|
||||
llfloatercamerapresets.cpp
|
||||
llfloaterchatvoicevolume.cpp
|
||||
llfloatercolorpicker.cpp
|
||||
llfloaterconversationlog.cpp
|
||||
|
|
@ -407,12 +408,14 @@ set(viewer_SOURCE_FILES
|
|||
llfloaterperms.cpp
|
||||
llfloaterpostprocess.cpp
|
||||
llfloaterpreference.cpp
|
||||
llfloaterpreferenceviewadvanced.cpp
|
||||
llfloaterpreviewtrash.cpp
|
||||
llfloaterproperties.cpp
|
||||
llfloaterregiondebugconsole.cpp
|
||||
llfloaterregioninfo.cpp
|
||||
llfloaterreporter.cpp
|
||||
llfloaterregionrestarting.cpp
|
||||
llfloatersavecamerapreset.cpp
|
||||
llfloatersaveprefpreset.cpp
|
||||
llfloatersceneloadstats.cpp
|
||||
llfloaterscriptdebug.cpp
|
||||
|
|
@ -597,6 +600,7 @@ set(viewer_SOURCE_FILES
|
|||
llpanelplaceprofile.cpp
|
||||
llpanelplaces.cpp
|
||||
llpanelplacestab.cpp
|
||||
llpanelpresetscamerapulldown.cpp
|
||||
llpanelpresetspulldown.cpp
|
||||
llpanelprimmediacontrols.cpp
|
||||
llpanelprofile.cpp
|
||||
|
|
@ -1106,6 +1110,7 @@ set(viewer_HEADER_FILES
|
|||
llfloaterbuycurrency.h
|
||||
llfloaterbuycurrencyhtml.h
|
||||
llfloaterbuyland.h
|
||||
llfloatercamerapresets.h
|
||||
llfloatercamera.h
|
||||
llfloaterchatvoicevolume.h
|
||||
llfloatercolorpicker.h
|
||||
|
|
@ -1172,12 +1177,14 @@ set(viewer_HEADER_FILES
|
|||
llfloaterperms.h
|
||||
llfloaterpostprocess.h
|
||||
llfloaterpreference.h
|
||||
llfloaterpreferenceviewadvanced.h
|
||||
llfloaterpreviewtrash.h
|
||||
llfloaterproperties.h
|
||||
llfloaterregiondebugconsole.h
|
||||
llfloaterregioninfo.h
|
||||
llfloaterreporter.h
|
||||
llfloaterregionrestarting.h
|
||||
llfloatersavecamerapreset.h
|
||||
llfloatersaveprefpreset.h
|
||||
llfloatersceneloadstats.h
|
||||
llfloaterscriptdebug.h
|
||||
|
|
@ -1353,6 +1360,7 @@ set(viewer_HEADER_FILES
|
|||
llpanelplaceprofile.h
|
||||
llpanelplaces.h
|
||||
llpanelplacestab.h
|
||||
llpanelpresetscamerapulldown.h
|
||||
llpanelpresetspulldown.h
|
||||
llpanelprimmediacontrols.h
|
||||
llpanelprofile.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Front View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>2.2</real>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>CameraZoomFraction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mousewheel driven fraction of zoom</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.90322577953338623</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Front View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Rear View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-3</real>
|
||||
<real>0</real>
|
||||
<real>0.75</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>CameraZoomFraction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mousewheel driven fraction of zoom</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.90322577953338623</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>1.0</real>
|
||||
<real>0.0</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Side View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-1.0</real>
|
||||
<real>0.7</real>
|
||||
<real>0.5</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>CameraZoomFraction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mousewheel driven fraction of zoom</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.90322577953338623</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Side View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>1.5</real>
|
||||
<real>0.7</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -3035,6 +3035,21 @@
|
|||
<real>0.5</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetCustomPreset</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar for the custom camera preset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-3.0</real>
|
||||
<real>0.0</real>
|
||||
<real>0.75</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -3046,6 +3061,17 @@
|
|||
<key>Value</key>
|
||||
<real>1.0</real>
|
||||
</map>
|
||||
<key>CameraZoomFraction</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Mousewheel driven fraction of zoom</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.9</real>
|
||||
</map>
|
||||
<key>CameraPosOnLogout</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -3083,7 +3109,7 @@
|
|||
<key>Value</key>
|
||||
<real>1.0</real>
|
||||
</map>
|
||||
<key>CameraPreset</key>
|
||||
<key>CameraPreset</key> <!-- deprecated (see SL-12429) -->
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Preset camera position - view (0 - rear, 1 - front, 2 - group)</string>
|
||||
|
|
@ -6457,6 +6483,21 @@
|
|||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>FocusOffsetCustomPreset</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the custom camera preset (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>1.0</real>
|
||||
<real>0.0</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>FocusPosOnLogout</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -14209,6 +14250,17 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>BasicUITooltips</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show tooltips for various 2D UI elements like buttons or checkboxes, won't supress tooltips like drag'n'drop, inworld, links or media</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ShowHoverTips</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -21541,6 +21593,50 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>CameraOpacity</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Opacity of the Camera Controls floater</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.0</real>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Rear View</string>
|
||||
</map>
|
||||
<key>CameraPresetType</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Preset camera position - view (0 - rear, 1 - front, 2 - group, 3 - custom)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>U32</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>HoverHeightAffectsCamera</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera view is affected by Hover Height setting</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>CefVerboseLog</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -22554,17 +22650,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSAlwaysOpaqueCameraControls</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show Camera Controls always opaque</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSEnableVolumeControls</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ void main()
|
|||
/// Potentially better without it for water.
|
||||
pos /= pos.w;
|
||||
|
||||
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0));
|
||||
vec4 color = calcLighting(pos.xyz, norm, vec4(1), vec4(0));
|
||||
|
||||
vertex_color = color;
|
||||
|
||||
|
|
|
|||
|
|
@ -193,6 +193,9 @@ LLAgentCamera::LLAgentCamera() :
|
|||
clearGeneralKeys();
|
||||
clearOrbitKeys();
|
||||
clearPanKeys();
|
||||
|
||||
resetPanDiff();
|
||||
resetOrbitDiff();
|
||||
}
|
||||
|
||||
// Requires gSavedSettings to be initialized.
|
||||
|
|
@ -214,23 +217,18 @@ void LLAgentCamera::init()
|
|||
|
||||
mCameraFocusOffsetTarget = LLVector4(gSavedSettings.getVector3("CameraOffsetBuild"));
|
||||
|
||||
mCameraPreset = (ECameraPreset) gSavedSettings.getU32("CameraPreset");
|
||||
mCameraPreset = (ECameraPreset) gSavedSettings.getU32("CameraPresetType");
|
||||
|
||||
mCameraOffsetInitial[CAMERA_PRESET_REAR_VIEW] = gSavedSettings.getControl("CameraOffsetRearView");
|
||||
mCameraOffsetInitial[CAMERA_PRESET_FRONT_VIEW] = gSavedSettings.getControl("CameraOffsetFrontView");
|
||||
mCameraOffsetInitial[CAMERA_PRESET_GROUP_VIEW] = gSavedSettings.getControl("CameraOffsetGroupView");
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.0
|
||||
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("CameraOffsetRLVaView", LLVector3(mCameraOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
|
||||
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
|
||||
// [/RLVa:KB]
|
||||
|
||||
mFocusOffsetInitial[CAMERA_PRESET_REAR_VIEW] = gSavedSettings.getControl("FocusOffsetRearView");
|
||||
mFocusOffsetInitial[CAMERA_PRESET_FRONT_VIEW] = gSavedSettings.getControl("FocusOffsetFrontView");
|
||||
mFocusOffsetInitial[CAMERA_PRESET_GROUP_VIEW] = gSavedSettings.getControl("FocusOffsetGroupView");
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.0
|
||||
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("FocusOffsetRLVaView", LLVector3(mFocusOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
|
||||
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
|
||||
// [/RLVa:KB]
|
||||
mCameraOffsetInitial = gSavedSettings.getControl("CameraOffsetRearView");
|
||||
mFocusOffsetInitial = gSavedSettings.getControl("FocusOffsetRearView");
|
||||
//// [RLVa:KB] - Checked: RLVa-2.0.0
|
||||
// mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("CameraOffsetRLVaView", LLVector3(mCameraOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
|
||||
// mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
|
||||
//// [/RLVa:KB]
|
||||
//// [RLVa:KB] - Checked: RLVa-2.0.0
|
||||
// mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW] = gSavedSettings.declareVec3("FocusOffsetRLVaView", LLVector3(mFocusOffsetInitial[CAMERA_PRESET_REAR_VIEW]->getDefault()), "Declared in code", LLControlVariable::PERSIST_NO);
|
||||
// mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->setHiddenFromSettingsEditor(true);
|
||||
//// [/RLVa:KB]
|
||||
|
||||
mCameraCollidePlane.clearVec();
|
||||
mCurrentCameraDistance = getCameraOffsetInitial().magVec() * gSavedSettings.getF32("CameraOffsetScale");
|
||||
|
|
@ -379,7 +377,8 @@ void LLAgentCamera::resetView(BOOL reset_camera, BOOL change_camera, BOOL moveme
|
|||
|
||||
mCameraFOVZoomFactor = 0.f;
|
||||
}
|
||||
|
||||
resetPanDiff();
|
||||
resetOrbitDiff();
|
||||
mHUDTargetZoom = 1.f;
|
||||
// <FS:CR> FIRE-8798: Option to prevent camera reset on movement
|
||||
}
|
||||
|
|
@ -752,7 +751,7 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
F32 LLAgentCamera::getCameraZoomFraction()
|
||||
F32 LLAgentCamera::getCameraZoomFraction(bool get_third_person)
|
||||
{
|
||||
// 0.f -> camera zoomed all the way out
|
||||
// 1.f -> camera zoomed all the way in
|
||||
|
|
@ -762,7 +761,7 @@ F32 LLAgentCamera::getCameraZoomFraction()
|
|||
// already [0,1]
|
||||
return mHUDTargetZoom;
|
||||
}
|
||||
else if (mFocusOnAvatar && cameraThirdPerson())
|
||||
else if (get_third_person || (mFocusOnAvatar && cameraThirdPerson()))
|
||||
{
|
||||
return clamp_rescale(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION, 1.f, 0.f);
|
||||
}
|
||||
|
|
@ -870,6 +869,7 @@ void LLAgentCamera::cameraOrbitAround(const F32 radians)
|
|||
}
|
||||
else
|
||||
{
|
||||
mOrbitAroundRadians += radians;
|
||||
mCameraFocusOffsetTarget.rotVec(radians, 0.f, 0.f, 1.f);
|
||||
|
||||
cameraZoomIn(1.f);
|
||||
|
|
@ -901,12 +901,34 @@ void LLAgentCamera::cameraOrbitOver(const F32 angle)
|
|||
LLVector3d left_axis;
|
||||
left_axis.setVec(LLViewerCamera::getInstance()->getLeftAxis());
|
||||
F32 new_angle = llclamp(angle_from_up - angle, 1.f * DEG_TO_RAD, 179.f * DEG_TO_RAD);
|
||||
mOrbitOverAngle += angle_from_up - new_angle;
|
||||
mCameraFocusOffsetTarget.rotVec(angle_from_up - new_angle, left_axis);
|
||||
|
||||
cameraZoomIn(1.f);
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgentCamera::resetCameraOrbit()
|
||||
{
|
||||
LLVector3 camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
camera_offset_unit.normalize();
|
||||
|
||||
LLVector3d left_axis;
|
||||
left_axis.setVec(LLViewerCamera::getInstance()->getLeftAxis());
|
||||
mCameraFocusOffsetTarget.rotVec(-mOrbitOverAngle, left_axis);
|
||||
|
||||
mCameraFocusOffsetTarget.rotVec(-mOrbitAroundRadians, 0.f, 0.f, 1.f);
|
||||
|
||||
cameraZoomIn(1.f);
|
||||
resetOrbitDiff();
|
||||
}
|
||||
|
||||
void LLAgentCamera::resetOrbitDiff()
|
||||
{
|
||||
mOrbitAroundRadians = 0;
|
||||
mOrbitOverAngle = 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// cameraZoomIn()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -1070,6 +1092,8 @@ void LLAgentCamera::cameraPanIn(F32 meters)
|
|||
LLVector3d at_axis;
|
||||
at_axis.setVec(LLViewerCamera::getInstance()->getAtAxis());
|
||||
|
||||
mPanFocusDiff += meters * at_axis;
|
||||
|
||||
mFocusTargetGlobal += meters * at_axis;
|
||||
mFocusGlobal = mFocusTargetGlobal;
|
||||
// don't enforce zoom constraints as this is the only way for users to get past them easily
|
||||
|
|
@ -1086,6 +1110,8 @@ void LLAgentCamera::cameraPanLeft(F32 meters)
|
|||
LLVector3d left_axis;
|
||||
left_axis.setVec(LLViewerCamera::getInstance()->getLeftAxis());
|
||||
|
||||
mPanFocusDiff += meters * left_axis;
|
||||
|
||||
mFocusTargetGlobal += meters * left_axis;
|
||||
mFocusGlobal = mFocusTargetGlobal;
|
||||
|
||||
|
|
@ -1106,6 +1132,8 @@ void LLAgentCamera::cameraPanUp(F32 meters)
|
|||
LLVector3d up_axis;
|
||||
up_axis.setVec(LLViewerCamera::getInstance()->getUpAxis());
|
||||
|
||||
mPanFocusDiff += meters * up_axis;
|
||||
|
||||
mFocusTargetGlobal += meters * up_axis;
|
||||
mFocusGlobal = mFocusTargetGlobal;
|
||||
|
||||
|
|
@ -1118,6 +1146,26 @@ void LLAgentCamera::cameraPanUp(F32 meters)
|
|||
mCameraSmoothingLastPositionGlobal = calcCameraPositionTargetGlobal();
|
||||
}
|
||||
|
||||
void LLAgentCamera::resetCameraPan()
|
||||
{
|
||||
mFocusTargetGlobal -= mPanFocusDiff;
|
||||
|
||||
mFocusGlobal = mFocusTargetGlobal;
|
||||
mCameraSmoothingStop = true;
|
||||
|
||||
cameraZoomIn(1.f);
|
||||
updateFocusOffset();
|
||||
|
||||
mCameraSmoothingLastPositionGlobal = calcCameraPositionTargetGlobal();
|
||||
|
||||
resetPanDiff();
|
||||
}
|
||||
|
||||
void LLAgentCamera::resetPanDiff()
|
||||
{
|
||||
mPanFocusDiff.clear();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// updateLookAt()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -1679,7 +1727,7 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()
|
|||
agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();
|
||||
}
|
||||
|
||||
focus_offset = convert_from_llsd<LLVector3d>(mFocusOffsetInitial[mCameraPreset]->get(), TYPE_VEC3D, "");
|
||||
focus_offset = convert_from_llsd<LLVector3d>(mFocusOffsetInitial->get(), TYPE_VEC3D, "");
|
||||
return focus_offset * agent_rot;
|
||||
}
|
||||
|
||||
|
|
@ -1757,10 +1805,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
F32 camera_land_height;
|
||||
LLVector3d frame_center_global = !isAgentAvatarValid() ?
|
||||
gAgent.getPositionGlobal() :
|
||||
// <FS:Ansariel> FIRE-15772: Adjusting Hover Height changes camera view when camera view is at default
|
||||
//gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot->getWorldPosition());
|
||||
gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot->getWorldPosition() - gAgentAvatarp->getHoverOffset() );
|
||||
// </FS:Ansariel>
|
||||
gAgent.getPosGlobalFromAgent(getAvatarRootPosition());
|
||||
|
||||
BOOL isConstrained = FALSE;
|
||||
LLVector3d head_offset;
|
||||
|
|
@ -1835,7 +1880,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
at_axis.normalize();
|
||||
gAgent.resetAxes(at_axis * ~parent_rot);
|
||||
|
||||
local_camera_offset = local_camera_offset * gAgent.getFrameAgent().getQuaternion() * parent_rot;
|
||||
local_camera_offset = local_camera_offset * parent_rot;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2100,9 +2145,36 @@ bool LLAgentCamera::clampCameraPosition(LLVector3d& posCamGlobal, const LLVector
|
|||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
LLVector3 LLAgentCamera::getCurrentCameraOffset()
|
||||
{
|
||||
LLVector3 camera_offset = (LLViewerCamera::getInstance()->getOrigin() - getAvatarRootPosition() - mThirdPersonHeadOffset) * ~getCurrentAvatarRotation();
|
||||
return camera_offset / mCameraZoomFraction / gSavedSettings.getF32("CameraOffsetScale");
|
||||
}
|
||||
|
||||
LLVector3d LLAgentCamera::getCurrentFocusOffset()
|
||||
{
|
||||
return (mFocusTargetGlobal - gAgent.getPositionGlobal()) * ~getCurrentAvatarRotation();
|
||||
}
|
||||
|
||||
LLQuaternion LLAgentCamera::getCurrentAvatarRotation()
|
||||
{
|
||||
LLViewerObject* sit_object = (LLViewerObject*)gAgentAvatarp->getParent();
|
||||
return sit_object ? sit_object->getRenderRotation() : gAgent.getFrameAgent().getQuaternion();
|
||||
}
|
||||
|
||||
bool LLAgentCamera::isJoystickCameraUsed()
|
||||
{
|
||||
return ((mOrbitAroundRadians != 0) || (mOrbitOverAngle != 0) || !mPanFocusDiff.isNull());
|
||||
}
|
||||
|
||||
LLVector3 LLAgentCamera::getCameraOffsetInitial()
|
||||
{
|
||||
return convert_from_llsd<LLVector3>(mCameraOffsetInitial[mCameraPreset]->get(), TYPE_VEC3, "");
|
||||
return convert_from_llsd<LLVector3>(mCameraOffsetInitial->get(), TYPE_VEC3, "");
|
||||
}
|
||||
|
||||
LLVector3d LLAgentCamera::getFocusOffsetInitial()
|
||||
{
|
||||
return convert_from_llsd<LLVector3d>(mFocusOffsetInitial->get(), TYPE_VEC3D, "");
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
|
|
@ -2118,6 +2190,12 @@ F32 LLAgentCamera::getCameraMaxZoomDistance(bool allow_disabled_constraints /* =
|
|||
LLWorld::getInstance()->getRegionWidthInMeters() - CAMERA_FUDGE_FROM_OBJECT);
|
||||
}
|
||||
|
||||
LLVector3 LLAgentCamera::getAvatarRootPosition()
|
||||
{
|
||||
static LLCachedControl<bool> use_hover_height(gSavedSettings, "HoverHeightAffectsCamera");
|
||||
return use_hover_height ? gAgentAvatarp->mRoot->getWorldPosition() : gAgentAvatarp->mRoot->getWorldPosition() - gAgentAvatarp->getHoverOffset();
|
||||
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
// handleScrollWheel()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -2445,15 +2523,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
|
|||
}
|
||||
|
||||
// Remove any pitch from the avatar
|
||||
if (isAgentAvatarValid() && gAgentAvatarp->getParent())
|
||||
{
|
||||
LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
|
||||
at_axis = LLViewerCamera::getInstance()->getAtAxis();
|
||||
at_axis.mV[VZ] = 0.f;
|
||||
at_axis.normalize();
|
||||
gAgent.resetAxes(at_axis * ~obj_rot);
|
||||
}
|
||||
else
|
||||
if (!isAgentAvatarValid() || !gAgentAvatarp->getParent())
|
||||
{
|
||||
at_axis = gAgent.getFrameAgent().getAtAxis();
|
||||
at_axis.mV[VZ] = 0.f;
|
||||
|
|
@ -2565,8 +2635,8 @@ void LLAgentCamera::switchCameraPreset(ECameraPreset preset)
|
|||
// Reset our view when switching away
|
||||
if (CAMERA_RLV_SETCAM_VIEW != preset)
|
||||
{
|
||||
mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
|
||||
mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
|
||||
//mCameraOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
|
||||
//mFocusOffsetInitial[CAMERA_RLV_SETCAM_VIEW]->resetToDefault();
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
|
@ -2579,7 +2649,10 @@ void LLAgentCamera::switchCameraPreset(ECameraPreset preset)
|
|||
|
||||
mCameraPreset = preset;
|
||||
|
||||
gSavedSettings.setU32("CameraPreset", mCameraPreset);
|
||||
resetPanDiff();
|
||||
resetOrbitDiff();
|
||||
|
||||
gSavedSettings.setU32("CameraPresetType", mCameraPreset);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2849,15 +2922,7 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)
|
|||
if (mCameraMode == CAMERA_MODE_THIRD_PERSON)
|
||||
{
|
||||
LLVector3 at_axis;
|
||||
if (isAgentAvatarValid() && gAgentAvatarp->getParent())
|
||||
{
|
||||
LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
|
||||
at_axis = LLViewerCamera::getInstance()->getAtAxis();
|
||||
at_axis.mV[VZ] = 0.f;
|
||||
at_axis.normalize();
|
||||
gAgent.resetAxes(at_axis * ~obj_rot);
|
||||
}
|
||||
else
|
||||
if (!isAgentAvatarValid() || !gAgentAvatarp->getParent())
|
||||
{
|
||||
at_axis = LLViewerCamera::getInstance()->getAtAxis();
|
||||
at_axis.mV[VZ] = 0.f;
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ enum ECameraPreset
|
|||
/** "Above and to the left, over the shoulder, pulled back a little on the zoom" */
|
||||
CAMERA_PRESET_GROUP_VIEW,
|
||||
|
||||
/** Current view when a preset is saved */
|
||||
CAMERA_PRESET_CUSTOM,
|
||||
|
||||
// [RLVa:KB] - Checked: RLVa-2.0.0
|
||||
/* Used by RLVa */
|
||||
CAMERA_RLV_SETCAM_VIEW
|
||||
|
|
@ -114,9 +117,17 @@ private:
|
|||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void switchCameraPreset(ECameraPreset preset);
|
||||
private:
|
||||
/** Determines default camera offset depending on the current camera preset */
|
||||
LLVector3 getCameraOffsetInitial();
|
||||
/** Determines default focus offset depending on the current camera preset */
|
||||
LLVector3d getFocusOffsetInitial();
|
||||
|
||||
LLVector3 getCurrentCameraOffset();
|
||||
LLVector3d getCurrentFocusOffset();
|
||||
LLQuaternion getCurrentAvatarRotation();
|
||||
bool isJoystickCameraUsed();
|
||||
|
||||
private:
|
||||
/** Determines maximum camera distance from target for mouselook, opposite to LAND_MIN_ZOOM */
|
||||
// <FS:Ansariel> FIRE-23470: Fix camera controls zoom glitch
|
||||
//F32 getCameraMaxZoomDistance();
|
||||
|
|
@ -126,11 +137,11 @@ private:
|
|||
/** Camera preset in Third Person Mode */
|
||||
ECameraPreset mCameraPreset;
|
||||
|
||||
/** Initial camera offsets */
|
||||
std::map<ECameraPreset, LLPointer<LLControlVariable> > mCameraOffsetInitial;
|
||||
/** Initial camera offset */
|
||||
LLPointer<LLControlVariable> mCameraOffsetInitial;
|
||||
|
||||
/** Initial focus offsets */
|
||||
std::map<ECameraPreset, LLPointer<LLControlVariable> > mFocusOffsetInitial;
|
||||
/** Initial focus offset */
|
||||
LLPointer<LLControlVariable> mFocusOffsetInitial;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Position
|
||||
|
|
@ -145,6 +156,8 @@ public:
|
|||
F32 getCurrentCameraBuildOffset() { return (F32)mCameraFocusOffset.length(); }
|
||||
void clearCameraLag() { mCameraLag.clearVec(); }
|
||||
private:
|
||||
LLVector3 getAvatarRootPosition();
|
||||
|
||||
F32 mCurrentCameraDistance; // Current camera offset from avatar
|
||||
F32 mTargetCameraDistance; // Target camera offset from avatar
|
||||
F32 mCameraFOVZoomFactor; // Amount of fov zoom applied to camera when zeroing in on an object
|
||||
|
|
@ -266,15 +279,16 @@ public:
|
|||
void cameraOrbitAround(const F32 radians); // Rotate camera CCW radians about build focus point
|
||||
void cameraOrbitOver(const F32 radians); // Rotate camera forward radians over build focus point
|
||||
void cameraOrbitIn(const F32 meters); // Move camera in toward build focus point
|
||||
|
||||
void resetCameraOrbit();
|
||||
void resetOrbitDiff();
|
||||
//--------------------------------------------------------------------
|
||||
// Zoom
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void handleScrollWheel(S32 clicks); // Mousewheel driven zoom
|
||||
void cameraZoomIn(const F32 factor); // Zoom in by fraction of current distance
|
||||
F32 getCameraZoomFraction(); // Get camera zoom as fraction of minimum and maximum zoom
|
||||
void setCameraZoomFraction(F32 fraction); // Set camera zoom as fraction of minimum and maximum zoom
|
||||
void handleScrollWheel(S32 clicks); // Mousewheel driven zoom
|
||||
void cameraZoomIn(const F32 factor); // Zoom in by fraction of current distance
|
||||
F32 getCameraZoomFraction(bool get_third_person = false); // Get camera zoom as fraction of minimum and maximum zoom
|
||||
void setCameraZoomFraction(F32 fraction); // Set camera zoom as fraction of minimum and maximum zoom
|
||||
F32 calcCameraFOVZoomFactor();
|
||||
F32 getAgentHUDTargetZoom();
|
||||
|
||||
|
|
@ -284,8 +298,9 @@ public:
|
|||
public:
|
||||
void cameraPanIn(const F32 meters);
|
||||
void cameraPanLeft(const F32 meters);
|
||||
void cameraPanUp(const F32 meters);
|
||||
|
||||
void cameraPanUp(const F32 meters);
|
||||
void resetCameraPan();
|
||||
void resetPanDiff();
|
||||
//--------------------------------------------------------------------
|
||||
// View
|
||||
//--------------------------------------------------------------------
|
||||
|
|
@ -387,6 +402,9 @@ private:
|
|||
F32 mOrbitInKey;
|
||||
F32 mOrbitOutKey;
|
||||
|
||||
F32 mOrbitAroundRadians;
|
||||
F32 mOrbitOverAngle;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Pan
|
||||
//--------------------------------------------------------------------
|
||||
|
|
@ -414,6 +432,8 @@ private:
|
|||
F32 mPanInKey;
|
||||
F32 mPanOutKey;
|
||||
|
||||
LLVector3d mPanFocusDiff;
|
||||
|
||||
/** Keys
|
||||
** **
|
||||
*******************************************************************************/
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
// Viewer includes
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "lljoystickbutton.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewercamera.h"
|
||||
|
|
@ -42,6 +43,7 @@
|
|||
#include "llslider.h"
|
||||
#include "llfirstuse.h"
|
||||
#include "llhints.h"
|
||||
#include "lltabcontainer.h"
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLPanelCameraItem> r("panel_camera_item");
|
||||
|
||||
|
|
@ -52,7 +54,6 @@ const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed
|
|||
#define ORBIT "cam_rotate_stick"
|
||||
#define PAN "cam_track_stick"
|
||||
#define ZOOM "zoom"
|
||||
#define PRESETS "preset_views_list"
|
||||
#define CONTROLS "controls"
|
||||
|
||||
bool LLFloaterCamera::sFreeCamera = false;
|
||||
|
|
@ -281,13 +282,7 @@ void LLFloaterCamera::onAvatarEditingAppearance(bool editing)
|
|||
|
||||
void LLFloaterCamera::handleAvatarEditingAppearance(bool editing)
|
||||
{
|
||||
//camera presets (rear, front, etc.)
|
||||
getChildView("preset_views_list")->setEnabled(!editing);
|
||||
getChildView("presets_btn")->setEnabled(!editing);
|
||||
|
||||
//camera modes (object view, mouselook view)
|
||||
getChildView("camera_modes_list")->setEnabled(!editing);
|
||||
getChildView("avatarview_btn")->setEnabled(!editing);
|
||||
}
|
||||
|
||||
void LLFloaterCamera::update()
|
||||
|
|
@ -344,7 +339,6 @@ void LLFloaterCamera::onOpen(const LLSD& key)
|
|||
LLFirstUse::viewPopup();
|
||||
|
||||
mZoom->onOpen(key);
|
||||
setCameraFloaterTransparencyMode(LLSD(gSavedSettings.getBOOL("FSAlwaysOpaqueCameraControls"))); // <FS:PP> FIRE-5583, FIRE-5220: Option to show Camera Controls always opaque
|
||||
|
||||
// Returns to previous mode, see EXT-2727(View tool should remember state).
|
||||
// In case floater was just hidden and it isn't reset the mode
|
||||
|
|
@ -354,6 +348,8 @@ void LLFloaterCamera::onOpen(const LLSD& key)
|
|||
else
|
||||
toPrevMode();
|
||||
mClosed = FALSE;
|
||||
|
||||
populatePresetCombo();
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onClose(bool app_quitting)
|
||||
|
|
@ -380,38 +376,49 @@ void LLFloaterCamera::onClose(bool app_quitting)
|
|||
LLFloaterCamera::LLFloaterCamera(const LLSD& val)
|
||||
: LLFloater(val),
|
||||
mClosed(FALSE),
|
||||
mUseFlatUI(false), // <AW: Flat cam floater>
|
||||
mCurrMode(CAMERA_CTRL_MODE_PAN),
|
||||
mPrevMode(CAMERA_CTRL_MODE_PAN)
|
||||
{
|
||||
LLHints::getInstance()->registerHintTarget("view_popup", getHandle());
|
||||
mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
|
||||
mCommitCallbackRegistrar.add("CameraPresets.Save", boost::bind(&LLFloaterCamera::onSavePreset, this));
|
||||
mCommitCallbackRegistrar.add("CameraPresets.ShowPresetsList", boost::bind(&LLFloaterReg::showInstance, "camera_presets", LLSD(), FALSE));
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLFloaterCamera::postBuild()
|
||||
{
|
||||
|
||||
// <FS:PP> FIRE-5583, FIRE-5220: Option to show Camera Controls always opaque
|
||||
// updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
|
||||
gSavedSettings.getControl("FSAlwaysOpaqueCameraControls")->getSignal()->connect(boost::bind(&LLFloaterCamera::setCameraFloaterTransparencyMode, this, _2));
|
||||
// </FS:PP>
|
||||
|
||||
mRotate = getChild<LLJoystickCameraRotate>(ORBIT);
|
||||
mZoom = findChild<LLPanelCameraZoom>(ZOOM);
|
||||
mTrack = getChild<LLJoystickCameraTrack>(PAN);
|
||||
// <AW: Flat cam floater>
|
||||
if (hasString("use_flat_ui"))
|
||||
mPresetCombo = getChild<LLComboBox>("preset_combo");
|
||||
|
||||
// <FS:Ansariel> Improved camera floater
|
||||
//getChild<LLTextBox>("precise_ctrs_label")->setShowCursorHand(false);
|
||||
//getChild<LLTextBox>("precise_ctrs_label")->setSoundFlags(LLView::MOUSE_UP);
|
||||
//getChild<LLTextBox>("precise_ctrs_label")->setClickedCallback(boost::bind(&LLFloaterReg::showInstance, "prefs_view_advanced", LLSD(), FALSE));
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Phototools support
|
||||
LLButton* presets_btn = findChild<LLButton>("presets_btn");
|
||||
if (presets_btn)
|
||||
{
|
||||
mUseFlatUI = true;
|
||||
presets_btn->setCommitCallback(boost::bind(&LLFloaterCamera::switchViews, this, CAMERA_CTRL_MODE_PRESETS));
|
||||
}
|
||||
else
|
||||
// </AW: Flat cam floater>
|
||||
LLButton* modes_btn = findChild<LLButton>("avatarview_btn");
|
||||
if (modes_btn)
|
||||
{
|
||||
assignButton2Mode(CAMERA_CTRL_MODE_MODES, "avatarview_btn");
|
||||
assignButton2Mode(CAMERA_CTRL_MODE_PAN, "pan_btn");
|
||||
assignButton2Mode(CAMERA_CTRL_MODE_PRESETS, "presets_btn");
|
||||
modes_btn->setCommitCallback(boost::bind(&LLFloaterCamera::switchViews, this, CAMERA_CTRL_MODE_MODES));
|
||||
}
|
||||
LLButton* pan_btn = findChild<LLButton>("pan_btn");
|
||||
if (pan_btn)
|
||||
{
|
||||
pan_btn->setCommitCallback(boost::bind(&LLFloaterCamera::switchViews, this, CAMERA_CTRL_MODE_PAN));
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this));
|
||||
LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this));
|
||||
|
||||
update();
|
||||
|
||||
|
|
@ -421,21 +428,14 @@ BOOL LLFloaterCamera::postBuild()
|
|||
return LLFloater::postBuild();
|
||||
}
|
||||
|
||||
// <FS:PP> FIRE-5583, FIRE-5220: Option to show Camera Controls always opaque
|
||||
void LLFloaterCamera::setCameraFloaterTransparencyMode(const LLSD &data)
|
||||
F32 LLFloaterCamera::getCurrentTransparency()
|
||||
{
|
||||
if(data.asBoolean())
|
||||
{
|
||||
updateTransparency(TT_FORCE_OPAQUE);
|
||||
setBackgroundOpaque(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
|
||||
setBackgroundOpaque(false);
|
||||
}
|
||||
|
||||
static LLCachedControl<F32> camera_opacity(gSavedSettings, "CameraOpacity");
|
||||
static LLCachedControl<F32> active_floater_transparency(gSavedSettings, "ActiveFloaterTransparency");
|
||||
return llmin(camera_opacity(), active_floater_transparency());
|
||||
|
||||
}
|
||||
// </FS:PP>
|
||||
|
||||
void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel)
|
||||
{
|
||||
|
|
@ -499,48 +499,12 @@ void LLFloaterCamera::setMode(ECameraControlMode mode)
|
|||
updateState();
|
||||
}
|
||||
|
||||
void LLFloaterCamera::setModeTitle(const ECameraControlMode mode)
|
||||
{
|
||||
std::string title;
|
||||
// <AW: Flat cam floater>
|
||||
if (mUseFlatUI)
|
||||
{
|
||||
title = getString("flat_ui_title");
|
||||
}
|
||||
else
|
||||
// </AW: Flat cam floater>
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case CAMERA_CTRL_MODE_MODES:
|
||||
title = getString("camera_modes_title");
|
||||
break;
|
||||
case CAMERA_CTRL_MODE_PAN:
|
||||
title = getString("pan_mode_title");
|
||||
break;
|
||||
case CAMERA_CTRL_MODE_PRESETS:
|
||||
title = getString("presets_mode_title");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
setTitle(title);
|
||||
}
|
||||
|
||||
void LLFloaterCamera::switchMode(ECameraControlMode mode)
|
||||
{
|
||||
setMode(mode);
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case CAMERA_CTRL_MODE_MODES:
|
||||
if(sFreeCamera)
|
||||
{
|
||||
switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
}
|
||||
break;
|
||||
|
||||
case CAMERA_CTRL_MODE_PAN:
|
||||
sFreeCamera = false;
|
||||
clear_camera_tool();
|
||||
|
|
@ -564,45 +528,8 @@ void LLFloaterCamera::switchMode(ECameraControlMode mode)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterCamera::onClickBtn(ECameraControlMode mode)
|
||||
{
|
||||
// check for a click on active button
|
||||
if (mCurrMode == mode) mMode2Button[mode]->setToggleState(TRUE);
|
||||
|
||||
switchMode(mode);
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::string& button_name)
|
||||
{
|
||||
LLButton* button = getChild<LLButton>(button_name);
|
||||
|
||||
button->setClickedCallback(boost::bind(&LLFloaterCamera::onClickBtn, this, mode));
|
||||
mMode2Button[mode] = button;
|
||||
}
|
||||
|
||||
void LLFloaterCamera::updateState()
|
||||
{
|
||||
// <AW: Flat cam floater>
|
||||
if (mUseFlatUI)
|
||||
{
|
||||
setModeTitle(mCurrMode);
|
||||
updateItemsSelection();
|
||||
return;
|
||||
}
|
||||
// </AW: Flat cam floater>
|
||||
|
||||
getChildView(ZOOM)->setVisible(CAMERA_CTRL_MODE_PAN == mCurrMode);
|
||||
|
||||
bool show_presets = (CAMERA_CTRL_MODE_PRESETS == mCurrMode) || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode
|
||||
&& CAMERA_CTRL_MODE_PRESETS == mPrevMode);
|
||||
getChildView(PRESETS)->setVisible(show_presets);
|
||||
|
||||
bool show_camera_modes = CAMERA_CTRL_MODE_MODES == mCurrMode || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode
|
||||
&& CAMERA_CTRL_MODE_MODES == mPrevMode);
|
||||
getChildView("camera_modes_list")->setVisible( show_camera_modes);
|
||||
|
||||
updateItemsSelection();
|
||||
|
||||
if (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode)
|
||||
|
|
@ -620,13 +547,13 @@ void LLFloaterCamera::updateState()
|
|||
|
||||
void LLFloaterCamera::updateItemsSelection()
|
||||
{
|
||||
ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPreset");
|
||||
ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPresetType");
|
||||
LLSD argument;
|
||||
argument["selected"] = preset == CAMERA_PRESET_REAR_VIEW;
|
||||
argument["selected"] = (preset == CAMERA_PRESET_REAR_VIEW) && !sFreeCamera;
|
||||
getChild<LLPanelCameraItem>("rear_view")->setValue(argument);
|
||||
argument["selected"] = preset == CAMERA_PRESET_GROUP_VIEW;
|
||||
argument["selected"] = (preset == CAMERA_PRESET_GROUP_VIEW) && !sFreeCamera;
|
||||
getChild<LLPanelCameraItem>("group_view")->setValue(argument);
|
||||
argument["selected"] = preset == CAMERA_PRESET_FRONT_VIEW;
|
||||
argument["selected"] = (preset == CAMERA_PRESET_FRONT_VIEW) && !sFreeCamera;
|
||||
getChild<LLPanelCameraItem>("front_view")->setValue(argument);
|
||||
argument["selected"] = gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK;
|
||||
getChild<LLPanelCameraItem>("mouselook_view")->setValue(argument);
|
||||
|
|
@ -634,55 +561,96 @@ void LLFloaterCamera::updateItemsSelection()
|
|||
getChild<LLPanelCameraItem>("object_view")->setValue(argument);
|
||||
}
|
||||
|
||||
/*static*/
|
||||
void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
||||
{
|
||||
std::string name = param.asString();
|
||||
|
||||
// <AW: Flat cam floater>
|
||||
//if ("mouselook_view" == name)
|
||||
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
|
||||
if ("reset_view" == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
}
|
||||
else if ("mouselook_view" == name)
|
||||
// </AW: Flat cam floater>
|
||||
if ("mouselook_view" == name)
|
||||
{
|
||||
gAgentCamera.changeCameraToMouselook();
|
||||
}
|
||||
// <AW: Flat cam floater>
|
||||
// else if ("object_view" == name)
|
||||
// {
|
||||
// LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
// if (camera_floater)
|
||||
// camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
// }
|
||||
else if ("object_view" == name)
|
||||
{
|
||||
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
if (camera_floater)
|
||||
{
|
||||
if (camera_floater->mUseFlatUI)
|
||||
{
|
||||
camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
}
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
camera_floater->updateItemsSelection();
|
||||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Phototools camera
|
||||
camera_floater = LLFloaterCamera::findPhototoolsInstance();
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
camera_floater->updateItemsSelection();
|
||||
camera_floater->fromFreeToPresets();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
// </AW: Flat cam floater>
|
||||
// <FS:Ansariel> Improved camera floater
|
||||
else if ("reset_view" == name)
|
||||
{
|
||||
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
|
||||
// <FS:Ansariel> Phototools camera
|
||||
camera_floater = LLFloaterCamera::findPhototoolsInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
switchToPreset("rear_view");
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
else
|
||||
{
|
||||
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
|
||||
// <FS:Ansariel> Phototools camera
|
||||
camera_floater = LLFloaterCamera::findPhototoolsInstance();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
// </FS:Ansariel>
|
||||
|
||||
switchToPreset(name);
|
||||
}
|
||||
}
|
||||
|
||||
// LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();// <AW: Flat cam floater>
|
||||
/*static*/
|
||||
void LLFloaterCamera::switchToPreset(const std::string& name)
|
||||
{
|
||||
sFreeCamera = false;
|
||||
clear_camera_tool();
|
||||
if (PRESETS_REAR_VIEW == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
}
|
||||
else if (PRESETS_SIDE_VIEW == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_GROUP_VIEW);
|
||||
}
|
||||
else if (PRESETS_FRONT_VIEW == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW);
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_CUSTOM);
|
||||
}
|
||||
|
||||
if (gSavedSettings.getString("PresetCameraActive") != name)
|
||||
{
|
||||
LLPresetsManager::getInstance()->loadPreset(PRESETS_CAMERA, name);
|
||||
}
|
||||
gAgentCamera.setCameraZoomFraction(gSavedSettings.getF32("CameraZoomFraction"));
|
||||
|
||||
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->updateItemsSelection();
|
||||
|
|
@ -691,37 +659,6 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
|||
|
||||
// <FS:Ansariel> Phototools camera
|
||||
camera_floater = LLFloaterCamera::findPhototoolsInstance();
|
||||
|
||||
if ("reset_view" == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
if (camera_floater)
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
}
|
||||
else if ("mouselook_view" == name)
|
||||
{
|
||||
gAgentCamera.changeCameraToMouselook();
|
||||
}
|
||||
else if ("object_view" == name)
|
||||
{
|
||||
if (camera_floater)
|
||||
{
|
||||
if (camera_floater->mUseFlatUI)
|
||||
{
|
||||
camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switchToPreset(name);
|
||||
}
|
||||
|
||||
if (camera_floater)
|
||||
{
|
||||
camera_floater->updateItemsSelection();
|
||||
|
|
@ -730,36 +667,84 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
|
|||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
/*static*/
|
||||
void LLFloaterCamera::switchToPreset(const std::string& name)
|
||||
{
|
||||
sFreeCamera = false;
|
||||
clear_camera_tool();
|
||||
if ("rear_view" == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
}
|
||||
else if ("group_view" == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_GROUP_VIEW);
|
||||
}
|
||||
else if ("front_view" == name)
|
||||
{
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterCamera::fromFreeToPresets()
|
||||
{
|
||||
// <AW: Flat cam floater>
|
||||
// if (!sFreeCamera && mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && mPrevMode == CAMERA_CTRL_MODE_PRESETS)
|
||||
if(mUseFlatUI && !sFreeCamera && mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && mPrevMode == CAMERA_CTRL_MODE_PAN)
|
||||
{
|
||||
switchMode(CAMERA_CTRL_MODE_PAN);
|
||||
}
|
||||
else if (!sFreeCamera && mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && mPrevMode == CAMERA_CTRL_MODE_PRESETS)
|
||||
// </AW: Flat cam floater>
|
||||
if (!sFreeCamera && mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && mPrevMode == CAMERA_CTRL_MODE_PRESETS)
|
||||
{
|
||||
switchMode(CAMERA_CTRL_MODE_PRESETS);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterCamera::populatePresetCombo()
|
||||
{
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_CAMERA, mPresetCombo, EDefaultOptions::DEFAULT_HIDE);
|
||||
std::string active_preset_name = gSavedSettings.getString("PresetCameraActive");
|
||||
if (active_preset_name.empty())
|
||||
{
|
||||
gSavedSettings.setU32("CameraPresetType", CAMERA_PRESET_CUSTOM);
|
||||
updateItemsSelection();
|
||||
mPresetCombo->setLabel(getString("inactive_combo_text"));
|
||||
}
|
||||
else if ((ECameraPreset)gSavedSettings.getU32("CameraPresetType") == CAMERA_PRESET_CUSTOM)
|
||||
{
|
||||
mPresetCombo->selectByValue(active_preset_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
mPresetCombo->setLabel(getString("inactive_combo_text"));
|
||||
}
|
||||
updateItemsSelection();
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onSavePreset()
|
||||
{
|
||||
LLFloaterReg::hideInstance("delete_pref_preset", PRESETS_CAMERA);
|
||||
LLFloaterReg::hideInstance("load_pref_preset", PRESETS_CAMERA);
|
||||
|
||||
LLFloaterReg::showInstance("save_camera_preset");
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onCustomPresetSelected()
|
||||
{
|
||||
std::string selected_preset = mPresetCombo->getSelectedItemLabel();
|
||||
if (getString("inactive_combo_text") != selected_preset)
|
||||
{
|
||||
switchToPreset(selected_preset);
|
||||
}
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Phototools support
|
||||
void LLFloaterCamera::switchViews(ECameraControlMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case CAMERA_CTRL_MODE_PRESETS:
|
||||
getChildView("preset_views_list")->setVisible(TRUE);
|
||||
getChildView("camera_modes_list")->setVisible(FALSE);
|
||||
getChildView("zoom")->setVisible(FALSE);
|
||||
getChild<LLButton>("presets_btn")->setToggleState(TRUE);
|
||||
getChild<LLButton>("avatarview_btn")->setToggleState(FALSE);
|
||||
getChild<LLButton>("pan_btn")->setToggleState(FALSE);
|
||||
break;
|
||||
case CAMERA_CTRL_MODE_MODES:
|
||||
getChildView("preset_views_list")->setVisible(FALSE);
|
||||
getChildView("camera_modes_list")->setVisible(TRUE);
|
||||
getChildView("zoom")->setVisible(FALSE);
|
||||
getChild<LLButton>("presets_btn")->setToggleState(FALSE);
|
||||
getChild<LLButton>("avatarview_btn")->setToggleState(TRUE);
|
||||
getChild<LLButton>("pan_btn")->setToggleState(FALSE);
|
||||
break;
|
||||
case CAMERA_CTRL_MODE_PAN:
|
||||
getChildView("preset_views_list")->setVisible(FALSE);
|
||||
getChildView("camera_modes_list")->setVisible(FALSE);
|
||||
getChildView("zoom")->setVisible(TRUE);
|
||||
getChild<LLButton>("presets_btn")->setToggleState(FALSE);
|
||||
getChild<LLButton>("avatarview_btn")->setToggleState(FALSE);
|
||||
getChild<LLButton>("pan_btn")->setToggleState(TRUE);
|
||||
break;
|
||||
default:
|
||||
LL_WARNS() << "Tried to switch to unsupported mode: " << mode << LL_ENDL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
|
|
|||
|
|
@ -36,13 +36,14 @@ class LLJoystickCameraRotate;
|
|||
class LLJoystickCameraTrack;
|
||||
class LLFloaterReg;
|
||||
class LLPanelCameraZoom;
|
||||
class LLComboBox;
|
||||
|
||||
enum ECameraControlMode
|
||||
{
|
||||
CAMERA_CTRL_MODE_MODES,
|
||||
CAMERA_CTRL_MODE_PAN,
|
||||
CAMERA_CTRL_MODE_FREE_CAMERA,
|
||||
CAMERA_CTRL_MODE_PRESETS
|
||||
CAMERA_CTRL_MODE_PRESETS,
|
||||
CAMERA_CTRL_MODE_MODES // <FS:Ansariel> Phototools support
|
||||
};
|
||||
|
||||
class LLFloaterCamera : public LLFloater
|
||||
|
|
@ -50,7 +51,6 @@ class LLFloaterCamera : public LLFloater
|
|||
friend class LLFloaterReg;
|
||||
|
||||
public:
|
||||
|
||||
/* whether in free camera mode */
|
||||
static bool inFreeCameraMode();
|
||||
/* callback for camera items selection changing */
|
||||
|
|
@ -77,12 +77,15 @@ public:
|
|||
virtual void onOpen(const LLSD& key);
|
||||
virtual void onClose(bool app_quitting);
|
||||
|
||||
void onSavePreset();
|
||||
void onCustomPresetSelected();
|
||||
|
||||
void populatePresetCombo();
|
||||
|
||||
LLJoystickCameraRotate* mRotate;
|
||||
LLPanelCameraZoom* mZoom;
|
||||
LLJoystickCameraTrack* mTrack;
|
||||
|
||||
void setCameraFloaterTransparencyMode(const LLSD &data); // <FS:PP> FIRE-5583, FIRE-5220: Option to show Camera Controls always opaque
|
||||
|
||||
private:
|
||||
|
||||
LLFloaterCamera(const LLSD& val);
|
||||
|
|
@ -95,6 +98,10 @@ private:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
F32 getCurrentTransparency();
|
||||
|
||||
void onViewButtonClick(const LLSD& user_data);
|
||||
|
||||
ECameraControlMode determineMode();
|
||||
|
||||
/* resets to the previous mode */
|
||||
|
|
@ -112,26 +119,24 @@ private:
|
|||
/* update camera modes items selection and camera preset items selection according to the currently selected preset */
|
||||
void updateItemsSelection();
|
||||
|
||||
void onClickBtn(ECameraControlMode mode);
|
||||
void assignButton2Mode(ECameraControlMode mode, const std::string& button_name);
|
||||
|
||||
// fills flatlist with items from given panel
|
||||
void fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel);
|
||||
|
||||
void handleAvatarEditingAppearance(bool editing);
|
||||
|
||||
// <FS:Ansariel> Phototools support
|
||||
void switchViews(ECameraControlMode mode);
|
||||
|
||||
// set to true when free camera mode is selected in modes list
|
||||
// remains true until preset camera mode is chosen, or pan button is clicked, or escape pressed
|
||||
static bool sFreeCamera;
|
||||
static bool sAppearanceEditing;
|
||||
BOOL mClosed;
|
||||
|
||||
void setModeTitle(const ECameraControlMode mode);
|
||||
|
||||
bool mUseFlatUI; // <AW: Flat cam floater>
|
||||
ECameraControlMode mPrevMode;
|
||||
ECameraControlMode mCurrMode;
|
||||
std::map<ECameraControlMode, LLButton*> mMode2Button;
|
||||
|
||||
LLComboBox* mPresetCombo;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,145 @@
|
|||
/**
|
||||
* @file llfloatercamerapresets.cpp
|
||||
*
|
||||
* $LicenseInfo:firstyear=2019&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2019, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llfloatercamerapresets.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
LLFloaterCameraPresets::LLFloaterCameraPresets(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
{}
|
||||
|
||||
LLFloaterCameraPresets::~LLFloaterCameraPresets()
|
||||
{}
|
||||
|
||||
BOOL LLFloaterCameraPresets::postBuild()
|
||||
{
|
||||
mPresetList = getChild<LLFlatListView>("preset_list");
|
||||
|
||||
LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCameraPresets::populateList, this));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
void LLFloaterCameraPresets::onOpen(const LLSD& key)
|
||||
{
|
||||
populateList();
|
||||
}
|
||||
|
||||
void LLFloaterCameraPresets::populateList()
|
||||
{
|
||||
mPresetList->clear();
|
||||
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
std::list<std::string> preset_names;
|
||||
|
||||
presetsMgr->loadPresetNamesFromDir(PRESETS_CAMERA, preset_names, DEFAULT_BOTTOM);
|
||||
|
||||
for (std::list<std::string>::const_iterator it = preset_names.begin(); it != preset_names.end(); ++it)
|
||||
{
|
||||
const std::string& name = *it;
|
||||
bool is_default = presetsMgr->isDefaultCameraPreset(name);
|
||||
LLCameraPresetFlatItem* item = new LLCameraPresetFlatItem(name, is_default);
|
||||
item->postBuild();
|
||||
mPresetList->addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
LLCameraPresetFlatItem::LLCameraPresetFlatItem(const std::string &preset_name, bool is_default)
|
||||
: LLPanel(),
|
||||
mPresetName(preset_name),
|
||||
mIsDefaultPrest(is_default)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("CameraPresets.Delete", boost::bind(&LLCameraPresetFlatItem::onDeleteBtnClick, this));
|
||||
mCommitCallbackRegistrar.add("CameraPresets.Reset", boost::bind(&LLCameraPresetFlatItem::onResetBtnClick, this));
|
||||
buildFromFile("panel_camera_preset_item.xml");
|
||||
}
|
||||
|
||||
LLCameraPresetFlatItem::~LLCameraPresetFlatItem()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL LLCameraPresetFlatItem::postBuild()
|
||||
{
|
||||
mDeleteBtn = getChild<LLButton>("delete_btn");
|
||||
mDeleteBtn->setVisible(false);
|
||||
|
||||
mResetBtn = getChild<LLButton>("reset_btn");
|
||||
mResetBtn->setVisible(false);
|
||||
|
||||
LLStyle::Params style;
|
||||
LLTextBox* name_text = getChild<LLTextBox>("preset_name");
|
||||
LLFontDescriptor new_desc(name_text->getFont()->getFontDesc());
|
||||
new_desc.setStyle(mIsDefaultPrest ? LLFontGL::ITALIC : LLFontGL::NORMAL);
|
||||
LLFontGL* new_font = LLFontGL::getFont(new_desc);
|
||||
style.font = new_font;
|
||||
name_text->setText(mPresetName, style);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLCameraPresetFlatItem::onMouseEnter(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mDeleteBtn->setVisible(!mIsDefaultPrest);
|
||||
mResetBtn->setVisible(mIsDefaultPrest);
|
||||
getChildView("hovered_icon")->setVisible(true);
|
||||
LLPanel::onMouseEnter(x, y, mask);
|
||||
}
|
||||
|
||||
void LLCameraPresetFlatItem::onMouseLeave(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mDeleteBtn->setVisible(false);
|
||||
mResetBtn->setVisible(false);
|
||||
getChildView("hovered_icon")->setVisible(false);
|
||||
LLPanel::onMouseLeave(x, y, mask);
|
||||
}
|
||||
|
||||
void LLCameraPresetFlatItem::setValue(const LLSD& value)
|
||||
{
|
||||
if (!value.isMap()) return;;
|
||||
if (!value.has("selected")) return;
|
||||
getChildView("selected_icon")->setVisible(value["selected"]);
|
||||
}
|
||||
|
||||
void LLCameraPresetFlatItem::onDeleteBtnClick()
|
||||
{
|
||||
if (!LLPresetsManager::getInstance()->deletePreset(PRESETS_CAMERA, mPresetName))
|
||||
{
|
||||
LLSD args;
|
||||
args["NAME"] = mPresetName;
|
||||
LLNotificationsUtil::add("PresetNotDeleted", args);
|
||||
}
|
||||
else if (gSavedSettings.getString("PresetCameraActive") == mPresetName)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
}
|
||||
}
|
||||
|
||||
void LLCameraPresetFlatItem::onResetBtnClick()
|
||||
{
|
||||
LLPresetsManager::getInstance()->resetCameraPreset(mPresetName);
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
/**
|
||||
* @file llfloatercamerapresets.h
|
||||
*
|
||||
* $LicenseInfo:firstyear=2019&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2019, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
#ifndef LLFLOATERCAMERAPRESETS_H
|
||||
#define LLFLOATERCAMERAPRESETS_H
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "llflatlistview.h"
|
||||
|
||||
class LLFloaterReg;
|
||||
|
||||
class LLFloaterCameraPresets : public LLFloater
|
||||
{
|
||||
friend class LLFloaterReg;
|
||||
|
||||
virtual BOOL postBuild();
|
||||
virtual void onOpen(const LLSD& key);
|
||||
|
||||
void populateList();
|
||||
|
||||
private:
|
||||
LLFloaterCameraPresets(const LLSD& key);
|
||||
~LLFloaterCameraPresets();
|
||||
|
||||
LLFlatListView* mPresetList;
|
||||
};
|
||||
|
||||
class LLCameraPresetFlatItem : public LLPanel
|
||||
{
|
||||
public:
|
||||
LLCameraPresetFlatItem(const std::string &preset_name, bool is_default);
|
||||
virtual ~LLCameraPresetFlatItem();
|
||||
|
||||
void setValue(const LLSD& value);
|
||||
|
||||
virtual BOOL postBuild();
|
||||
virtual void onMouseEnter(S32 x, S32 y, MASK mask);
|
||||
virtual void onMouseLeave(S32 x, S32 y, MASK mask);
|
||||
|
||||
private:
|
||||
void onDeleteBtnClick();
|
||||
void onResetBtnClick();
|
||||
|
||||
LLButton* mDeleteBtn;
|
||||
LLButton* mResetBtn;
|
||||
|
||||
std::string mPresetName;
|
||||
bool mIsDefaultPrest;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -60,13 +60,15 @@ void LLFloaterDeletePrefPreset::onOpen(const LLSD& key)
|
|||
{
|
||||
mSubdirectory = key.asString();
|
||||
std::string floater_title = getString(std::string("title_") + mSubdirectory);
|
||||
|
||||
setTitle(floater_title);
|
||||
|
||||
LLComboBox* combo = getChild<LLComboBox>("preset_combo");
|
||||
|
||||
EDefaultOptions option = DEFAULT_HIDE;
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
bool action;
|
||||
action = LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
|
||||
LLButton* delete_btn = getChild<LLButton>("delete");
|
||||
delete_btn->setEnabled(action);
|
||||
}
|
||||
|
||||
void LLFloaterDeletePrefPreset::onBtnDelete()
|
||||
|
|
@ -80,6 +82,13 @@ void LLFloaterDeletePrefPreset::onBtnDelete()
|
|||
args["NAME"] = name;
|
||||
LLNotificationsUtil::add("PresetNotDeleted", args);
|
||||
}
|
||||
else if (mSubdirectory == PRESETS_CAMERA)
|
||||
{
|
||||
if (gSavedSettings.getString("PresetCameraActive") == name)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
}
|
||||
}
|
||||
|
||||
closeFloater();
|
||||
}
|
||||
|
|
@ -87,12 +96,10 @@ void LLFloaterDeletePrefPreset::onBtnDelete()
|
|||
void LLFloaterDeletePrefPreset::onPresetsListChange()
|
||||
{
|
||||
LLComboBox* combo = getChild<LLComboBox>("preset_combo");
|
||||
LLButton* delete_btn = getChild<LLButton>("delete");
|
||||
|
||||
EDefaultOptions option = DEFAULT_HIDE;
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
|
||||
delete_btn->setEnabled(0 != combo->getItemCount());
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
}
|
||||
|
||||
void LLFloaterDeletePrefPreset::onBtnCancel()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ LLFloaterLoadPrefPreset::LLFloaterLoadPrefPreset(const LLSD &key)
|
|||
|
||||
// virtual
|
||||
BOOL LLFloaterLoadPrefPreset::postBuild()
|
||||
{ LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
{
|
||||
LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (preferences)
|
||||
{
|
||||
preferences->addDependentFloater(this);
|
||||
|
|
|
|||
|
|
@ -1114,7 +1114,7 @@ void LLFloaterPreference::cancel()
|
|||
// hide spellchecker settings folder
|
||||
LLFloaterReg::hideInstance("prefs_spellchecker");
|
||||
|
||||
// hide advancede floater
|
||||
// hide advanced graphics floater
|
||||
LLFloaterReg::hideInstance("prefs_graphics_advanced");
|
||||
|
||||
// reverts any changes to current skin
|
||||
|
|
@ -1299,7 +1299,8 @@ void LLFloaterPreference::onOpen(const LLSD& key)
|
|||
saveSettings();
|
||||
|
||||
// Make sure there is a default preference file
|
||||
LLPresetsManager::getInstance()->createMissingDefault();
|
||||
LLPresetsManager::getInstance()->createMissingDefault(PRESETS_CAMERA);
|
||||
LLPresetsManager::getInstance()->createMissingDefault(PRESETS_GRAPHIC);
|
||||
|
||||
// <FS:Ansariel> Fix resetting graphics preset on cancel
|
||||
saveGraphicsPreset(gSavedSettings.getString("PresetGraphicActive"));
|
||||
|
|
@ -1311,13 +1312,14 @@ void LLFloaterPreference::onOpen(const LLSD& key)
|
|||
//LLButton* save_btn = findChild<LLButton>("PrefSaveButton");
|
||||
//LLButton* delete_btn = findChild<LLButton>("PrefDeleteButton");
|
||||
//LLButton* exceptions_btn = findChild<LLButton>("RenderExceptionsButton");
|
||||
|
||||
//load_btn->setEnabled(started);
|
||||
//save_btn->setEnabled(started);
|
||||
//delete_btn->setEnabled(started);
|
||||
//exceptions_btn->setEnabled(started);
|
||||
//if (load_btn && save_btn && delete_btn && exceptions_btn)
|
||||
//{
|
||||
// load_btn->setEnabled(started);
|
||||
// save_btn->setEnabled(started);
|
||||
// delete_btn->setEnabled(started);
|
||||
// exceptions_btn->setEnabled(started);
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
|
||||
collectSearchableItems();
|
||||
if (!mFilterEdit->getText().empty())
|
||||
{
|
||||
|
|
@ -4200,20 +4202,17 @@ void LLPanelPreference::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl)
|
|||
|
||||
void LLPanelPreference::deletePreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::showInstance("delete_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("delete_pref_preset", user_data.asString());
|
||||
}
|
||||
|
||||
void LLPanelPreference::savePreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::showInstance("save_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("save_pref_preset", user_data.asString());
|
||||
}
|
||||
|
||||
void LLPanelPreference::loadPreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::showInstance("load_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("load_pref_preset", user_data.asString());
|
||||
}
|
||||
|
||||
void LLPanelPreference::setHardwareDefaults()
|
||||
|
|
@ -4388,7 +4387,7 @@ BOOL LLPanelPreferenceGraphics::postBuild()
|
|||
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
presetsMgr->setPresetListChangeCallback(boost::bind(&LLPanelPreferenceGraphics::onPresetsListChange, this));
|
||||
presetsMgr->createMissingDefault(); // a no-op after the first time, but that's ok
|
||||
presetsMgr->createMissingDefault(PRESETS_GRAPHIC); // a no-op after the first time, but that's ok
|
||||
|
||||
|
||||
// <FS:CR> Hide this until we have fullscreen mode functional on OSX again
|
||||
|
|
|
|||
|
|
@ -0,0 +1,99 @@
|
|||
/**
|
||||
* @file llfloaterpreferenceviewadvanced.cpp
|
||||
* @brief floater for adjusting camera position
|
||||
*
|
||||
* $LicenseInfo:firstyear=2018&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2018, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llfloaterpreferenceviewadvanced.h"
|
||||
#include "llfloater.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llspinctrl.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llpresetsmanager.h"
|
||||
|
||||
|
||||
LLFloaterPreferenceViewAdvanced::LLFloaterPreferenceViewAdvanced(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("CommitSettings", boost::bind(&LLFloaterPreferenceViewAdvanced::onCommitSettings, this));
|
||||
mCommitCallbackRegistrar.add("CameraPresets.Save", boost::bind(&LLFloaterPreferenceViewAdvanced::onSavePreset, this)); // <FS:Ansariel> Improved camera floater
|
||||
}
|
||||
|
||||
LLFloaterPreferenceViewAdvanced::~LLFloaterPreferenceViewAdvanced()
|
||||
{}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::updateCameraControl(const LLVector3& vector)
|
||||
{
|
||||
getChild<LLSpinCtrl>("camera_x")->setValue(vector[VX]);
|
||||
getChild<LLSpinCtrl>("camera_y")->setValue(vector[VY]);
|
||||
getChild<LLSpinCtrl>("camera_z")->setValue(vector[VZ]);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::updateFocusControl(const LLVector3d& vector3d)
|
||||
{
|
||||
getChild<LLSpinCtrl>("focus_x")->setValue(vector3d[VX]);
|
||||
getChild<LLSpinCtrl>("focus_y")->setValue(vector3d[VY]);
|
||||
getChild<LLSpinCtrl>("focus_z")->setValue(vector3d[VZ]);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::draw()
|
||||
{
|
||||
updateCameraControl(gAgentCamera.getCameraOffsetInitial());
|
||||
updateFocusControl(gAgentCamera.getFocusOffsetInitial());
|
||||
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::onCommitSettings()
|
||||
{
|
||||
LLVector3 vector;
|
||||
LLVector3d vector3d;
|
||||
|
||||
vector.mV[VX] = (F32)getChild<LLUICtrl>("camera_x")->getValue().asReal();
|
||||
vector.mV[VY] = (F32)getChild<LLUICtrl>("camera_y")->getValue().asReal();
|
||||
vector.mV[VZ] = (F32)getChild<LLUICtrl>("camera_z")->getValue().asReal();
|
||||
gSavedSettings.setVector3("CameraOffsetRearView", vector);
|
||||
|
||||
vector3d.mdV[VX] = (F32)getChild<LLUICtrl>("focus_x")->getValue().asReal();
|
||||
vector3d.mdV[VY] = (F32)getChild<LLUICtrl>("focus_y")->getValue().asReal();
|
||||
vector3d.mdV[VZ] = (F32)getChild<LLUICtrl>("focus_z")->getValue().asReal();
|
||||
gSavedSettings.setVector3d("FocusOffsetRearView", vector3d);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Improved camera floater
|
||||
void LLFloaterPreferenceViewAdvanced::onSavePreset()
|
||||
{
|
||||
LLFloaterReg::hideInstance("delete_pref_preset", PRESETS_CAMERA);
|
||||
LLFloaterReg::hideInstance("load_pref_preset", PRESETS_CAMERA);
|
||||
|
||||
LLSD key;
|
||||
key["subdirectory"] = PRESETS_CAMERA;
|
||||
std::string current_preset = gSavedSettings.getString("PresetCameraActive");
|
||||
bool is_custom_preset = current_preset != "" && !LLPresetsManager::getInstance()->isDefaultCameraPreset(current_preset);
|
||||
key["index"] = is_custom_preset ? 1 : 0;
|
||||
LLFloaterReg::showInstance("save_pref_preset", key);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/**
|
||||
* @file llfloaterpreferenceviewadvanced.h
|
||||
* @brief floater for adjusting camera position
|
||||
*
|
||||
* $LicenseInfo:firstyear=2018&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2018, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
#define LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
|
||||
#include "llcontrol.h"
|
||||
#include "llfloater.h"
|
||||
|
||||
class LLFloaterPreferenceViewAdvanced
|
||||
: public LLFloater
|
||||
{
|
||||
friend class LLFloaterReg;
|
||||
|
||||
public:
|
||||
LLFloaterPreferenceViewAdvanced(const LLSD& key);
|
||||
virtual void draw();
|
||||
|
||||
void onCommitSettings();
|
||||
void updateCameraControl(const LLVector3& vector);
|
||||
void updateFocusControl(const LLVector3d& vector3d);
|
||||
void onSavePreset(); // <FS:Ansariel> Improved camera floater
|
||||
|
||||
private:
|
||||
virtual ~LLFloaterPreferenceViewAdvanced();
|
||||
};
|
||||
|
||||
#endif //LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
/**
|
||||
* @file llfloatersavecamerapreset.cpp
|
||||
* @brief Floater to save a camera preset
|
||||
*
|
||||
* $LicenseInfo:firstyear=2020&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2020, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llfloatersavecamerapreset.h"
|
||||
|
||||
#include "llagentcamera.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llfloaterpreference.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "lllineeditor.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "llradiogroup.h"
|
||||
#include "lltrans.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
LLFloaterSaveCameraPreset::LLFloaterSaveCameraPreset(const LLSD &key)
|
||||
: LLModalDialog(key)
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLFloaterSaveCameraPreset::postBuild()
|
||||
{
|
||||
mPresetCombo = getChild<LLComboBox>("preset_combo");
|
||||
|
||||
mNameEditor = getChild<LLLineEditor>("preset_txt_editor");
|
||||
mNameEditor->setKeystrokeCallback(boost::bind(&LLFloaterSaveCameraPreset::onPresetNameEdited, this), NULL);
|
||||
|
||||
mSaveButton = getChild<LLButton>("save");
|
||||
mSaveButton->setCommitCallback(boost::bind(&LLFloaterSaveCameraPreset::onBtnSave, this));
|
||||
|
||||
mSaveRadioGroup = getChild<LLRadioGroup>("radio_save_preset");
|
||||
mSaveRadioGroup->setCommitCallback(boost::bind(&LLFloaterSaveCameraPreset::onSwitchSaveReplace, this));
|
||||
|
||||
getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterSaveCameraPreset::onBtnCancel, this));
|
||||
|
||||
LLPresetsManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterSaveCameraPreset::onPresetsListChange, this));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onPresetNameEdited()
|
||||
{
|
||||
if (mSaveRadioGroup->getSelectedIndex() == 0)
|
||||
{
|
||||
// Disable saving a preset having empty name.
|
||||
std::string name = mNameEditor->getValue();
|
||||
mSaveButton->setEnabled(!name.empty());
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onOpen(const LLSD& key)
|
||||
{
|
||||
LLModalDialog::onOpen(key);
|
||||
S32 index = 0;
|
||||
if (key.has("index"))
|
||||
{
|
||||
index = key["index"].asInteger();
|
||||
}
|
||||
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_CAMERA, mPresetCombo, DEFAULT_BOTTOM);
|
||||
|
||||
mSaveRadioGroup->setSelectedIndex(index);
|
||||
onPresetNameEdited();
|
||||
onSwitchSaveReplace();
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onBtnSave()
|
||||
{
|
||||
bool is_saving_new = mSaveRadioGroup->getSelectedIndex() == 0;
|
||||
std::string name = is_saving_new ? mNameEditor->getText() : mPresetCombo->getSimple();
|
||||
|
||||
if ((name == LLTrans::getString(PRESETS_DEFAULT)) || (name == PRESETS_DEFAULT))
|
||||
{
|
||||
LLNotificationsUtil::add("DefaultPresetNotSaved");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gAgentCamera.isJoystickCameraUsed())
|
||||
{
|
||||
gSavedSettings.setVector3("CameraOffsetRearView", gAgentCamera.getCurrentCameraOffset());
|
||||
gSavedSettings.setVector3d("FocusOffsetRearView", gAgentCamera.getCurrentFocusOffset());
|
||||
}
|
||||
if (is_saving_new)
|
||||
{
|
||||
std::list<std::string> preset_names;
|
||||
LLPresetsManager::getInstance()->loadPresetNamesFromDir(PRESETS_CAMERA, preset_names, DEFAULT_HIDE);
|
||||
if (std::find(preset_names.begin(), preset_names.end(), name) != preset_names.end())
|
||||
{
|
||||
LLSD args;
|
||||
args["NAME"] = name;
|
||||
LLNotificationsUtil::add("PresetAlreadyExists", args);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!LLPresetsManager::getInstance()->savePreset(PRESETS_CAMERA, name))
|
||||
{
|
||||
LLSD args;
|
||||
args["NAME"] = name;
|
||||
LLNotificationsUtil::add("PresetNotSaved", args);
|
||||
}
|
||||
}
|
||||
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onPresetsListChange()
|
||||
{
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_CAMERA, mPresetCombo, DEFAULT_BOTTOM);
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onBtnCancel()
|
||||
{
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterSaveCameraPreset::onSwitchSaveReplace()
|
||||
{
|
||||
bool is_saving_new = mSaveRadioGroup->getSelectedIndex() == 0;
|
||||
std::string label = is_saving_new ? getString("btn_label_save") : getString("btn_label_replace");
|
||||
mSaveButton->setLabel(label);
|
||||
mNameEditor->setEnabled(is_saving_new);
|
||||
mPresetCombo->setEnabled(!is_saving_new);
|
||||
if (is_saving_new)
|
||||
{
|
||||
onPresetNameEdited();
|
||||
}
|
||||
else
|
||||
{
|
||||
mSaveButton->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
/**
|
||||
* @file llfloatersavecamerapreset.h
|
||||
* @brief Floater to save a camera preset
|
||||
|
||||
*
|
||||
* $LicenseInfo:firstyear=2020&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2020, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLFLOATERSAVECAMERAPRESET_H
|
||||
#define LL_LLFLOATERSAVECAMERAPRESET_H
|
||||
|
||||
#include "llmodaldialog.h"
|
||||
|
||||
class LLComboBox;
|
||||
class LLRadioGroup;
|
||||
class LLLineEditor;
|
||||
|
||||
class LLFloaterSaveCameraPreset : public LLModalDialog
|
||||
{
|
||||
|
||||
public:
|
||||
LLFloaterSaveCameraPreset(const LLSD &key);
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
void onBtnSave();
|
||||
void onBtnCancel();
|
||||
void onSwitchSaveReplace();
|
||||
|
||||
private:
|
||||
LLRadioGroup* mSaveRadioGroup;
|
||||
LLLineEditor* mNameEditor;
|
||||
LLComboBox* mPresetCombo;
|
||||
LLButton* mSaveButton;
|
||||
|
||||
void onPresetsListChange();
|
||||
void onPresetNameEdited();
|
||||
};
|
||||
|
||||
#endif // LL_LLFLOATERSAVECAMERAPRESET_H
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* @file llfloatersaveprefpreset.cpp
|
||||
* @brief Floater to save a graphics / camera preset
|
||||
* @brief Floater to save a graphics preset
|
||||
*
|
||||
* $LicenseInfo:firstyear=2014&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
|
|
@ -37,24 +37,27 @@
|
|||
#include "lltrans.h"
|
||||
|
||||
LLFloaterSavePrefPreset::LLFloaterSavePrefPreset(const LLSD &key)
|
||||
: LLFloater(key)
|
||||
: LLFloater(key)
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLFloaterSavePrefPreset::postBuild()
|
||||
{ LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
{
|
||||
LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (preferences)
|
||||
{
|
||||
preferences->addDependentFloater(this);
|
||||
}
|
||||
|
||||
getChild<LLComboBox>("preset_combo")->setTextEntryCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetNameEdited, this));
|
||||
getChild<LLComboBox>("preset_combo")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetNameEdited, this));
|
||||
getChild<LLButton>("save")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onBtnSave, this));
|
||||
|
||||
getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onBtnCancel, this));
|
||||
|
||||
LLPresetsManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetsListChange, this));
|
||||
|
||||
|
||||
mSaveButton = getChild<LLButton>("save");
|
||||
mPresetCombo = getChild<LLComboBox>("preset_combo");
|
||||
|
||||
|
|
@ -73,10 +76,6 @@ void LLFloaterSavePrefPreset::onOpen(const LLSD& key)
|
|||
{
|
||||
mSubdirectory = key.asString();
|
||||
|
||||
std::string floater_title = getString(std::string("title_") + mSubdirectory);
|
||||
|
||||
setTitle(floater_title);
|
||||
|
||||
EDefaultOptions option = DEFAULT_HIDE;
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, mPresetCombo, option);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* @file llfloatersaveprefpreset.h
|
||||
* @brief Floater to save a graphics / camera preset
|
||||
* @brief Floater to save a graphics preset
|
||||
|
||||
*
|
||||
* $LicenseInfo:firstyear=2014&license=viewerlgpl$
|
||||
|
|
@ -45,6 +45,7 @@ public:
|
|||
void onBtnCancel();
|
||||
|
||||
private:
|
||||
|
||||
LLComboBox* mPresetCombo;
|
||||
LLButton* mSaveButton;
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include "llui.h"
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llviewercamera.h"
|
||||
#include "llviewertexture.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "llviewerwindow.h"
|
||||
|
|
@ -54,6 +55,8 @@ static LLDefaultChildRegistry::Register<LLJoystickCameraTrack> r5("joystick_trac
|
|||
const F32 NUDGE_TIME = 0.25f; // in seconds
|
||||
const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed
|
||||
|
||||
const S32 CENTER_DOT_RADIUS = 7;
|
||||
|
||||
//
|
||||
// Public Methods
|
||||
//
|
||||
|
|
@ -138,9 +141,25 @@ bool LLJoystick::pointInCircle(S32 x, S32 y) const
|
|||
//center is x and y coordinates of center of joystick circle, and also its radius
|
||||
int center = this->getLocalRect().getHeight()/2;
|
||||
bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center;
|
||||
|
||||
return in_circle;
|
||||
}
|
||||
|
||||
bool LLJoystick::pointInCenterDot(S32 x, S32 y, S32 radius) const
|
||||
{
|
||||
if (this->getLocalRect().getHeight() != this->getLocalRect().getWidth())
|
||||
{
|
||||
LL_WARNS() << "Joystick shape is not square" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
S32 center = this->getLocalRect().getHeight() / 2;
|
||||
|
||||
bool in_center_circle = (x - center) * (x - center) + (y - center) * (y - center) <= radius * radius;
|
||||
|
||||
return in_center_circle;
|
||||
}
|
||||
|
||||
BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
//LL_INFOS() << "joystick mouse down " << x << ", " << y << LL_ENDL;
|
||||
|
|
@ -403,8 +422,11 @@ LLJoystickCameraRotate::LLJoystickCameraRotate(const LLJoystickCameraRotate::Par
|
|||
mInLeft( FALSE ),
|
||||
mInTop( FALSE ),
|
||||
mInRight( FALSE ),
|
||||
mInBottom( FALSE )
|
||||
{ }
|
||||
mInBottom( FALSE ),
|
||||
mInCenter( FALSE )
|
||||
{
|
||||
mCenterImageName = "Cam_Rotate_Center";
|
||||
}
|
||||
|
||||
|
||||
void LLJoystickCameraRotate::updateSlop()
|
||||
|
|
@ -434,7 +456,16 @@ BOOL LLJoystickCameraRotate::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
S32 dx = x - horiz_center;
|
||||
S32 dy = y - vert_center;
|
||||
|
||||
if (dy > dx && dy > -dx)
|
||||
if (pointInCenterDot(x, y, CENTER_DOT_RADIUS))
|
||||
{
|
||||
mInitialOffset.mX = 0;
|
||||
mInitialOffset.mY = 0;
|
||||
mInitialQuadrant = JQ_ORIGIN;
|
||||
mInCenter = TRUE;
|
||||
|
||||
resetJoystickCamera();
|
||||
}
|
||||
else if (dy > dx && dy > -dx)
|
||||
{
|
||||
// top
|
||||
mInitialOffset.mX = 0;
|
||||
|
|
@ -469,9 +500,20 @@ BOOL LLJoystickCameraRotate::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
BOOL LLJoystickCameraRotate::handleMouseUp(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
gAgent.setMovementLocked(FALSE);
|
||||
mInCenter = FALSE;
|
||||
return LLJoystick::handleMouseUp(x, y, mask);
|
||||
}
|
||||
|
||||
BOOL LLJoystickCameraRotate::handleHover(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
if (!pointInCenterDot(x, y, CENTER_DOT_RADIUS))
|
||||
{
|
||||
mInCenter = FALSE;
|
||||
}
|
||||
|
||||
return LLJoystick::handleHover(x, y, mask);
|
||||
}
|
||||
|
||||
void LLJoystickCameraRotate::onHeldDown()
|
||||
{
|
||||
updateSlop();
|
||||
|
|
@ -504,6 +546,11 @@ void LLJoystickCameraRotate::onHeldDown()
|
|||
}
|
||||
}
|
||||
|
||||
void LLJoystickCameraRotate::resetJoystickCamera()
|
||||
{
|
||||
gAgentCamera.resetCameraOrbit();
|
||||
}
|
||||
|
||||
F32 LLJoystickCameraRotate::getOrbitRate()
|
||||
{
|
||||
F32 time = getElapsedHeldDownTime();
|
||||
|
|
@ -536,24 +583,31 @@ void LLJoystickCameraRotate::draw()
|
|||
getImageUnselected()->draw( getLocalRect() );
|
||||
LLPointer<LLUIImage> image = getImageSelected();
|
||||
|
||||
if( mInTop )
|
||||
if (mInCenter)
|
||||
{
|
||||
drawRotatedImage( getImageSelected(), 0 );
|
||||
drawRotatedImage(LLUI::getUIImage(mCenterImageName), 0);
|
||||
}
|
||||
|
||||
if( mInRight )
|
||||
else
|
||||
{
|
||||
drawRotatedImage( getImageSelected(), 1 );
|
||||
}
|
||||
if (mInTop)
|
||||
{
|
||||
drawRotatedImage(getImageSelected(), 0);
|
||||
}
|
||||
|
||||
if( mInBottom )
|
||||
{
|
||||
drawRotatedImage( getImageSelected(), 2 );
|
||||
}
|
||||
if (mInRight)
|
||||
{
|
||||
drawRotatedImage(getImageSelected(), 1);
|
||||
}
|
||||
|
||||
if( mInLeft )
|
||||
{
|
||||
drawRotatedImage( getImageSelected(), 3 );
|
||||
if (mInBottom)
|
||||
{
|
||||
drawRotatedImage(getImageSelected(), 2);
|
||||
}
|
||||
|
||||
if (mInLeft)
|
||||
{
|
||||
drawRotatedImage(getImageSelected(), 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -643,7 +697,9 @@ LLJoystickCameraTrack::Params::Params()
|
|||
|
||||
LLJoystickCameraTrack::LLJoystickCameraTrack(const LLJoystickCameraTrack::Params& p)
|
||||
: LLJoystickCameraRotate(p)
|
||||
{}
|
||||
{
|
||||
mCenterImageName = "Cam_Tracking_Center";
|
||||
}
|
||||
|
||||
|
||||
void LLJoystickCameraTrack::onHeldDown()
|
||||
|
|
@ -676,3 +732,8 @@ void LLJoystickCameraTrack::onHeldDown()
|
|||
gAgentCamera.setPanDownKey(getOrbitRate());
|
||||
}
|
||||
}
|
||||
|
||||
void LLJoystickCameraTrack::resetJoystickCamera()
|
||||
{
|
||||
gAgentCamera.resetCameraPan();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,8 @@ public:
|
|||
* Image containing circle is square and this square has adherent points with joystick
|
||||
* circle. Make sure to change method according to shape other than square.
|
||||
*/
|
||||
bool pointInCircle(S32 x, S32 y) const;
|
||||
bool pointInCircle(S32 x, S32 y) const;
|
||||
bool pointInCenterDot(S32 x, S32 y, S32 radius) const;
|
||||
|
||||
static std::string nameFromQuadrant(const EJoystickQuadrant quadrant);
|
||||
static EJoystickQuadrant quadrantFromName(const std::string& name);
|
||||
|
|
@ -147,7 +148,9 @@ public:
|
|||
|
||||
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
virtual void onHeldDown();
|
||||
virtual void resetJoystickCamera();
|
||||
virtual void draw();
|
||||
|
||||
protected:
|
||||
|
|
@ -160,6 +163,9 @@ protected:
|
|||
BOOL mInTop;
|
||||
BOOL mInRight;
|
||||
BOOL mInBottom;
|
||||
BOOL mInCenter;
|
||||
|
||||
std::string mCenterImageName;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -176,6 +182,7 @@ public:
|
|||
|
||||
LLJoystickCameraTrack(const LLJoystickCameraTrack::Params&);
|
||||
virtual void onHeldDown();
|
||||
virtual void resetJoystickCamera();
|
||||
};
|
||||
|
||||
#endif // LL_LLJOYSTICKBUTTON_H
|
||||
|
|
|
|||
|
|
@ -93,7 +93,8 @@ LLFloaterMove::~LLFloaterMove()
|
|||
// virtual
|
||||
BOOL LLFloaterMove::postBuild()
|
||||
{
|
||||
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
|
||||
// <FS:Ansariel> Customizable floater transparency
|
||||
//updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
|
||||
|
||||
// Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
|
||||
|
||||
|
|
@ -534,6 +535,14 @@ void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
|
|||
mModeControlButtonMap[mode]->setToggleState(TRUE);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Customizable floater transparency
|
||||
F32 LLFloaterMove::getCurrentTransparency()
|
||||
{
|
||||
static LLCachedControl<F32> camera_opacity(gSavedSettings, "CameraOpacity");
|
||||
static LLCachedControl<F32> active_floater_transparency(gSavedSettings, "ActiveFloaterTransparency");
|
||||
return llmin(camera_opacity(), active_floater_transparency());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ public:
|
|||
static void sUpdateMovementStatus();
|
||||
// [/RLVa:KB]
|
||||
|
||||
// <FS:Ansariel> Customizable floater transparency
|
||||
/*virtual*/ F32 getCurrentTransparency();
|
||||
|
||||
protected:
|
||||
void turnLeft();
|
||||
void turnRight();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,226 @@
|
|||
/**
|
||||
* @file llpanelpresetscamerapulldown.cpp
|
||||
* @brief A panel showing a quick way to pick camera presets
|
||||
*
|
||||
* $LicenseInfo:firstyear=2017&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2017, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llpanelpresetscamerapulldown.h"
|
||||
|
||||
#include "llviewercontrol.h"
|
||||
#include "llstatusbar.h"
|
||||
|
||||
#include "llbutton.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "llfloatercamera.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llfloaterpreference.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "llsliderctrl.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "lltrans.h"
|
||||
|
||||
/* static */ const F32 LLPanelPresetsCameraPulldown::sAutoCloseFadeStartTimeSec = 2.0f;
|
||||
/* static */ const F32 LLPanelPresetsCameraPulldown::sAutoCloseTotalTimeSec = 3.0f;
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Class LLPanelPresetsCameraPulldown
|
||||
///----------------------------------------------------------------------------
|
||||
|
||||
// Default constructor
|
||||
LLPanelPresetsCameraPulldown::LLPanelPresetsCameraPulldown()
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
|
||||
mCommitCallbackRegistrar.add("Presets.toggleCameraFloater", boost::bind(&LLPanelPresetsCameraPulldown::onViewButtonClick, this, _2));
|
||||
mCommitCallbackRegistrar.add("PresetsCamera.RowClick", boost::bind(&LLPanelPresetsCameraPulldown::onRowClick, this, _2));
|
||||
|
||||
buildFromFile( "panel_presets_camera_pulldown.xml");
|
||||
}
|
||||
|
||||
BOOL LLPanelPresetsCameraPulldown::postBuild()
|
||||
{
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
if (presetsMgr)
|
||||
{
|
||||
// Make sure there is a default preference file
|
||||
presetsMgr->createMissingDefault(PRESETS_CAMERA);
|
||||
|
||||
// <FS:Ansariel> Done in LLPresetsManager ctor
|
||||
//presetsMgr->startWatching(PRESETS_CAMERA);
|
||||
|
||||
presetsMgr->setPresetListChangeCameraCallback(boost::bind(&LLPanelPresetsCameraPulldown::populatePanel, this));
|
||||
}
|
||||
|
||||
populatePanel();
|
||||
|
||||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::populatePanel()
|
||||
{
|
||||
LLPresetsManager::getInstance()->loadPresetNamesFromDir(PRESETS_CAMERA, mPresetNames, DEFAULT_BOTTOM);
|
||||
|
||||
LLScrollListCtrl* scroll = getChild<LLScrollListCtrl>("preset_camera_list");
|
||||
|
||||
if (scroll && mPresetNames.begin() != mPresetNames.end())
|
||||
{
|
||||
scroll->clearRows();
|
||||
|
||||
std::string active_preset = gSavedSettings.getString("PresetCameraActive");
|
||||
if (active_preset == PRESETS_DEFAULT)
|
||||
{
|
||||
active_preset = LLTrans::getString(PRESETS_DEFAULT);
|
||||
}
|
||||
|
||||
for (std::list<std::string>::const_iterator it = mPresetNames.begin(); it != mPresetNames.end(); ++it)
|
||||
{
|
||||
const std::string& name = *it;
|
||||
LL_DEBUGS() << "adding '" << name << "'" << LL_ENDL;
|
||||
|
||||
LLSD row;
|
||||
row["columns"][0]["column"] = "preset_name";
|
||||
row["columns"][0]["value"] = name;
|
||||
|
||||
bool is_selected_preset = false;
|
||||
if (name == active_preset)
|
||||
{
|
||||
row["columns"][1]["column"] = "icon";
|
||||
row["columns"][1]["type"] = "icon";
|
||||
row["columns"][1]["value"] = "Check_Mark";
|
||||
|
||||
is_selected_preset = true;
|
||||
}
|
||||
|
||||
LLScrollListItem* new_item = scroll->addElement(row);
|
||||
new_item->setSelected(is_selected_preset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onMouseEnter(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
LLPanel::onMouseEnter(x,y,mask);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onTopLost()
|
||||
{
|
||||
setVisible(FALSE);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleMouseDown(x,y,mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleRightMouseDown(x, y, mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleDoubleClick(x, y, mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onMouseLeave(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mHoverTimer.start();
|
||||
LLPanel::onMouseLeave(x,y,mask);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onVisibilityChange ( BOOL new_visibility )
|
||||
{
|
||||
if (new_visibility)
|
||||
{
|
||||
mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
|
||||
}
|
||||
else
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::onRowClick(const LLSD& user_data)
|
||||
{
|
||||
LLScrollListCtrl* scroll = getChild<LLScrollListCtrl>("preset_camera_list");
|
||||
|
||||
if (scroll)
|
||||
{
|
||||
LLScrollListItem* item = scroll->getFirstSelected();
|
||||
if (item)
|
||||
{
|
||||
std::string name = item->getColumn(1)->getValue().asString();
|
||||
|
||||
LL_DEBUGS() << "selected '" << name << "'" << LL_ENDL;
|
||||
LLFloaterCamera::switchToPreset(name);
|
||||
|
||||
setVisible(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "none selected" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "no scroll" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::onViewButtonClick(const LLSD& user_data)
|
||||
{
|
||||
// close the minicontrol, we're bringing up the big one
|
||||
setVisible(FALSE);
|
||||
|
||||
LLFloaterReg::toggleInstanceOrBringToFront("camera");
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLPanelPresetsCameraPulldown::draw()
|
||||
{
|
||||
F32 alpha = mHoverTimer.getStarted()
|
||||
? clamp_rescale(mHoverTimer.getElapsedTimeF32(), sAutoCloseFadeStartTimeSec, sAutoCloseTotalTimeSec, 1.f, 0.f)
|
||||
: 1.0f;
|
||||
LLViewDrawContext context(alpha);
|
||||
|
||||
LLPanel::draw();
|
||||
|
||||
if (alpha == 0.f)
|
||||
{
|
||||
setVisible(FALSE);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @file llpanelpresetscamerapulldown.h
|
||||
* @brief A panel showing a quick way to pick camera presets
|
||||
*
|
||||
* $LicenseInfo:firstyear=2017&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2017, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
#define LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llpanel.h"
|
||||
|
||||
class LLFrameTimer;
|
||||
|
||||
class LLPanelPresetsCameraPulldown : public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelPresetsCameraPulldown();
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ void onTopLost();
|
||||
/*virtual*/ void onVisibilityChange ( BOOL new_visibility );
|
||||
/*virtual*/ BOOL postBuild();
|
||||
void populatePanel();
|
||||
|
||||
private:
|
||||
void onViewButtonClick(const LLSD& user_data);
|
||||
void onRowClick(const LLSD& user_data);
|
||||
|
||||
std::list<std::string> mPresetNames;
|
||||
LLFrameTimer mHoverTimer;
|
||||
static const F32 sAutoCloseFadeStartTimeSec;
|
||||
static const F32 sAutoCloseTotalTimeSec;
|
||||
LOG_CLASS(LLPanelPresetsCameraPulldown);
|
||||
};
|
||||
|
||||
#endif // LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
|
|
@ -63,7 +63,7 @@ BOOL LLPanelPresetsPulldown::postBuild()
|
|||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
presetsMgr->setPresetListChangeCallback(boost::bind(&LLPanelPresetsPulldown::populatePanel, this));
|
||||
// Make sure there is a default preference file
|
||||
presetsMgr->createMissingDefault();
|
||||
presetsMgr->createMissingDefault(PRESETS_GRAPHIC);
|
||||
|
||||
populatePanel();
|
||||
|
||||
|
|
@ -72,8 +72,7 @@ BOOL LLPanelPresetsPulldown::postBuild()
|
|||
|
||||
void LLPanelPresetsPulldown::populatePanel()
|
||||
{
|
||||
std::string presets_dir = LLPresetsManager::getInstance()->getPresetsDir(PRESETS_GRAPHIC);
|
||||
LLPresetsManager::getInstance()->loadPresetNamesFromDir(presets_dir, mPresetNames, DEFAULT_TOP);
|
||||
LLPresetsManager::getInstance()->loadPresetNamesFromDir(PRESETS_GRAPHIC, mPresetNames, DEFAULT_TOP);
|
||||
|
||||
LLScrollListCtrl* scroll = getChild<LLScrollListCtrl>("preset_list");
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
#include "llfloaterpreference.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llfeaturemanager.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llfile.h"
|
||||
#include "quickprefs.h"
|
||||
|
||||
LLPresetsManager::LLPresetsManager()
|
||||
|
|
@ -50,10 +52,20 @@ LLPresetsManager::LLPresetsManager()
|
|||
// This works, because the LLPresetsManager instance is created in the
|
||||
// STATE_WORLD_INIT phase during startup when the status bar is initialized
|
||||
initGraphicPresetControls();
|
||||
|
||||
// <FS:Ansariel> Start watching camera controls as soon as the preset
|
||||
// manager gets initialized
|
||||
startWatching(PRESETS_CAMERA);
|
||||
}
|
||||
|
||||
LLPresetsManager::~LLPresetsManager()
|
||||
{
|
||||
mCameraChangedSignal.disconnect();
|
||||
}
|
||||
|
||||
void LLPresetsManager::triggerChangeCameraSignal()
|
||||
{
|
||||
mPresetListChangeCameraSignal();
|
||||
}
|
||||
|
||||
void LLPresetsManager::triggerChangeSignal()
|
||||
|
|
@ -61,27 +73,74 @@ void LLPresetsManager::triggerChangeSignal()
|
|||
mPresetListChangeSignal();
|
||||
}
|
||||
|
||||
void LLPresetsManager::createMissingDefault()
|
||||
void LLPresetsManager::createMissingDefault(const std::string& subdirectory)
|
||||
{
|
||||
// <FS:Ansariel> FIRE-19810: Make presets global since PresetGraphicActive setting is global as well
|
||||
//if(gDirUtilp->getLindenUserDir().empty())
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, PRESETS_GRAPHIC, PRESETS_DEFAULT + ".xml");
|
||||
std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR, PRESETS_GRAPHIC, PRESETS_DEFAULT + ".xml");
|
||||
|
||||
if (PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
createCameraDefaultPresets();
|
||||
return;
|
||||
}
|
||||
|
||||
//std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR,
|
||||
std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR,
|
||||
subdirectory, PRESETS_DEFAULT + ".xml");
|
||||
// </FS:Ansariel>
|
||||
if (!gDirUtilp->fileExists(default_file))
|
||||
{
|
||||
LL_INFOS() << "No default preset found -- creating one at " << default_file << LL_ENDL;
|
||||
|
||||
// Write current graphic settings as the default
|
||||
savePreset(PRESETS_GRAPHIC, PRESETS_DEFAULT, true);
|
||||
// Write current settings as the default
|
||||
savePreset(subdirectory, PRESETS_DEFAULT, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "default preset exists; no-op" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
void LLPresetsManager::createCameraDefaultPresets()
|
||||
{
|
||||
bool is_default_created = createDefaultCameraPreset(PRESETS_REAR_VIEW);
|
||||
is_default_created |= createDefaultCameraPreset(PRESETS_FRONT_VIEW);
|
||||
is_default_created |= createDefaultCameraPreset(PRESETS_SIDE_VIEW);
|
||||
|
||||
if (is_default_created)
|
||||
{
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPresetsManager::startWatching(const std::string& subdirectory)
|
||||
{
|
||||
if (PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
std::vector<std::string> name_list;
|
||||
getControlNames(name_list);
|
||||
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
if (gSavedSettings.controlExists(ctrl_name))
|
||||
{
|
||||
LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl(ctrl_name);
|
||||
if (cntrl_ptr.isNull())
|
||||
{
|
||||
LL_WARNS("Init") << "Unable to set signal on global setting '" << ctrl_name
|
||||
<< "'" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
mCameraChangedSignal = cntrl_ptr->getCommitSignal()->connect(boost::bind(&settingChanged));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "default preset exists; no-op" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
std::string LLPresetsManager::getPresetsDir(const std::string& subdirectory)
|
||||
|
|
@ -90,21 +149,25 @@ std::string LLPresetsManager::getPresetsDir(const std::string& subdirectory)
|
|||
//std::string presets_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR);
|
||||
std::string presets_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR);
|
||||
// </FS:Ansariel>
|
||||
std::string full_path;
|
||||
|
||||
LLFile::mkdir(presets_path);
|
||||
|
||||
// <FS:Ansariel> FIRE-19810: Make presets global since PresetGraphicActive setting is global as well
|
||||
//full_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, subdirectory);
|
||||
full_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR, subdirectory);
|
||||
//std::string dest_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, subdirectory);
|
||||
std::string dest_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR, subdirectory);
|
||||
// </FS:Ansariel>
|
||||
LLFile::mkdir(full_path);
|
||||
if (!gDirUtilp->fileExists(dest_path))
|
||||
LLFile::mkdir(dest_path);
|
||||
|
||||
return full_path;
|
||||
return dest_path;
|
||||
}
|
||||
|
||||
void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets, EDefaultOptions default_option)
|
||||
void LLPresetsManager::loadPresetNamesFromDir(const std::string& subdirectory, preset_name_list_t& presets, EDefaultOptions default_option)
|
||||
{
|
||||
bool IS_CAMERA = (PRESETS_CAMERA == subdirectory);
|
||||
bool IS_GRAPHIC = (PRESETS_GRAPHIC == subdirectory);
|
||||
|
||||
std::string dir = LLPresetsManager::getInstance()->getPresetsDir(subdirectory);
|
||||
LL_INFOS("AppInit") << "Loading list of preset names from " << dir << LL_ENDL;
|
||||
|
||||
mPresetNames.clear();
|
||||
|
|
@ -120,16 +183,33 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_nam
|
|||
{
|
||||
std::string path = gDirUtilp->add(dir, file);
|
||||
std::string name = LLURI::unescape(gDirUtilp->getBaseFileName(path, /*strip_exten = */ true));
|
||||
LL_DEBUGS() << " Found preset '" << name << "'" << LL_ENDL;
|
||||
LL_DEBUGS() << " Found preset '" << name << "'" << LL_ENDL;
|
||||
|
||||
if (PRESETS_DEFAULT != name)
|
||||
if (IS_CAMERA)
|
||||
{
|
||||
if (isTemplateCameraPreset(name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ((default_option == DEFAULT_HIDE) || (default_option == DEFAULT_BOTTOM))
|
||||
{
|
||||
if (isDefaultCameraPreset(name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
mPresetNames.push_back(name);
|
||||
}
|
||||
else
|
||||
if (IS_GRAPHIC)
|
||||
{
|
||||
switch (default_option)
|
||||
if (PRESETS_DEFAULT != name)
|
||||
{
|
||||
mPresetNames.push_back(name);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (default_option)
|
||||
{
|
||||
case DEFAULT_SHOW:
|
||||
mPresetNames.push_back(LLTrans::getString(PRESETS_DEFAULT));
|
||||
break;
|
||||
|
|
@ -141,16 +221,83 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_nam
|
|||
case DEFAULT_HIDE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (IS_CAMERA)
|
||||
{
|
||||
mPresetNames.sort();
|
||||
if (default_option == DEFAULT_BOTTOM)
|
||||
{
|
||||
mPresetNames.push_back(PRESETS_FRONT_VIEW);
|
||||
mPresetNames.push_back(PRESETS_REAR_VIEW);
|
||||
mPresetNames.push_back(PRESETS_SIDE_VIEW);
|
||||
}
|
||||
}
|
||||
|
||||
presets = mPresetNames;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::mCameraDirty = false;
|
||||
bool LLPresetsManager::mIgnoreChangedSignal = false;
|
||||
|
||||
void LLPresetsManager::setCameraDirty(bool dirty)
|
||||
{
|
||||
mCameraDirty = dirty;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::isCameraDirty()
|
||||
{
|
||||
return mCameraDirty;
|
||||
}
|
||||
|
||||
void LLPresetsManager::settingChanged()
|
||||
{
|
||||
setCameraDirty(true);
|
||||
|
||||
static LLCachedControl<std::string> preset_camera_active(gSavedSettings, "PresetCameraActive", "");
|
||||
std::string preset_name = preset_camera_active;
|
||||
if (!preset_name.empty() && !mIgnoreChangedSignal)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
|
||||
// Hack call because this is a static routine
|
||||
LLPresetsManager::getInstance()->triggerChangeCameraSignal();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPresetsManager::getControlNames(std::vector<std::string>& names)
|
||||
{
|
||||
const std::vector<std::string> camera_controls = boost::assign::list_of
|
||||
// From panel_preferences_move.xml
|
||||
("CameraAngle")
|
||||
("CameraOffsetScale")
|
||||
("EditCameraMovement")
|
||||
("AppearanceCameraMovement")
|
||||
// From llagentcamera.cpp
|
||||
("CameraOffsetBuild")
|
||||
("TrackFocusObject")
|
||||
("CameraOffsetRearView")
|
||||
("FocusOffsetRearView")
|
||||
// <FS:Ansariel> Additional settings
|
||||
("ZoomTime")
|
||||
("CameraPositionSmoothing")
|
||||
("EditAppearanceLighting")
|
||||
("FSDisableMouseWheelCameraZoom")
|
||||
("DisableCameraConstraints")
|
||||
// </FS:Ansariel>
|
||||
;
|
||||
names = camera_controls;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string name, bool createDefault)
|
||||
{
|
||||
bool IS_CAMERA = (PRESETS_CAMERA == subdirectory);
|
||||
bool IS_GRAPHIC = (PRESETS_GRAPHIC == subdirectory);
|
||||
|
||||
if (LLTrans::getString(PRESETS_DEFAULT) == name)
|
||||
{
|
||||
name = PRESETS_DEFAULT;
|
||||
|
|
@ -161,24 +308,30 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string n
|
|||
return false;
|
||||
}
|
||||
|
||||
if (isTemplateCameraPreset(name))
|
||||
{
|
||||
LL_WARNS() << "Should not overwrite template presets" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool saved = false;
|
||||
std::vector<std::string> name_list;
|
||||
|
||||
if(PRESETS_GRAPHIC == subdirectory)
|
||||
if (IS_GRAPHIC)
|
||||
{
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
//LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
//if (instance && !createDefault)
|
||||
//{
|
||||
// gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// instance->getControlNames(name_list);
|
||||
// LL_DEBUGS() << "saving preset '" << name << "'; " << name_list.size() << " names" << LL_ENDL;
|
||||
// LL_DEBUGS() << "saving preset '" << name << "'; " << name_list.size() << " names" << LL_ENDL;
|
||||
// name_list.push_back("PresetGraphicActive");
|
||||
//}
|
||||
//else
|
||||
//else
|
||||
//{
|
||||
// LL_WARNS() << "preferences floater instance not found" << LL_ENDL;
|
||||
//}
|
||||
// LL_WARNS("Presets") << "preferences floater instance not found" << LL_ENDL;
|
||||
//}
|
||||
if (!createDefault)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
|
|
@ -186,130 +339,175 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string n
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
else if(PRESETS_CAMERA == subdirectory)
|
||||
else if (IS_CAMERA)
|
||||
{
|
||||
name_list.clear();
|
||||
name_list.push_back("Placeholder");
|
||||
getControlNames(name_list);
|
||||
name_list.push_back("PresetCameraActive");
|
||||
|
||||
gSavedSettings.setF32("CameraZoomFraction", gAgentCamera.getCameraZoomFraction(true));
|
||||
name_list.push_back("CameraZoomFraction");
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_ERRS() << "Invalid presets directory '" << subdirectory << "'" << LL_ENDL;
|
||||
}
|
||||
|
||||
if (name_list.size() > 1 // if the active preset name is the only thing in the list, don't save the list
|
||||
|| (createDefault && name == PRESETS_DEFAULT && subdirectory == PRESETS_GRAPHIC)) // or create a default graphics preset from hw recommended settings
|
||||
{
|
||||
// make an empty llsd
|
||||
LLSD paramsData(LLSD::emptyMap());
|
||||
else
|
||||
{
|
||||
LL_ERRS() << "Invalid presets directory '" << subdirectory << "'" << LL_ENDL;
|
||||
}
|
||||
|
||||
// make an empty llsd
|
||||
LLSD paramsData(LLSD::emptyMap());
|
||||
|
||||
if (createDefault)
|
||||
{
|
||||
paramsData = LLFeatureManager::getInstance()->getRecommendedSettingsMap();
|
||||
if (gSavedSettings.getU32("RenderAvatarMaxComplexity") == 0)
|
||||
{
|
||||
mIsLoadingPreset = true; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
// use the recommended setting as an initial one (MAINT-6435)
|
||||
gSavedSettings.setU32("RenderAvatarMaxComplexity", paramsData["RenderAvatarMaxComplexity"]["Value"].asInteger());
|
||||
mIsLoadingPreset = false; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
}
|
||||
// Create a default graphics preset from hw recommended settings
|
||||
if (IS_GRAPHIC && createDefault && name == PRESETS_DEFAULT)
|
||||
{
|
||||
paramsData = LLFeatureManager::getInstance()->getRecommendedSettingsMap();
|
||||
if (gSavedSettings.getU32("RenderAvatarMaxComplexity") == 0)
|
||||
{
|
||||
mIsLoadingPreset = true; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
// use the recommended setting as an initial one (MAINT-6435)
|
||||
gSavedSettings.setU32("RenderAvatarMaxComplexity", paramsData["RenderAvatarMaxComplexity"]["Value"].asInteger());
|
||||
mIsLoadingPreset = false; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
// Add the controls not in feature table to the default preset with their current value
|
||||
for (std::vector<std::string>::iterator it = mGraphicPresetControls.begin(); it != mGraphicPresetControls.end(); ++it)
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
// Add the controls not in feature table to the default preset with their current value
|
||||
for (std::vector<std::string>::iterator it = mGraphicPresetControls.begin(); it != mGraphicPresetControls.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
if (!paramsData.has(ctrl_name))
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
if (!paramsData.has(ctrl_name))
|
||||
{
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
else
|
||||
{
|
||||
ECameraPreset new_camera_preset = (ECameraPreset)gSavedSettings.getU32("CameraPresetType");
|
||||
bool new_camera_offsets = false;
|
||||
if (IS_CAMERA)
|
||||
{
|
||||
if (isDefaultCameraPreset(name))
|
||||
{
|
||||
if (PRESETS_REAR_VIEW == name)
|
||||
{
|
||||
new_camera_preset = CAMERA_PRESET_REAR_VIEW;
|
||||
}
|
||||
else if (PRESETS_SIDE_VIEW == name)
|
||||
{
|
||||
new_camera_preset = CAMERA_PRESET_GROUP_VIEW;
|
||||
}
|
||||
else if (PRESETS_FRONT_VIEW == name)
|
||||
{
|
||||
new_camera_preset = CAMERA_PRESET_FRONT_VIEW;
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
std::string pathName(getPresetsDir(subdirectory) + gDirUtilp->getDirDelimiter() + LLURI::escape(name) + ".xml");
|
||||
|
||||
// write to file
|
||||
llofstream presetsXML(pathName.c_str());
|
||||
if (presetsXML.is_open())
|
||||
{
|
||||
|
||||
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
||||
formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY);
|
||||
presetsXML.close();
|
||||
saved = true;
|
||||
|
||||
LL_DEBUGS() << "saved preset '" << name << "'; " << paramsData.size() << " parameters" << LL_ENDL;
|
||||
|
||||
if (!createDefault)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Presets") << "Cannot open for output preset file " << pathName << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "No settings found; preferences floater has not yet been created" << LL_ENDL;
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
void LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option)
|
||||
{
|
||||
combo->clearRows();
|
||||
|
||||
std::string presets_dir = getPresetsDir(subdirectory);
|
||||
|
||||
if (!presets_dir.empty())
|
||||
{
|
||||
std::list<std::string> preset_names;
|
||||
loadPresetNamesFromDir(presets_dir, preset_names, default_option);
|
||||
|
||||
std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive");
|
||||
|
||||
if (preset_names.begin() != preset_names.end())
|
||||
{
|
||||
for (std::list<std::string>::const_iterator it = preset_names.begin(); it != preset_names.end(); ++it)
|
||||
else
|
||||
{
|
||||
const std::string& name = *it;
|
||||
combo->add(name, LLSD().with(0, name));
|
||||
new_camera_preset = CAMERA_PRESET_CUSTOM;
|
||||
}
|
||||
new_camera_offsets = (!isDefaultCameraPreset(name) || (ECameraPreset)gSavedSettings.getU32("CameraPresetType") != new_camera_preset);
|
||||
}
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
if (ctrl)
|
||||
{
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
}
|
||||
}
|
||||
if (IS_CAMERA)
|
||||
{
|
||||
gSavedSettings.setU32("CameraPresetType", new_camera_preset);
|
||||
}
|
||||
}
|
||||
|
||||
std::string pathName(getPresetsDir(subdirectory) + gDirUtilp->getDirDelimiter() + LLURI::escape(name) + ".xml");
|
||||
|
||||
// If the active preset name is the only thing in the list, don't save the list
|
||||
if (paramsData.size() > 1)
|
||||
{
|
||||
// write to file
|
||||
llofstream presetsXML(pathName.c_str());
|
||||
if (presetsXML.is_open())
|
||||
{
|
||||
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
||||
formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY);
|
||||
presetsXML.close();
|
||||
saved = true;
|
||||
|
||||
LL_DEBUGS() << "saved preset '" << name << "'; " << paramsData.size() << " parameters" << LL_ENDL;
|
||||
|
||||
if (IS_GRAPHIC)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
|
||||
if (IS_CAMERA)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", name);
|
||||
setCameraDirty(false);
|
||||
// signal interested parties
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
combo->setLabel(LLTrans::getString("preset_combo_label"));
|
||||
LL_WARNS("Presets") << "Cannot open for output preset file " << pathName << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "No settings available to be saved" << LL_ENDL;
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option)
|
||||
{
|
||||
bool sts = true;
|
||||
|
||||
combo->clearRows();
|
||||
combo->setEnabled(TRUE);
|
||||
|
||||
std::list<std::string> preset_names;
|
||||
loadPresetNamesFromDir(subdirectory, preset_names, default_option);
|
||||
|
||||
if (preset_names.begin() != preset_names.end())
|
||||
{
|
||||
for (std::list<std::string>::const_iterator it = preset_names.begin(); it != preset_names.end(); ++it)
|
||||
{
|
||||
const std::string& name = *it;
|
||||
combo->add(name, name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
combo->setLabel(LLTrans::getString("preset_combo_label"));
|
||||
combo->setEnabled(PRESETS_CAMERA != subdirectory);
|
||||
sts = false;
|
||||
}
|
||||
|
||||
return sts;
|
||||
}
|
||||
|
||||
void LLPresetsManager::loadPreset(const std::string& subdirectory, std::string name)
|
||||
|
|
@ -325,34 +523,42 @@ void LLPresetsManager::loadPreset(const std::string& subdirectory, std::string n
|
|||
LL_DEBUGS() << "attempting to load preset '"<<name<<"' from '"<<full_path<<"'" << LL_ENDL;
|
||||
|
||||
mIsLoadingPreset = true; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
mIgnoreChangedSignal = true;
|
||||
if(gSavedSettings.loadFromFile(full_path, false, true) > 0)
|
||||
{
|
||||
mIgnoreChangedSignal = false;
|
||||
if(PRESETS_GRAPHIC == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Update indirect controls
|
||||
LLAvatarComplexityControls::setIndirectControls();
|
||||
// <FS:Ansariel> Update indirect controls
|
||||
LLAvatarComplexityControls::setIndirectControls();
|
||||
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->refreshEnabledGraphics();
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->refreshEnabledGraphics();
|
||||
}
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
FloaterQuickPrefs* phototools = LLFloaterReg::findTypedInstance<FloaterQuickPrefs>(PHOTOTOOLS_FLOATER);
|
||||
if (phototools)
|
||||
{
|
||||
phototools->refreshSettings();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
triggerChangeSignal();
|
||||
}
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
FloaterQuickPrefs* phototools = LLFloaterReg::findTypedInstance<FloaterQuickPrefs>(PHOTOTOOLS_FLOATER);
|
||||
if (phototools)
|
||||
if(PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
phototools->refreshSettings();
|
||||
gSavedSettings.setString("PresetCameraActive", name);
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
triggerChangeSignal();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "failed to load preset '"<<name<<"' from '"<<full_path<<"'" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
mIgnoreChangedSignal = false;
|
||||
LL_WARNS("Presets") << "failed to load preset '"<<name<<"' from '"<<full_path<<"'" << LL_ENDL;
|
||||
}
|
||||
mIsLoadingPreset = false; // <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
}
|
||||
|
||||
|
|
@ -379,17 +585,73 @@ bool LLPresetsManager::deletePreset(const std::string& subdirectory, std::string
|
|||
}
|
||||
|
||||
// If you delete the preset that is currently marked as loaded then also indicate that no preset is loaded.
|
||||
if (gSavedSettings.getString("PresetGraphicActive") == name)
|
||||
if(PRESETS_GRAPHIC == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", "");
|
||||
if (gSavedSettings.getString("PresetGraphicActive") == name)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", "");
|
||||
}
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
if(PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
if (gSavedSettings.getString("PresetCameraActive") == name)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
}
|
||||
// signal interested parties
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
|
||||
return sts;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::isDefaultCameraPreset(std::string preset_name)
|
||||
{
|
||||
return (preset_name == PRESETS_REAR_VIEW || preset_name == PRESETS_SIDE_VIEW || preset_name == PRESETS_FRONT_VIEW);
|
||||
}
|
||||
|
||||
bool LLPresetsManager::isTemplateCameraPreset(std::string preset_name)
|
||||
{
|
||||
return (preset_name == PRESETS_REAR || preset_name == PRESETS_SIDE || preset_name == PRESETS_FRONT);
|
||||
}
|
||||
|
||||
void LLPresetsManager::resetCameraPreset(std::string preset_name)
|
||||
{
|
||||
if (isDefaultCameraPreset(preset_name))
|
||||
{
|
||||
createDefaultCameraPreset(preset_name, true);
|
||||
|
||||
if (gSavedSettings.getString("PresetCameraActive") == preset_name)
|
||||
{
|
||||
loadPreset(PRESETS_CAMERA, preset_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool LLPresetsManager::createDefaultCameraPreset(std::string preset_name, bool force_reset)
|
||||
{
|
||||
// <FS:Ansariel> FIRE-19810: Make presets global since PresetGraphicActive setting is global as well
|
||||
//std::string preset_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR,
|
||||
std::string preset_file = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR,
|
||||
// </FS:Ansariel>
|
||||
PRESETS_CAMERA, LLURI::escape(preset_name) + ".xml");
|
||||
if (!gDirUtilp->fileExists(preset_file) || force_reset)
|
||||
{
|
||||
std::string template_name = preset_name.substr(0, preset_name.size() - PRESETS_VIEW_SUFFIX.size());
|
||||
std::string default_template_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, PRESETS_CAMERA, template_name + ".xml");
|
||||
return LLFile::copy(default_template_file, preset_file);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boost::signals2::connection LLPresetsManager::setPresetListChangeCameraCallback(const preset_list_signal_t::slot_type& cb)
|
||||
{
|
||||
return mPresetListChangeCameraSignal.connect(cb);
|
||||
}
|
||||
|
||||
boost::signals2::connection LLPresetsManager::setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb)
|
||||
{
|
||||
return mPresetListChangeSignal.connect(cb);
|
||||
|
|
|
|||
|
|
@ -36,11 +36,19 @@ static const std::string PRESETS_DEFAULT = "Default";
|
|||
static const std::string PRESETS_DIR = "presets";
|
||||
static const std::string PRESETS_GRAPHIC = "graphic";
|
||||
static const std::string PRESETS_CAMERA = "camera";
|
||||
static const std::string PRESETS_REAR = "Rear";
|
||||
static const std::string PRESETS_FRONT = "Front";
|
||||
static const std::string PRESETS_SIDE = "Side";
|
||||
static const std::string PRESETS_VIEW_SUFFIX = " View";
|
||||
static const std::string PRESETS_REAR_VIEW = PRESETS_REAR + PRESETS_VIEW_SUFFIX;
|
||||
static const std::string PRESETS_FRONT_VIEW = PRESETS_FRONT + PRESETS_VIEW_SUFFIX;
|
||||
static const std::string PRESETS_SIDE_VIEW = PRESETS_SIDE + PRESETS_VIEW_SUFFIX;
|
||||
|
||||
enum EDefaultOptions
|
||||
{
|
||||
DEFAULT_SHOW,
|
||||
DEFAULT_TOP,
|
||||
DEFAULT_BOTTOM,
|
||||
DEFAULT_HIDE // Do not display "Default" in a list
|
||||
};
|
||||
|
||||
|
|
@ -54,22 +62,35 @@ public:
|
|||
typedef std::list<std::string> preset_name_list_t;
|
||||
typedef boost::signals2::signal<void()> preset_list_signal_t;
|
||||
|
||||
void createMissingDefault();
|
||||
void createMissingDefault(const std::string& subdirectory);
|
||||
void startWatching(const std::string& subdirectory);
|
||||
void triggerChangeCameraSignal();
|
||||
void triggerChangeSignal();
|
||||
static std::string getPresetsDir(const std::string& subdirectory);
|
||||
void setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option);
|
||||
void loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets, EDefaultOptions default_option);
|
||||
bool setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option);
|
||||
void loadPresetNamesFromDir(const std::string& subdirectory, preset_name_list_t& presets, EDefaultOptions default_option);
|
||||
bool savePreset(const std::string& subdirectory, std::string name, bool createDefault = false);
|
||||
void loadPreset(const std::string& subdirectory, std::string name);
|
||||
bool deletePreset(const std::string& subdirectory, std::string name);
|
||||
bool isCameraDirty();
|
||||
static void setCameraDirty(bool dirty);
|
||||
|
||||
void createCameraDefaultPresets();
|
||||
|
||||
bool isTemplateCameraPreset(std::string preset_name);
|
||||
bool isDefaultCameraPreset(std::string preset_name);
|
||||
void resetCameraPreset(std::string preset_name);
|
||||
bool createDefaultCameraPreset(std::string preset_name, bool force_reset = false);
|
||||
|
||||
// Emitted when a preset gets loaded, deleted, or saved.
|
||||
boost::signals2::connection setPresetListChangeCameraCallback(const preset_list_signal_t::slot_type& cb);
|
||||
boost::signals2::connection setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb);
|
||||
|
||||
// Emitted when a preset gets loaded or saved.
|
||||
|
||||
preset_name_list_t mPresetNames;
|
||||
|
||||
preset_list_signal_t mPresetListChangeCameraSignal;
|
||||
preset_list_signal_t mPresetListChangeSignal;
|
||||
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
|
|
@ -78,13 +99,20 @@ public:
|
|||
// </FS:Ansariel>
|
||||
|
||||
private:
|
||||
LOG_CLASS(LLPresetsManager);
|
||||
LOG_CLASS(LLPresetsManager);
|
||||
|
||||
void getControlNames(std::vector<std::string>& names);
|
||||
static void settingChanged();
|
||||
|
||||
boost::signals2::connection mCameraChangedSignal;
|
||||
|
||||
static bool mCameraDirty;
|
||||
static bool mIgnoreChangedSignal;
|
||||
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
void initGraphicPresetControlNames();
|
||||
void initGraphicPresetControls();
|
||||
void handleGraphicPresetControlChanged(LLControlVariablePtr control, const LLSD& new_value, const LLSD& old_value);
|
||||
|
||||
bool mIsLoadingPreset;
|
||||
bool mIsDrawDistanceSteppingActive;
|
||||
std::vector<std::string> mGraphicPresetControls;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@
|
|||
#include "llnotifications.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llpersistentnotificationstorage.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "llteleporthistory.h"
|
||||
#include "llregionhandle.h"
|
||||
#include "llsd.h"
|
||||
|
|
@ -2792,6 +2793,8 @@ bool idle_startup()
|
|||
// JC - 7/20/2002
|
||||
gViewerWindow->sendShapeToSim();
|
||||
|
||||
LLPresetsManager::getInstance()->createMissingDefault(PRESETS_CAMERA);
|
||||
|
||||
// The reason we show the alert is because we want to
|
||||
// reduce confusion for when you log in and your provided
|
||||
// location is not your expected location. So, if this is
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include "llfloaterbuycurrency.h"
|
||||
#include "llbuycurrencyhtml.h"
|
||||
#include "llpanelnearbymedia.h"
|
||||
#include "llpanelpresetscamerapulldown.h"
|
||||
#include "llpanelpresetspulldown.h"
|
||||
#include "llpanelvolumepulldown.h"
|
||||
#include "llfloaterregioninfo.h"
|
||||
|
|
@ -192,9 +193,11 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
|
|||
mAudioStreamEnabled(FALSE), // <FS:Zi> Media/Stream separation
|
||||
mRebakeStuck(FALSE), // <FS:LO> FIRE-7639 - Stop the blinking after a while
|
||||
mNearbyIcons(FALSE), // <FS:Ansariel> Script debug
|
||||
mIconPresets(NULL),
|
||||
mIconPresetsGraphic(NULL),
|
||||
mIconPresetsCamera(NULL),
|
||||
mMediaToggle(NULL),
|
||||
mMouseEnterPresetsConnection(),
|
||||
mMouseEnterPresetsCameraConnection(),
|
||||
mMouseEnterVolumeConnection(),
|
||||
mMouseEnterNearbyMediaConnection(),
|
||||
mCurrentLocationString()
|
||||
|
|
@ -252,6 +255,10 @@ LLStatusBar::~LLStatusBar()
|
|||
{
|
||||
mMouseEnterPresetsConnection.disconnect();
|
||||
}
|
||||
if (mMouseEnterPresetsCameraConnection.connected())
|
||||
{
|
||||
mMouseEnterPresetsCameraConnection.disconnect();
|
||||
}
|
||||
if (mMouseEnterVolumeConnection.connected())
|
||||
{
|
||||
mMouseEnterVolumeConnection.disconnect();
|
||||
|
|
@ -299,15 +306,23 @@ BOOL LLStatusBar::postBuild()
|
|||
mBoxBalance = getChild<LLTextBox>("balance");
|
||||
mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
|
||||
|
||||
mIconPresets = getChild<LLButton>( "presets_icon" );
|
||||
// <FS: KC> FIRE-19697: Add setting to disable graphics preset menu popup on mouse over
|
||||
// mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mIconPresetsCamera = getChild<LLButton>( "presets_icon_camera" );
|
||||
//mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::mIconPresetsCamera, this));
|
||||
if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover"))
|
||||
{
|
||||
mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mMouseEnterPresetsCameraConnection = mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
|
||||
}
|
||||
mIconPresetsCamera->setClickedCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
|
||||
|
||||
mIconPresetsGraphic = getChild<LLButton>( "presets_icon_graphic" );
|
||||
// <FS: KC> FIRE-19697: Add setting to disable graphics preset menu popup on mouse over
|
||||
// mIconPresetsGraphic->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover"))
|
||||
{
|
||||
mMouseEnterPresetsConnection = mIconPresetsGraphic->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
}
|
||||
// </FS: KC> FIRE-19697: Add setting to disable graphics preset menu popup on mouse over
|
||||
mIconPresets->setClickedCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mIconPresetsGraphic->setClickedCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
|
||||
mBtnVolume = getChild<LLButton>( "volume_btn" );
|
||||
mBtnVolume->setClickedCallback( onClickVolume, this );
|
||||
|
|
@ -398,6 +413,11 @@ BOOL LLStatusBar::postBuild()
|
|||
mSGPacketLoss = LLUICtrlFactory::create<LLStatGraph>(pgp);
|
||||
addChild(mSGPacketLoss);
|
||||
|
||||
mPanelPresetsCameraPulldown = new LLPanelPresetsCameraPulldown();
|
||||
addChild(mPanelPresetsCameraPulldown);
|
||||
mPanelPresetsCameraPulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
|
||||
mPanelPresetsPulldown = new LLPanelPresetsPulldown();
|
||||
addChild(mPanelPresetsPulldown);
|
||||
mPanelPresetsPulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
|
||||
|
|
@ -695,7 +715,8 @@ void LLStatusBar::setVisibleForMouselook(bool visible)
|
|||
mBandwidthButton->setVisible(visible && showNetStats); // <FS:PP> FIRE-6287: Clicking on traffic indicator toggles Lag Meter window
|
||||
mTimeMediaPanel->setVisible(visible);
|
||||
setBackgroundVisible(visible);
|
||||
mIconPresets->setVisible(visible);
|
||||
mIconPresetsCamera->setVisible(visible);
|
||||
mIconPresetsGraphic->setVisible(visible);
|
||||
}
|
||||
|
||||
void LLStatusBar::debitBalance(S32 debit)
|
||||
|
|
@ -836,13 +857,40 @@ void LLStatusBar::onClickBuyCurrency()
|
|||
LLFirstUse::receiveLindens(false);
|
||||
}
|
||||
|
||||
void LLStatusBar::onMouseEnterPresetsCamera()
|
||||
{
|
||||
LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
|
||||
// <FS:Ansariel> Changed presets icon to LLButton
|
||||
//LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon_camera" );
|
||||
//LLRect icon_rect = icon->getRect();
|
||||
LLRect icon_rect = mIconPresetsCamera->getRect();
|
||||
// </FS:Ansariel>
|
||||
LLRect pulldown_rect = mPanelPresetsCameraPulldown->getRect();
|
||||
pulldown_rect.setLeftTopAndSize(icon_rect.mLeft -
|
||||
(pulldown_rect.getWidth() - icon_rect.getWidth()),
|
||||
icon_rect.mBottom,
|
||||
pulldown_rect.getWidth(),
|
||||
pulldown_rect.getHeight());
|
||||
|
||||
pulldown_rect.translate(popup_holder->getRect().getWidth() - pulldown_rect.mRight, 0);
|
||||
mPanelPresetsCameraPulldown->setShape(pulldown_rect);
|
||||
|
||||
// show the master presets pull-down
|
||||
LLUI::getInstance()->clearPopups();
|
||||
LLUI::getInstance()->addPopup(mPanelPresetsCameraPulldown);
|
||||
mPanelNearByMedia->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelPresetsCameraPulldown->setVisible(TRUE);
|
||||
}
|
||||
|
||||
void LLStatusBar::onMouseEnterPresets()
|
||||
{
|
||||
LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
|
||||
// <FS:Ansariel> Changed presets icon to LLButton
|
||||
//LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon" );
|
||||
//LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon_graphic" );
|
||||
//LLRect icon_rect = icon->getRect();
|
||||
LLRect icon_rect = mIconPresets->getRect();
|
||||
LLRect icon_rect = mIconPresetsGraphic->getRect();
|
||||
// </FS:Ansariel>
|
||||
LLRect pulldown_rect = mPanelPresetsPulldown->getRect();
|
||||
pulldown_rect.setLeftTopAndSize(icon_rect.mLeft -
|
||||
|
|
@ -884,6 +932,7 @@ void LLStatusBar::onMouseEnterVolume()
|
|||
// show the master volume pull-down
|
||||
LLUI::getInstance()->clearPopups();
|
||||
LLUI::getInstance()->addPopup(mPanelVolumePulldown);
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelNearByMedia->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(TRUE);
|
||||
|
|
@ -908,6 +957,7 @@ void LLStatusBar::onMouseEnterNearbyMedia()
|
|||
LLUI::getInstance()->clearPopups();
|
||||
LLUI::getInstance()->addPopup(mPanelNearByMedia);
|
||||
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(FALSE);
|
||||
mPanelNearByMedia->setVisible(TRUE);
|
||||
|
|
@ -1673,6 +1723,10 @@ void LLStatusBar::onPopupRolloverChanged(const LLSD& newvalue)
|
|||
{
|
||||
mMouseEnterPresetsConnection.disconnect();
|
||||
}
|
||||
if (mMouseEnterPresetsCameraConnection.connected())
|
||||
{
|
||||
mMouseEnterPresetsCameraConnection.disconnect();
|
||||
}
|
||||
if (mMouseEnterVolumeConnection.connected())
|
||||
{
|
||||
mMouseEnterVolumeConnection.disconnect();
|
||||
|
|
@ -1684,7 +1738,8 @@ void LLStatusBar::onPopupRolloverChanged(const LLSD& newvalue)
|
|||
|
||||
if (new_value)
|
||||
{
|
||||
mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mMouseEnterPresetsConnection = mIconPresetsGraphic->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mMouseEnterPresetsCameraConnection = mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
|
||||
mMouseEnterVolumeConnection = mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this));
|
||||
mMouseEnterNearbyMediaConnection = mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ class LLUICtrl;
|
|||
class LLUUID;
|
||||
class LLFrameTimer;
|
||||
class LLStatGraph;
|
||||
class LLPanelPresetsCameraPulldown;
|
||||
class LLPanelPresetsPulldown;
|
||||
class LLPanelVolumePulldown;
|
||||
class LLPanelNearByMedia;
|
||||
|
|
@ -161,6 +162,7 @@ private:
|
|||
void onClickBuyCurrency();
|
||||
void onVolumeChanged(const LLSD& newvalue);
|
||||
|
||||
void onMouseEnterPresetsCamera();
|
||||
void onMouseEnterPresets();
|
||||
void onMouseEnterVolume();
|
||||
void onMouseEnterNearbyMedia();
|
||||
|
|
@ -337,7 +339,8 @@ private:
|
|||
LLStatGraph *mSGBandwidth;
|
||||
LLStatGraph *mSGPacketLoss;
|
||||
|
||||
LLButton *mIconPresets;
|
||||
LLButton *mIconPresetsCamera;
|
||||
LLButton *mIconPresetsGraphic;
|
||||
LLButton *mBtnVolume;
|
||||
LLTextBox *mBoxBalance;
|
||||
LLButton *mStreamToggle; // ## Zi: Media/Stream separation
|
||||
|
|
@ -359,6 +362,7 @@ private:
|
|||
BOOL mShowParcelIcons;
|
||||
LLFrameTimer* mBalanceTimer;
|
||||
LLFrameTimer* mHealthTimer;
|
||||
LLPanelPresetsCameraPulldown* mPanelPresetsCameraPulldown;
|
||||
LLPanelPresetsPulldown* mPanelPresetsPulldown;
|
||||
LLPanelVolumePulldown* mPanelVolumePulldown;
|
||||
LLPanelNearByMedia* mPanelNearByMedia;
|
||||
|
|
@ -383,6 +387,7 @@ private:
|
|||
|
||||
// <FS:Ansariel> FIRE-19697: Add setting to disable graphics preset menu popup on mouse over
|
||||
boost::signals2::connection mMouseEnterPresetsConnection;
|
||||
boost::signals2::connection mMouseEnterPresetsCameraConnection;
|
||||
boost::signals2::connection mMouseEnterVolumeConnection;
|
||||
boost::signals2::connection mMouseEnterNearbyMediaConnection;
|
||||
// </FS:Ansariel>
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
#include "llfloaterbuyland.h"
|
||||
#include "llfloaterbvhpreview.h"
|
||||
#include "llfloatercamera.h"
|
||||
#include "llfloatercamerapresets.h"
|
||||
#include "llfloaterchatvoicevolume.h"
|
||||
#include "llfloaterconversationlog.h"
|
||||
#include "llfloaterconversationpreview.h"
|
||||
|
|
@ -105,12 +106,14 @@
|
|||
#include "llfloaterperms.h"
|
||||
#include "llfloaterpostprocess.h"
|
||||
#include "llfloaterpreference.h"
|
||||
#include "llfloaterpreferenceviewadvanced.h"
|
||||
#include "llfloaterpreviewtrash.h"
|
||||
#include "llfloaterproperties.h"
|
||||
#include "llfloaterregiondebugconsole.h"
|
||||
#include "llfloaterregioninfo.h"
|
||||
#include "llfloaterregionrestarting.h"
|
||||
#include "llfloaterreporter.h"
|
||||
#include "llfloatersavecamerapreset.h"
|
||||
#include "llfloatersaveprefpreset.h"
|
||||
#include "llfloatersceneloadstats.h"
|
||||
#include "llfloaterscriptdebug.h"
|
||||
|
|
@ -263,6 +266,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
|
||||
|
||||
LLFloaterReg::add("camera", "floater_camera.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]
|
||||
//LLFloaterReg::add("nearby_chat", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterIMNearbyChat::buildFloater);
|
||||
|
|
@ -365,6 +369,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
|
||||
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
|
||||
LLFloaterReg::add("prefs_graphics_advanced", "floater_preferences_graphics_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceGraphicsAdvanced>);
|
||||
LLFloaterReg::add("prefs_view_advanced", "floater_preferences_view_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceViewAdvanced>);
|
||||
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
|
||||
LLFloaterReg::add("prefs_spellchecker_import", "floater_spellcheck_import.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSpellCheckerImport>);
|
||||
LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
|
||||
|
|
@ -384,6 +389,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("properties", "floater_inventory_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterProperties>);
|
||||
LLFloaterReg::add("publish_classified", "floater_publish_classified.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPublishClassifiedFloater>);
|
||||
LLFloaterReg::add("save_pref_preset", "floater_save_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSavePrefPreset>);
|
||||
LLFloaterReg::add("save_camera_preset", "floater_save_camera_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSaveCameraPreset>);
|
||||
LLFloaterReg::add("script_colors", "floater_script_ed_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptEdPrefs>);
|
||||
|
||||
LLFloaterReg::add("telehubs", "floater_telehub.xml",&LLFloaterReg::build<LLFloaterTelehub>);
|
||||
|
|
|
|||
|
|
@ -383,6 +383,7 @@ void camera_spin_around_ccw_sitting( EKeystate s )
|
|||
else
|
||||
{
|
||||
//change camera but do not send keystrokes
|
||||
gAgentCamera.unlockView();
|
||||
gAgentCamera.setOrbitLeftKey( get_orbit_rate() );
|
||||
}
|
||||
}
|
||||
|
|
@ -399,6 +400,7 @@ void camera_spin_around_cw_sitting( EKeystate s )
|
|||
else
|
||||
{
|
||||
//change camera but do not send keystrokes
|
||||
gAgentCamera.unlockView();
|
||||
gAgentCamera.setOrbitRightKey( get_orbit_rate() );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5238,13 +5238,12 @@ void handle_reset_view()
|
|||
// switching to outfit selector should automagically save any currently edited wearable
|
||||
LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
|
||||
}
|
||||
|
||||
|
||||
// <FS:Zi> Added optional V1 behavior so the avatar turns into camera direction after hitting ESC
|
||||
if(gSavedSettings.getBOOL("ResetViewTurnsAvatar"))
|
||||
gAgentCamera.resetView();
|
||||
// </FS:Zi>
|
||||
|
||||
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
|
||||
reset_view_final( TRUE );
|
||||
LLFloaterCamera::resetCameraMode();
|
||||
}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 369 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 363 B |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 372 B |
|
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 366 B |
|
|
@ -99,7 +99,7 @@ with the same filename but different name
|
|||
<texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="0" scale.top="1" scale.right="0" scale.bottom="0" />
|
||||
<texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
|
||||
|
||||
<texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="false" />
|
||||
<texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="true" />
|
||||
<texture name="Cam_FreeCam_Off" file_name="bottomtray/Cam_FreeCam_Off.png" preload="false" />
|
||||
<texture name="Cam_Orbit_Off" file_name="bottomtray/Cam_Orbit_Off.png" preload="false" />
|
||||
<texture name="Cam_Pan_Off" file_name="bottomtray/Cam_Pan_Off.png" preload="false" />
|
||||
|
|
@ -114,8 +114,10 @@ with the same filename but different name
|
|||
|
||||
<texture name="Cam_Rotate_In" file_name="bottomtray/Cam_Rotate_In.png" preload="false" />
|
||||
<texture name="Cam_Rotate_Out" file_name="bottomtray/Cam_Rotate_Out.png" preload="false" />
|
||||
<texture name="Cam_Rotate_Center" file_name="bottomtray/Cam_Rotate_Center.png" preload="false" />
|
||||
<texture name="Cam_Tracking_In" file_name="bottomtray/Cam_Tracking_In.png" preload="false" />
|
||||
<texture name="Cam_Tracking_Out" file_name="bottomtray/Cam_Tracking_Out.png" preload="false" />
|
||||
<texture name="Cam_Tracking_Center" file_name="bottomtray/Cam_Tracking_Center.png" preload="false" />
|
||||
|
||||
<!-- FS:Ansariel: FIRE-7758: 7758 -->
|
||||
<texture name="Cam_Store_Pos" file_name="bottomtray/camera_store.png" preload="false" />
|
||||
|
|
@ -215,6 +217,7 @@ with the same filename but different name
|
|||
<texture name="Edit_Wrench" file_name="icons/Edit_Wrench.png" preload="false" />
|
||||
|
||||
<texture name="Presets_Icon" file_name="icons/Presets_Icon.png" preload="true" />
|
||||
<texture name="Presets_Icon_Graphic" file_name="icons/Presets_Icon_Graphic.png" preload="true" />
|
||||
|
||||
<texture name="Favorite_Star_Active" file_name="navbar/Favorite_Star_Active.png" preload="false" />
|
||||
<texture name="Favorite_Star_Off" file_name="navbar/Favorite_Star_Off.png" preload="false" />
|
||||
|
|
@ -265,6 +268,7 @@ with the same filename but different name
|
|||
<texture name="Icon_Gear_Background" file_name="windows/Icon_Gear_Background.png" preload="false" />
|
||||
<texture name="Icon_Gear_Foreground" file_name="windows/Icon_Gear_Foreground.png" preload="false" />
|
||||
<texture name="Icon_Gear_Press" file_name="windows/Icon_Gear_Press.png" preload="false" />
|
||||
<texture name="Icon_Gear" file_name="windows/Icon_Gear.png" preload="false" />
|
||||
|
||||
<texture name="Icon_Help_Foreground" file_name="windows/Icon_Help_Foreground.png" preload="true" />
|
||||
<texture name="Icon_Help_Press" file_name="windows/Icon_Help_Press.png" preload="true" />
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 6.1 KiB |
|
|
@ -12,21 +12,18 @@
|
|||
<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">
|
||||
<string name="inactive_combo_text">
|
||||
Voreinstellung...
|
||||
</string>
|
||||
|
||||
<panel name="controls">
|
||||
<panel name="zoom">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
|
||||
<slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/>
|
||||
<joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="buttons_panel">
|
||||
<panel_camera_item name="front_view" tool_tip="Frontalansicht">
|
||||
<panel_camera_item.text name="front_view_text">
|
||||
</panel_camera_item.text>
|
||||
|
|
@ -39,8 +36,6 @@
|
|||
<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>
|
||||
|
|
@ -54,4 +49,9 @@
|
|||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
<combo_box name="preset_combo">
|
||||
<combo_box.item label="Voreinstellung verwenden" name="Use preset"/>
|
||||
</combo_box>
|
||||
<button name="gear_btn" tool_tip="Kamera-Voreinstellungen"/>
|
||||
<button label="Kamera-Position..." name="camera_position_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater title="Kamera-Voreinstellungen" name="floater_camera_presets">
|
||||
</floater>
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="HoverHeight" title="Schwebehöhe festlegen">
|
||||
<slider label="Höhe" name="HoverHeightSlider"/>
|
||||
<check_box name="BindCameraCheck" label="Kameraansicht beeinflussen"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@
|
|||
<floater.string name="free_mode_title">
|
||||
Objekt ansehen
|
||||
</floater.string>
|
||||
<string name="inactive_combo_text">
|
||||
Voreinstellung...
|
||||
</string>
|
||||
|
||||
<tab_container name="tabs">
|
||||
<panel name="P_Cam_Controls_1" label="Steuerung 1">
|
||||
|
|
@ -45,6 +48,11 @@
|
|||
Mouselook
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<combo_box name="preset_combo">
|
||||
<combo_box.item label="Voreinstellung verwenden" name="Use preset"/>
|
||||
</combo_box>
|
||||
<button name="gear_btn" tool_tip="Kamera-Voreinstellungen"/>
|
||||
<button label="Position..." name="camera_position_btn"/>
|
||||
</panel>
|
||||
<panel name="zoom">
|
||||
<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="floaterpreferencesviewadvanced" title="Kamera-Position">
|
||||
<text name="camera_offset_lbl">
|
||||
Kamera-Offset:
|
||||
</text>
|
||||
<text name="focus_offset_lbl">
|
||||
Fokus-Offset:
|
||||
</text>
|
||||
<text name="offset_scale_lbl">
|
||||
Kamera-Offset-Skalierung:
|
||||
</text>
|
||||
<button label="Speichern als Voreinstellung..." name="save_preset_btn" width="180"/>
|
||||
<button label="Schließen" name="close_btn" width="70"/>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<floater name="save_camera_preset" title="Kameravoreinstellung speichern">
|
||||
<string name="btn_label_save">Speichern</string>
|
||||
<string name="btn_label_replace">Ersetzen</string>
|
||||
<radio_group name="radio_save_preset">
|
||||
<radio_item label="Als neue Voreinstellung speichern" name="new_preset"/>
|
||||
<radio_item label="Voreinstellung ersetzen" name="replace_preset"/>
|
||||
</radio_group>
|
||||
<button label="Speichern" name="save"/>
|
||||
<button label="Abbrechen" name="cancel"/>
|
||||
</floater>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<floater name="Save Pref Preset" title="Voreinstellung speichern">
|
||||
<floater name="save_pref_preset" title="Grafikvoreinstellung speichern">
|
||||
<string name="title_graphic">
|
||||
Grafikvoreinstellung speichern
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -3502,6 +3502,11 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt.
|
|||
<notification name="DefaultPresetNotSaved">
|
||||
Die Standard-Voreinstellung kann nicht überschrieben werden.
|
||||
</notification>
|
||||
<notification name="PresetAlreadyExists">
|
||||
„[NAME]“ wird bereits verwendet. Sie können diese
|
||||
Voreinstellung überschreiben oder einen anderen Namen wählen
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="PresetNotDeleted">
|
||||
Fehler beim Löschen der Voreinstellung [NAME].
|
||||
</notification>
|
||||
|
|
@ -3510,7 +3515,7 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt.
|
|||
</notification>
|
||||
<notification name="ObjectMediaFailure">
|
||||
Serverfehler: Medienaktualisierung oder Fehler
|
||||
'[ERROR]'
|
||||
„[ERROR]“
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="TextChatIsMutedByModerator">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="camera_preset_item">
|
||||
<text name="preset_name" value="Standard"/>
|
||||
<button name="delete_btn" tool_tip="Voreinstellung löschen"/>
|
||||
<button name="reset_btn" tool_tip="Voreinstellung auf Standardwerte zurücksetzen"/>
|
||||
</panel>
|
||||
|
|
@ -193,6 +193,7 @@
|
|||
</text>
|
||||
<slider label="Aktiv:" name="active"/>
|
||||
<slider label="Inaktiv:" name="inactive"/>
|
||||
<slider label="Kamera / Bewegung:" name="camera_movement"/>
|
||||
<text name="console_opacity">
|
||||
Konsolen-Deckkraft:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="presets_camera_pulldown">
|
||||
<text name="Camera Presets">
|
||||
Kameravoreinstellungen
|
||||
</text>
|
||||
<button label="Kamera-Fenster öffnen" name="open_prefs_btn" tool_tip="Zeigt das Kamera-Fenster an"/>
|
||||
</panel>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
<panel.string name="buycurrencylabel">
|
||||
[AMT] L$
|
||||
</panel.string>
|
||||
<panel name="menu_search_panel" left="-440">
|
||||
<panel name="menu_search_panel" left="-463">
|
||||
<search_editor label="Menü durchs." name="search_menu_edit" tool_tip="Geben Sie hier den gewünschten Suchbegriff ein. Die Ergebnisse werden für teilweise Volltext-Treffer innerhalb des Menüs angezeigt."/>
|
||||
</panel>
|
||||
<panel name="parcel_info_panel">
|
||||
|
|
@ -24,11 +24,11 @@
|
|||
<button name="status_lightshare_btn" tool_tip="Lightshare-Einstellungen"/>
|
||||
<text name="parcel_info_text" value="(laden)" tool_tip="Name der Parzelle, auf der du dich befindest. Klicken öffnet die Land-Informationen."/>
|
||||
</panel>
|
||||
<panel name="balance_bg" left="-308">
|
||||
<panel name="balance_bg" left="-331">
|
||||
<text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="?? L$"/>
|
||||
<button label="L$-Kauf" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="206">
|
||||
<panel name="time_and_media_bg" width="229">
|
||||
<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)" width="78">
|
||||
24:00:00 PST
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,26 @@
|
|||
<?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"
|
||||
bg_opaque_image="Window_NoTitle_Foreground"
|
||||
bg_alpha_image="Window_NoTitle_Foreground"
|
||||
positioning="specified"
|
||||
right="-460"
|
||||
bottom="-50"
|
||||
follows="left|bottom"
|
||||
legacy_header_height="0"
|
||||
can_minimize="false"
|
||||
can_resize="true"
|
||||
can_close="false"
|
||||
chrome="true"
|
||||
follows="bottom"
|
||||
height="77"
|
||||
min_height="77"
|
||||
height="85"
|
||||
layout="topleft"
|
||||
name="camera_floater"
|
||||
help_topic="camera_floater"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
save_dock_state="false"
|
||||
show_title="false"
|
||||
single_instance="true"
|
||||
width="155"
|
||||
min_width="155">
|
||||
<!-- presence of the string "use_flat_ui" allows a cam floater without mode switches -->
|
||||
<floater.string
|
||||
name="use_flat_ui">
|
||||
</floater.string>
|
||||
|
||||
<!-- "flat_ui_title" is the title of the cam floater if without mode switches -->
|
||||
<floater.string
|
||||
name="flat_ui_title">
|
||||
</floater.string>
|
||||
title="Camera Controls"
|
||||
chrome="true"
|
||||
save_rect="true"
|
||||
width="340">
|
||||
<floater.string
|
||||
name="rotate_tooltip">
|
||||
Rotate Camera Around Focus
|
||||
|
|
@ -42,381 +33,243 @@
|
|||
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
|
||||
View Object
|
||||
</floater.string>
|
||||
<string name="inactive_combo_text">Use preset</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
|
||||
border="false"
|
||||
follows="top|left"
|
||||
height="123"
|
||||
layout="topleft"
|
||||
left="2"
|
||||
top_pad="-23"
|
||||
mouse_opaque="false"
|
||||
name="controls"
|
||||
width="190">
|
||||
<!--TODO: replace + - images -->
|
||||
<panel
|
||||
border="false"
|
||||
class="camera_zoom_panel"
|
||||
bottom="-1"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="zoom"
|
||||
top="0"
|
||||
width="220">
|
||||
<joystick_rotate
|
||||
follows="top|left"
|
||||
height="78"
|
||||
layout="topleft"
|
||||
left="2"
|
||||
name="cam_rotate_stick"
|
||||
quadrant="left"
|
||||
sound_flags="3"
|
||||
visible="true"
|
||||
tool_tip="Orbit camera around focus"
|
||||
top="25"
|
||||
width="78" />
|
||||
<button
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_disabled="AddItem_Disabled"
|
||||
image_selected="AddItem_Press"
|
||||
image_unselected="AddItem_Off"
|
||||
layout="topleft"
|
||||
left_pad="4"
|
||||
name="zoom_plus_btn"
|
||||
width="18"
|
||||
top="23">
|
||||
<commit_callback
|
||||
function="Zoom.plus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.plus" />
|
||||
</button>
|
||||
<slider_bar
|
||||
height="50"
|
||||
layout="topleft"
|
||||
name="zoom_slider"
|
||||
orientation="vertical"
|
||||
tool_tip="Zoom camera toward focus"
|
||||
top_pad="0"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
width="18">
|
||||
<commit_callback function="Slider.value_changed"/>
|
||||
</slider_bar>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_disabled="MinusItem_Disabled"
|
||||
image_selected="MinusItem_Press"
|
||||
image_unselected="MinusItem_Off"
|
||||
layout="topleft"
|
||||
name="zoom_minus_btn"
|
||||
top_pad="0"
|
||||
width="18">
|
||||
<commit_callback
|
||||
function="Zoom.minus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.minus" />
|
||||
</button>
|
||||
<joystick_track
|
||||
follows="top|left"
|
||||
height="16"
|
||||
image_disabled="AddItem_Disabled"
|
||||
image_selected="AddItem_Press"
|
||||
image_unselected="AddItem_Off"
|
||||
height="78"
|
||||
image_selected="Cam_Tracking_In"
|
||||
image_unselected="Cam_Tracking_Out"
|
||||
layout="topleft"
|
||||
left_delta="-2"
|
||||
name="zoom_plus_btn"
|
||||
left_pad="4"
|
||||
name="cam_track_stick"
|
||||
quadrant="left"
|
||||
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>
|
||||
|
||||
sound_flags="3"
|
||||
tool_tip="Move camera up and down, left and right"
|
||||
top="25"
|
||||
width="78"/>
|
||||
</panel>
|
||||
</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="group_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"
|
||||
follows="all"
|
||||
height="27"
|
||||
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>
|
||||
left_pad="2"
|
||||
name="buttons_panel"
|
||||
top_delta="18"
|
||||
width="120">
|
||||
<panel_camera_item
|
||||
name="front_view"
|
||||
tool_tip="Front View"
|
||||
width="18">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="Front View" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Front_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Front_On" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
tool_tip="Side View"
|
||||
width="18"
|
||||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="Side View" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Side_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Side_On" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
tool_tip="Rear View"
|
||||
width="18"
|
||||
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" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="object_view"
|
||||
tool_tip="Object View"
|
||||
width="18"
|
||||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="object_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Object_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Object_View_On" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="mouselook_view"
|
||||
tool_tip="Mouselook View"
|
||||
width="18"
|
||||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="mouselook_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="MouseLook_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="MouseLook_View_On" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="reset_view"
|
||||
tool_tip="Reset view"
|
||||
width="18"
|
||||
left_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="reset_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="StopReload_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="StopReload_Over" />
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
<combo_box
|
||||
height="23"
|
||||
left_delta="-1"
|
||||
mouse_opaque="true"
|
||||
name="preset_combo"
|
||||
top_pad="7"
|
||||
width="122">
|
||||
<combo_box.item
|
||||
label="Use preset"
|
||||
name="Use preset"
|
||||
value="default" />
|
||||
</combo_box>
|
||||
<button
|
||||
height="16"
|
||||
width="16"
|
||||
layout="topleft"
|
||||
mouse_opaque="true"
|
||||
name="gear_btn"
|
||||
tool_tip="Camera Presets"
|
||||
top_delta="3"
|
||||
left_pad="3"
|
||||
image_selected="Icon_Gear"
|
||||
image_pressed="Icon_Gear"
|
||||
image_unselected="Icon_Gear"
|
||||
is_toggle="true">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.ShowPresetsList"/>
|
||||
</button>
|
||||
<!--
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Save as preset..."
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="save_preset_btn"
|
||||
top_pad="7"
|
||||
width="143">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.Save"/>
|
||||
</button>
|
||||
-->
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Camera Position..."
|
||||
layout="topleft"
|
||||
left_delta="-125"
|
||||
name="camera_position_btn"
|
||||
top_pad="9"
|
||||
width="143">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="prefs_view_advanced"/>
|
||||
</button>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
can_resize="true"
|
||||
height="200"
|
||||
min_height="150"
|
||||
title="Camera Presets"
|
||||
layout="topleft"
|
||||
name="floater_camera_presets"
|
||||
single_instance="true"
|
||||
min_width="185"
|
||||
width="250">
|
||||
<flat_list_view
|
||||
allow_select="true"
|
||||
follows="all"
|
||||
height="165"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
multi_select="false"
|
||||
name="preset_list"
|
||||
top="20"
|
||||
width="245" />
|
||||
</floater>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
height="130"
|
||||
help_topic="floater_delete_preset"
|
||||
layout="topleft"
|
||||
name="Delete Pref Preset"
|
||||
name="delete_pref_preset"
|
||||
save_rect="true"
|
||||
title="Delete Pref Preset"
|
||||
width="300">
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="true"
|
||||
min_height="55"
|
||||
min_height="75"
|
||||
min_width="515"
|
||||
height="55"
|
||||
height="75"
|
||||
layout="topleft"
|
||||
name="HoverHeight"
|
||||
single_instance="true"
|
||||
|
|
@ -33,4 +33,13 @@
|
|||
can_edit_text="true"
|
||||
>
|
||||
</slider>
|
||||
<check_box
|
||||
control_name="HoverHeightAffectsCamera"
|
||||
follows="all"
|
||||
height="15"
|
||||
label="Affect Camera view"
|
||||
layout="topleft"
|
||||
name="BindCameraCheck"
|
||||
top_pad="10"
|
||||
width="237"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
height="130"
|
||||
help_topic="floater_load_preset"
|
||||
layout="topleft"
|
||||
name="Load Pref Preset"
|
||||
name="load_pref_preset"
|
||||
save_rect="true"
|
||||
title="Load Pref Preset"
|
||||
width="300">
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
right="-693"
|
||||
bottom="-50"
|
||||
legacy_header_height="18"
|
||||
bg_opaque_image="Window_NoTitle_Background"
|
||||
bg_opaque_image="Window_NoTitle_Foreground"
|
||||
bg_alpha_image="Window_NoTitle_Foreground"
|
||||
can_dock="false"
|
||||
can_minimize="false"
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
save_visibility="true"
|
||||
single_instance="true"
|
||||
chrome="true"
|
||||
title=""
|
||||
show_title="false"
|
||||
width="86">
|
||||
<string
|
||||
name="walk_forward_tooltip">
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
<floater.string name="free_mode_title">
|
||||
View Object
|
||||
</floater.string>
|
||||
<string name="inactive_combo_text">Use preset</string>
|
||||
<tab_container
|
||||
follows="all"
|
||||
halign="center"
|
||||
|
|
@ -73,56 +74,104 @@
|
|||
follows="all"
|
||||
height="102"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
left="10"
|
||||
name="preset_views_list"
|
||||
top_pad="0"
|
||||
width="220"
|
||||
right="-1"
|
||||
visible="false">
|
||||
<panel_camera_item
|
||||
name="front_view">
|
||||
name="front_view"
|
||||
height="20"
|
||||
top="10">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="front_view"/>
|
||||
parameter="Front View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Front_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Front_On"/>
|
||||
<panel_camera_item.text
|
||||
name="front_view_text">
|
||||
name="front_view_text"
|
||||
top="22">
|
||||
Front View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="group_view"/>
|
||||
parameter="Side View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Side_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Side_On"/>
|
||||
<panel_camera_item.text
|
||||
name="side_view_text">
|
||||
name="side_view_text"
|
||||
top="22">
|
||||
Side View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
layout="topleft"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="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"/>
|
||||
<panel_camera_item.text
|
||||
name="rear_view_text">
|
||||
name="rear_view_text"
|
||||
top="22">
|
||||
Rear View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<combo_box
|
||||
height="23"
|
||||
left="0"
|
||||
mouse_opaque="true"
|
||||
name="preset_combo"
|
||||
top_pad="1"
|
||||
width="122">
|
||||
<combo_box.item
|
||||
label="Use preset"
|
||||
name="Use preset"
|
||||
value="default" />
|
||||
</combo_box>
|
||||
<button
|
||||
height="16"
|
||||
width="16"
|
||||
layout="topleft"
|
||||
mouse_opaque="true"
|
||||
name="gear_btn"
|
||||
tool_tip="Camera Presets"
|
||||
top_delta="3"
|
||||
left_pad="3"
|
||||
image_selected="Icon_Gear"
|
||||
image_pressed="Icon_Gear"
|
||||
image_unselected="Icon_Gear"
|
||||
is_toggle="true">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.ShowPresetsList"/>
|
||||
</button>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Position..."
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="camera_position_btn"
|
||||
top_delta="-3"
|
||||
width="103">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="prefs_view_advanced"/>
|
||||
</button>
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ https://accounts.secondlife.com/change_email/
|
|||
help_topic="preferences_input_tab"
|
||||
name="input" />
|
||||
<panel
|
||||
class="panel_preference"
|
||||
class="panel_preference"
|
||||
filename="panel_preferences_move.xml"
|
||||
label="Move & View"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
height="190"
|
||||
layout="topleft"
|
||||
name="floaterpreferencesviewadvanced"
|
||||
help_topic="floaterviewadvanced"
|
||||
title="Camera Position"
|
||||
save_rect="true"
|
||||
width="280">
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
name="camera_offset_lbl"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="5"
|
||||
width="100">
|
||||
Camera offset:
|
||||
</text>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="X"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
left="10"
|
||||
name="camera_x"
|
||||
top_pad="5"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Y"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
name="camera_y"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Z"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
name="camera_z"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
name="focus_offset_lbl"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top_pad="10"
|
||||
width="100">
|
||||
Focus offset:
|
||||
</text>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="X"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
left="10"
|
||||
name="focus_x"
|
||||
top_pad="5"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Y"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
name="focus_y"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Z"
|
||||
label_width="12"
|
||||
follows="top|left"
|
||||
name="focus_z"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
name="offset_scale_lbl"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top_pad="15"
|
||||
width="260">
|
||||
Camera offset scale:
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="CameraOffsetScale"
|
||||
follows="top|left|right"
|
||||
height="16"
|
||||
top_pad="5"
|
||||
increment="0.1"
|
||||
min_val="-3"
|
||||
max_val="5"
|
||||
show_text="false"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="offset_scale_sld"
|
||||
width="196" />
|
||||
<spinner
|
||||
control_name="CameraOffsetScale"
|
||||
height="20"
|
||||
follows="top|left|right"
|
||||
left_pad="5"
|
||||
name="offset_scale_ctrl"
|
||||
min_val="-3"
|
||||
max_val="5"
|
||||
width="58">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Save as preset..."
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="save_preset_btn"
|
||||
top_pad="10"
|
||||
width="125">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.Save"/>
|
||||
</button>
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Close"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="close_btn"
|
||||
top_delta="0"
|
||||
width="125">
|
||||
<button.commit_callback
|
||||
function="Floater.Hide"
|
||||
parameter="prefs_view_advanced"/>
|
||||
</button>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
height="185"
|
||||
help_topic="floater_save_preset"
|
||||
layout="topleft"
|
||||
name="save_camera_preset"
|
||||
save_rect="true"
|
||||
title="Save Camera Preset"
|
||||
width="280">
|
||||
|
||||
<string name="btn_label_save">Save</string>
|
||||
<string name="btn_label_replace">Replace</string>
|
||||
<radio_group
|
||||
height="85"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
top="15"
|
||||
width="150"
|
||||
name="radio_save_preset">
|
||||
<radio_item
|
||||
label="Save as a new preset"
|
||||
name="new_preset"
|
||||
top="10"
|
||||
layout="topleft"
|
||||
height="16"
|
||||
value="0"/>
|
||||
<radio_item
|
||||
label="Replace a preset"
|
||||
name="replace_preset"
|
||||
layout="topleft"
|
||||
top="70"
|
||||
height="16"
|
||||
value="1"/>
|
||||
</radio_group>
|
||||
<line_editor
|
||||
commit_on_focus_lost = "true"
|
||||
follows="top|left"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
left="41"
|
||||
name="preset_txt_editor"
|
||||
width="200"
|
||||
top="45"/>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="25"
|
||||
label="Save"
|
||||
layout="topleft"
|
||||
top="145"
|
||||
left="25"
|
||||
name="save"
|
||||
width="110"/>
|
||||
<button
|
||||
follows="bottom|right"
|
||||
height="25"
|
||||
label="Cancel"
|
||||
layout="topleft"
|
||||
left_pad="20"
|
||||
name="cancel"
|
||||
width="110"/>
|
||||
<!-- *HACK to correctly draw drop-down list over the buttons-->
|
||||
<combo_box
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
left="41"
|
||||
name="preset_combo"
|
||||
top_delta="-40"
|
||||
width="200"/>
|
||||
</floater>
|
||||
|
|
@ -4,14 +4,11 @@
|
|||
height="145"
|
||||
help_topic="floater_save_preset"
|
||||
layout="topleft"
|
||||
name="Save Pref Preset"
|
||||
name="save_pref_preset"
|
||||
save_rect="true"
|
||||
title="Save Pref Preset"
|
||||
title="Save Graphic Preset"
|
||||
width="300">
|
||||
|
||||
<string name="title_graphic">Save Graphic Preset</string>
|
||||
<string name="title_camera">Save Camera Preset</string>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="32"
|
||||
|
|
|
|||
|
|
@ -9150,6 +9150,18 @@ Error saving preset [NAME].
|
|||
Can not overwrite default preset.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="PresetAlreadyExists"
|
||||
type="alertmodal">
|
||||
'[NAME]' is in use. You may replace
|
||||
this preset or choose another name.
|
||||
<tag>fail</tag>
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="PresetNotDeleted"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
follows="top|right|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="camera_preset_item"
|
||||
top="0"
|
||||
width="280">
|
||||
<icon
|
||||
follows="top|right|left"
|
||||
height="20"
|
||||
image_name="ListItem_Over"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="hovered_icon"
|
||||
top="0"
|
||||
visible="false"
|
||||
width="380" />
|
||||
<icon
|
||||
height="20"
|
||||
follows="top|right|left"
|
||||
image_name="ListItem_Select"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="selected_icon"
|
||||
top="0"
|
||||
visible="false"
|
||||
width="380" />
|
||||
<text
|
||||
follows="left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
parse_urls="false"
|
||||
use_ellipses="true"
|
||||
name="preset_name"
|
||||
text_color="White"
|
||||
top="2"
|
||||
value="Default"
|
||||
width="159" />
|
||||
<button
|
||||
follows="right"
|
||||
image_selected="TrashItem_Off"
|
||||
image_pressed="TrashItem_Off"
|
||||
image_unselected="TrashItem_Off"
|
||||
is_toggle="true"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
right="-10"
|
||||
name="delete_btn"
|
||||
tool_tip="Delete preset"
|
||||
top="3"
|
||||
height="18"
|
||||
width="18" >
|
||||
<button.commit_callback
|
||||
function="CameraPresets.Delete"/>
|
||||
</button>
|
||||
<button
|
||||
follows="right"
|
||||
image_selected="Refresh_Off"
|
||||
image_pressed="Refresh_Off"
|
||||
image_unselected="Refresh_Off"
|
||||
is_toggle="true"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
right="-10"
|
||||
name="reset_btn"
|
||||
tool_tip="Reset preset to default"
|
||||
top="2"
|
||||
height="20"
|
||||
width="20" >
|
||||
<button.commit_callback
|
||||
function="CameraPresets.Reset"/>
|
||||
</button>
|
||||
</panel>
|
||||
|
|
@ -1734,6 +1734,24 @@
|
|||
show_text="true"
|
||||
top_pad="2"
|
||||
width="415" />
|
||||
<slider
|
||||
can_edit_text="false"
|
||||
control_name="CameraOpacity"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0.95"
|
||||
layout="topleft"
|
||||
label_width="115"
|
||||
label="Camera / Movement:"
|
||||
left="50"
|
||||
max_val="1.00"
|
||||
min_val="0.00"
|
||||
name="camera_movement"
|
||||
show_text="true"
|
||||
top_pad="2"
|
||||
width="415" />
|
||||
<text
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -266,16 +266,6 @@
|
|||
text_color="White_25">
|
||||
(requires restart)
|
||||
</text>
|
||||
<check_box
|
||||
top_pad="-1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Show the default camera controls minifloater always as opaque"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="FSAlwaysOpaqueCameraControls"
|
||||
width="350"
|
||||
control_name="FSAlwaysOpaqueCameraControls"/>
|
||||
<check_box
|
||||
top_pad="3"
|
||||
follows="left|top"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
background_opaque="true"
|
||||
background_visible="true"
|
||||
bg_opaque_image="Volume_Background"
|
||||
bg_alpha_image="Volume_Background"
|
||||
border_visible="false"
|
||||
border="false"
|
||||
chrome="true"
|
||||
follows="bottom"
|
||||
height="157"
|
||||
layout="topleft"
|
||||
name="presets_camera_pulldown"
|
||||
width="225">
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
top="4"
|
||||
left_delta="5"
|
||||
font.style="BOLD"
|
||||
name="Camera Presets"
|
||||
width="200">
|
||||
Camera Presets
|
||||
</text>
|
||||
<scroll_list
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
column_padding="0"
|
||||
height="100"
|
||||
width="215"
|
||||
draw_heading="false"
|
||||
draw_stripes="false"
|
||||
bg_stripe_color="0.25 0.25 0.25 0.25"
|
||||
top_delta="15"
|
||||
left_delta="0"
|
||||
name="preset_camera_list">
|
||||
<scroll_list.columns
|
||||
name="icon"
|
||||
width="16" />
|
||||
<scroll_list.columns
|
||||
relative_width="1"
|
||||
name="preset_name" />
|
||||
<scroll_list.commit_callback
|
||||
function="PresetsCamera.RowClick" />
|
||||
</scroll_list>
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="horiz_separator"
|
||||
top_delta="105"
|
||||
width="215" />
|
||||
<button
|
||||
name="open_prefs_btn"
|
||||
label="Open Camera floater"
|
||||
tool_tip="Bring up Camera floater"
|
||||
top_delta="3"
|
||||
left="15"
|
||||
height="22"
|
||||
width="200">
|
||||
<button.commit_callback
|
||||
function="Presets.toggleCameraFloater" />
|
||||
</button>
|
||||
</panel>
|
||||
|
|
@ -233,7 +233,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-458"
|
||||
left="-481"
|
||||
top="0"
|
||||
width="120"
|
||||
follows="right|top"
|
||||
|
|
@ -274,7 +274,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-326"
|
||||
left="-349"
|
||||
width="77"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
|
|
@ -321,7 +321,7 @@
|
|||
<panel
|
||||
height="18"
|
||||
left_pad="4"
|
||||
width="224"
|
||||
width="247"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
name="time_and_media_bg"
|
||||
|
|
@ -347,11 +347,20 @@
|
|||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon"
|
||||
image_pressed="Presets_Icon"
|
||||
image_unselected="Cam_FreeCam_Off"
|
||||
image_pressed="Cam_FreeCam_Off"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon"
|
||||
name="presets_icon_camera"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon_Graphic"
|
||||
image_pressed="Presets_Icon_Graphic"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon_graphic"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
width="180">
|
||||
<panel_camera_item.icon_over
|
||||
follows="top|left"
|
||||
height="25"
|
||||
height="18"
|
||||
image_name="ListItem_Over"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
|
|
@ -15,10 +15,10 @@
|
|||
top="25"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="177" />
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
follows="top|left"
|
||||
height="25"
|
||||
height="18"
|
||||
image_name="ListItem_Select"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
|
|
@ -27,10 +27,10 @@
|
|||
top="25"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="177" />
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
follows="top|left"
|
||||
height="25"
|
||||
height="18"
|
||||
image_name="Icon_For_Sale"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
|
|
@ -39,10 +39,10 @@
|
|||
tab_stop="false"
|
||||
top="25"
|
||||
top_pad="10"
|
||||
width="25" />
|
||||
width="18" />
|
||||
<panel_camera_item.selected_picture
|
||||
follows="top|left"
|
||||
height="25"
|
||||
height="18"
|
||||
image_name="Cam_Rotate_In"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
top="25"
|
||||
top_pad="8"
|
||||
visible="false"
|
||||
width="25" />
|
||||
width="18" />
|
||||
<panel_camera_item.text
|
||||
follows="top|left|right"
|
||||
font="SansSerifMedium"
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@
|
|||
<button name="status_lightshare_btn" tool_tip="Configuración Lightshare"/>
|
||||
<text name="parcel_info_text" tool_tip="Nombre de la parcela en la que te encuentras. Haz clic para obtener información sobre la misma." value="(cargando...)"/>
|
||||
</panel>
|
||||
<panel name="balance_bg" left="-308">
|
||||
<panel name="balance_bg" left="-331">
|
||||
<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="?? L$"/>
|
||||
<button name="buyL" label="COMPRAR L$" halign="left" tool_tip="Pulsa para comprar más L$" left_pad="-15"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="206">
|
||||
<panel name="time_and_media_bg" width="229">
|
||||
<text name="TimeText" tool_tip="Hora actual (costa del Pacífico de EEUU)" width="78">
|
||||
24:00:00 PST
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@
|
|||
<button name="status_lightshare_btn" tool_tip="Impostazioni Lightshare"/>
|
||||
<text tool_tip="Nome del lotto su cui ti trovi. Clic per aprire le informazioni sul lotto." name="parcel_info_text" value="(caricamento...)"/>
|
||||
</panel>
|
||||
<panel name="balance_bg">
|
||||
<panel name="balance_bg" left="-308">
|
||||
<text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ ??"/>
|
||||
<button label="Compra L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg">
|
||||
<panel name="time_and_media_bg" width="229">
|
||||
<text name="TimeText" tool_tip="Orario attuale (Pacifico)"/>
|
||||
<button name="stream_toggle_btn" tool_tip="Attiva/ferma musica nel lotto"/>
|
||||
<button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/>
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@
|
|||
<button name="status_lightshare_btn" tool_tip="Lightshare-Einstellungen"/>
|
||||
<text name="parcel_info_text" value="(laden)" tool_tip="Name der Parzelle, auf der du dich befindest. Klicken öffnet die Land-Informationen."/>
|
||||
</panel>
|
||||
<panel name="menu_search_panel" left="-563">
|
||||
<panel name="menu_search_panel" left="-586">
|
||||
<search_editor label="Menü durchs." name="search_menu_edit" tool_tip="Den Suchbegriff hier eingeben. Ergebnisse werden für Treffer im Namen eines Menüeintrags angezeigt."/>
|
||||
</panel>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="?? L$"/>
|
||||
<button label="L$-Kauf" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<icon name="dd_icon" tool_tip="Draw Distance"/>
|
||||
<slider tool_tip="Maximale Distanz von der Kamera, die angezeigt werden soll (in Meter)" name="drawdistance"/>
|
||||
<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)" width="78">24:00:00 PST</text>
|
||||
|
|
|
|||
|
|
@ -1,410 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<!-- header_height="0"-->
|
||||
<floater
|
||||
legacy_header_height="0"
|
||||
header_height="0"
|
||||
bg_alpha_color="SL-Background_86"
|
||||
can_dock="false"
|
||||
can_minimize="false"
|
||||
can_resize="true"
|
||||
can_close="false"
|
||||
chrome="true"
|
||||
follows="bottom"
|
||||
height="77"
|
||||
min_height="25"
|
||||
layout="topleft"
|
||||
name="camera_floater"
|
||||
help_topic="camera_floater"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
save_dock_state="false"
|
||||
single_instance="true"
|
||||
width="155"
|
||||
min_width="155">
|
||||
<!-- presence of the string "use_flat_ui" allows a cam floater without mode switches -->
|
||||
<floater.string
|
||||
name="use_flat_ui">
|
||||
</floater.string>
|
||||
|
||||
<!-- "flat_ui_title" is the title of the cam floater if without mode switches -->
|
||||
<floater.string
|
||||
name="flat_ui_title">
|
||||
</floater.string>
|
||||
<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="25"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
top="0"
|
||||
follows="top|left"
|
||||
name="buttons_view"
|
||||
width="60">
|
||||
<panel_camera_item
|
||||
name="front_view"
|
||||
tool_tip="Front view"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="front_view" />
|
||||
<panel_camera_item.icon_over
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Front_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
width="18"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="20"
|
||||
top_delta="0">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="group_view" />
|
||||
<panel_camera_item.icon_over
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Side_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
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
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Cam_Preset_Back_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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="25"
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
left_pad="0"
|
||||
top="0"
|
||||
name="buttons"
|
||||
width="60">
|
||||
<panel_camera_item
|
||||
name="object_view"
|
||||
tool_tip="Object view"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
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
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="Object_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
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
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="MouseLook_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
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
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.icon_selected
|
||||
height="18"
|
||||
width="18" />
|
||||
<panel_camera_item.picture
|
||||
height="18"
|
||||
width="18"
|
||||
image_name="StopReload_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
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>
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
<floater.string name="free_mode_title">
|
||||
View Object
|
||||
</floater.string>
|
||||
<string name="inactive_combo_text">Use preset</string>
|
||||
<tab_container
|
||||
follows="all"
|
||||
halign="center"
|
||||
|
|
@ -73,56 +74,104 @@
|
|||
follows="all"
|
||||
height="102"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
left="10"
|
||||
name="preset_views_list"
|
||||
top_pad="0"
|
||||
width="220"
|
||||
right="-1"
|
||||
visible="false">
|
||||
<panel_camera_item
|
||||
name="front_view">
|
||||
name="front_view"
|
||||
height="20"
|
||||
top="10">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="front_view"/>
|
||||
parameter="Front View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Front_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Front_On"/>
|
||||
<panel_camera_item.text
|
||||
name="front_view_text">
|
||||
name="front_view_text"
|
||||
top="22">
|
||||
Front View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="group_view"/>
|
||||
parameter="Side View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Side_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Side_On"/>
|
||||
<panel_camera_item.text
|
||||
name="side_view_text">
|
||||
name="side_view_text"
|
||||
top="22">
|
||||
Side View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
layout="topleft"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="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"/>
|
||||
<panel_camera_item.text
|
||||
name="rear_view_text">
|
||||
name="rear_view_text"
|
||||
top="22">
|
||||
Rear View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<combo_box
|
||||
height="23"
|
||||
left="0"
|
||||
mouse_opaque="true"
|
||||
name="preset_combo"
|
||||
top_pad="1"
|
||||
width="122">
|
||||
<combo_box.item
|
||||
label="Use preset"
|
||||
name="Use preset"
|
||||
value="default" />
|
||||
</combo_box>
|
||||
<button
|
||||
height="16"
|
||||
width="16"
|
||||
layout="topleft"
|
||||
mouse_opaque="true"
|
||||
name="gear_btn"
|
||||
tool_tip="Camera Presets"
|
||||
top_delta="3"
|
||||
left_pad="3"
|
||||
image_selected="Icon_Gear"
|
||||
image_pressed="Icon_Gear"
|
||||
image_unselected="Icon_Gear"
|
||||
is_toggle="true">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.ShowPresetsList"/>
|
||||
</button>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Position..."
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="camera_position_btn"
|
||||
top_delta="-3"
|
||||
width="103">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="prefs_view_advanced"/>
|
||||
</button>
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-581"
|
||||
left="-603"
|
||||
top="0"
|
||||
width="110"
|
||||
follows="right|top"
|
||||
|
|
@ -272,7 +272,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-449"
|
||||
left="-472"
|
||||
width="77"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
<panel
|
||||
height="18"
|
||||
left_pad="5"
|
||||
width="346"
|
||||
width="369"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
name="time_and_media_bg"
|
||||
|
|
@ -376,11 +376,20 @@
|
|||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon"
|
||||
image_pressed="Presets_Icon"
|
||||
image_unselected="Cam_FreeCam_Off"
|
||||
image_pressed="Cam_FreeCam_Off"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon"
|
||||
name="presets_icon_camera"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon_Graphic"
|
||||
image_pressed="Presets_Icon_Graphic"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon_graphic"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel_camera_item
|
||||
background_visible="false"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
width="18">
|
||||
<panel_camera_item.icon_over
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_name="ListItem_Over"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
layout="topleft"
|
||||
name="hovered_icon"
|
||||
top="18"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="152" />
|
||||
<panel_camera_item.icon_selected
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_name="PushButton_On_Selected"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="selected_icon"
|
||||
top="18"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="152" />
|
||||
<panel_camera_item.picture
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_name="Icon_For_Sale"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="picture"
|
||||
tab_stop="false"
|
||||
top="18"
|
||||
top_pad="10"
|
||||
width="18" />
|
||||
<panel_camera_item.selected_picture
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_name="Cam_Rotate_In"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="selected_picture"
|
||||
tab_stop="false"
|
||||
top="18"
|
||||
top_pad="8"
|
||||
visible="false"
|
||||
width="18" />
|
||||
<panel_camera_item.text
|
||||
follows="top|left|right"
|
||||
font="SansSerifMedium"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
name="picture_name"
|
||||
text_color="White"
|
||||
top="16"
|
||||
use_ellipses="true"
|
||||
width="120"
|
||||
word_wrap="false" >
|
||||
Text
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
|
|
@ -17,11 +17,11 @@
|
|||
<panel.string name="buycurrencylabel">
|
||||
[AMT] L$
|
||||
</panel.string>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$"/>
|
||||
<button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$" left_pad="-15"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<icon name="dd_icon" tool_tip="Distancia de dibujo"/>
|
||||
<slider tool_tip="Distancia máxima desde la cámara, en metros a la que se dibujarán objetos" name="drawdistance"/>
|
||||
<text name="TimeText" tool_tip="Hora actual (costa del Pacífico de EEUU)" width="78">24:00:00 PST</text>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
<panel.string name="time">[hour24, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [timezone, datetime, slt]</panel.string>
|
||||
<panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt]. [month, datetime, slt] [year, datetime, slt]</panel.string>
|
||||
<panel.string name="buycurrencylabel">[AMT] L$</panel.string>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ ??"/>
|
||||
<button label="Compra L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<text name="TimeText" tool_tip="Orario attuale (Pacifico)" width="78">24:00:00 PST</text>
|
||||
<button name="stream_toggle_btn" tool_tip="Attiva/Ferma musica nella parcella"/>
|
||||
<button name="media_toggle_btn" tool_tip="Attiva/Ferma tutti i media (musica, video, pagine Web)"/>
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@
|
|||
<button name="status_lightshare_btn" tool_tip="Lightshare-Einstellungen"/>
|
||||
<text name="parcel_info_text" value="(laden)" tool_tip="Name der Parzelle, auf der du dich befindest. Klicken öffnet die Land-Informationen."/>
|
||||
</panel>
|
||||
<panel name="menu_search_panel" left="-563">
|
||||
<panel name="menu_search_panel" left="-586">
|
||||
<search_editor label="Menü durchs." name="search_menu_edit" tool_tip="Den Suchbegriff hier eingeben. Ergebnisse werden für Treffer im Namen eines Menüeintrags angezeigt."/>
|
||||
</panel>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="?? L$"/>
|
||||
<button label="L$-Kauf" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<icon name="dd_icon" tool_tip="Draw Distance"/>
|
||||
<slider tool_tip="Maximale Distanz von der Kamera, die angezeigt werden soll (in Meter)" name="drawdistance"/>
|
||||
<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)" width="78">24:00:00 PST</text>
|
||||
|
|
|
|||
|
|
@ -1,338 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
can_dock="false"
|
||||
can_minimize="false"
|
||||
can_resize="true"
|
||||
can_close="false"
|
||||
chrome="true"
|
||||
follows="bottom"
|
||||
min_width="188"
|
||||
min_height="100"
|
||||
height="102"
|
||||
layout="topleft"
|
||||
name="camera_floater"
|
||||
help_topic="camera_floater"
|
||||
bg_alpha_color="SL-CustomBackground"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
save_dock_state="false"
|
||||
single_instance="true"
|
||||
width="188">
|
||||
<panel
|
||||
border="false"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
follows="right|top|left"
|
||||
left="55"
|
||||
bottom_delta="18"
|
||||
name="buttons"
|
||||
width="78">
|
||||
<button
|
||||
height="23"
|
||||
label=""
|
||||
layout="topleft"
|
||||
left="1"
|
||||
is_toggle="true"
|
||||
image_overlay="Cam_Avatar_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
name="presets_btn"
|
||||
tab_stop="false"
|
||||
tool_tip="Preset Views"
|
||||
top="0"
|
||||
width="25">
|
||||
</button>
|
||||
<button
|
||||
height="23"
|
||||
label=""
|
||||
layout="topleft"
|
||||
left_pad="1"
|
||||
is_toggle="true"
|
||||
image_overlay="PanOrbit_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
name="pan_btn"
|
||||
tab_stop="false"
|
||||
tool_tip="Orbit Zoom Pan"
|
||||
width="25">
|
||||
</button>
|
||||
<button
|
||||
height="23"
|
||||
label=""
|
||||
layout="topleft"
|
||||
left_pad="1"
|
||||
image_overlay="Cam_FreeCam_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
name="avatarview_btn"
|
||||
tab_stop="false"
|
||||
tool_tip="Camera modes"
|
||||
width="25">
|
||||
</button>
|
||||
</panel>
|
||||
<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">
|
||||
View
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="pan_mode_title">
|
||||
Camera
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="presets_mode_title">
|
||||
Preset
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="free_mode_title">
|
||||
Mode
|
||||
</floater.string>
|
||||
<panel
|
||||
border="false"
|
||||
height="110"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
left="2"
|
||||
top="0"
|
||||
mouse_opaque="false"
|
||||
name="controls"
|
||||
width="184">
|
||||
<panel
|
||||
follows="all"
|
||||
height="102"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
name="preset_views_list"
|
||||
top="24"
|
||||
width="170"
|
||||
visible="false">
|
||||
<panel_camera_item
|
||||
name="front_view">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="front_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Front_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Front_On" />
|
||||
<panel_camera_item.text
|
||||
name="front_view_text">
|
||||
Front View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
top_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="group_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Side_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Side_On" />
|
||||
<panel_camera_item.text
|
||||
name="side_view_text">
|
||||
Side View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
layout="topleft"
|
||||
top_pad="2">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="rear_view" />
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Back_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Back_On" />
|
||||
<panel_camera_item.text
|
||||
name="rear_view_text">
|
||||
Rear View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
height="68"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
name="camera_modes_list"
|
||||
top="24"
|
||||
width="170"
|
||||
visible="false">
|
||||
<panel_camera_item
|
||||
name="object_view">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="object_view" />
|
||||
<panel_camera_item.text
|
||||
name="object_view_text">
|
||||
Object View
|
||||
</panel_camera_item.text>
|
||||
<panel_camera_item.picture
|
||||
image_name="Object_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Object_View_On" />
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="mouselook_view"
|
||||
layout="topleft">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="mouselook_view" />
|
||||
<panel_camera_item.text
|
||||
name="mouselook_view_text">
|
||||
Mouselook
|
||||
</panel_camera_item.text>
|
||||
<panel_camera_item.picture
|
||||
image_name="MouseLook_View_Off" />
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="MouseLook_View_On" />
|
||||
</panel_camera_item>
|
||||
</panel>
|
||||
<!-- Camera controls panel -->
|
||||
<panel
|
||||
border="false"
|
||||
class="camera_zoom_panel"
|
||||
follows="all"
|
||||
height="100"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="zoom"
|
||||
top="0"
|
||||
visible="true"
|
||||
width="184">
|
||||
|
||||
<!-- Camera joystick controls layout starts here -->
|
||||
<layout_stack
|
||||
top="20"
|
||||
enabled="true"
|
||||
height="80"
|
||||
left="2"
|
||||
mouse_opaque="true"
|
||||
name="stack"
|
||||
orientation="horizontal"
|
||||
width="180"
|
||||
follows="all">
|
||||
|
||||
<!-- Camera rotate layout panel -->
|
||||
<layout_panel
|
||||
name="panel_rotate"
|
||||
user_resize="false"
|
||||
height="78"
|
||||
width="78">
|
||||
|
||||
<joystick_rotate
|
||||
follows="all"
|
||||
height="78"
|
||||
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"
|
||||
top="0"
|
||||
width="78"
|
||||
held_down_delay.seconds="0.0"/>
|
||||
</layout_panel>
|
||||
|
||||
<!-- Camera zoom layout panel -->
|
||||
<layout_panel
|
||||
name="panel_zoom"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
height="78"
|
||||
width="18">
|
||||
|
||||
<button
|
||||
follows="right|top"
|
||||
height="18"
|
||||
image_disabled="AddItem_Disabled"
|
||||
image_selected="AddItem_Press"
|
||||
image_unselected="AddItem_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="zoom_plus_btn"
|
||||
tool_tip="Zoom in"
|
||||
width="18"
|
||||
top="0">
|
||||
<commit_callback
|
||||
function="Zoom.plus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.plus" />
|
||||
</button>
|
||||
<slider_bar
|
||||
height="42"
|
||||
layout="topleft"
|
||||
name="zoom_slider"
|
||||
orientation="vertical"
|
||||
follows="top|right|bottom"
|
||||
tool_tip="Zoom camera toward focus"
|
||||
top_pad="0"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
width="18">
|
||||
<commit_callback function="Slider.value_changed"/>
|
||||
</slider_bar>
|
||||
<button
|
||||
follows="bottom|right"
|
||||
height="18"
|
||||
image_disabled="MinusItem_Disabled"
|
||||
image_selected="MinusItem_Press"
|
||||
image_unselected="MinusItem_Off"
|
||||
layout="topleft"
|
||||
name="zoom_minus_btn"
|
||||
tool_tip="Zoom out"
|
||||
top_pad="0"
|
||||
width="18">
|
||||
<commit_callback
|
||||
function="Zoom.minus" />
|
||||
<mouse_held_callback
|
||||
function="Zoom.minus" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
|
||||
<!-- Camera movement layout panel -->
|
||||
<layout_panel
|
||||
name="panel_track"
|
||||
user_resize="false"
|
||||
height="78"
|
||||
width="78">
|
||||
|
||||
<joystick_track
|
||||
follows="all"
|
||||
height="78"
|
||||
image_selected="Cam_Tracking_In"
|
||||
image_unselected="Cam_Tracking_Out"
|
||||
layout="topleft"
|
||||
left="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"
|
||||
visible="true"
|
||||
width="78"/>
|
||||
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,422 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
positioning="specified"
|
||||
right="-693"
|
||||
bottom="-50"
|
||||
legacy_header_height="18"
|
||||
bg_opaque_color="SL-CustomBackground"
|
||||
bg_alpha_color="SL-CustomBackground"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
can_dock="false"
|
||||
can_minimize="false"
|
||||
can_close="false"
|
||||
can_resize="true"
|
||||
height="75"
|
||||
layout="topleft"
|
||||
min_height="82"
|
||||
min_width="86"
|
||||
name="move_floater"
|
||||
help_topic=""
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
single_instance="true"
|
||||
chrome="true"
|
||||
show_title="false"
|
||||
width="86">
|
||||
<string
|
||||
name="walk_forward_tooltip">
|
||||
Walk Forward (press Up Arrow or W)
|
||||
</string>
|
||||
<string
|
||||
name="walk_back_tooltip">
|
||||
Walk Backwards (press Down Arrow or S)
|
||||
</string>
|
||||
<string
|
||||
name="walk_left_tooltip">
|
||||
Walk left (press Shift + Left Arrow or A)
|
||||
</string>
|
||||
<string
|
||||
name="walk_right_tooltip">
|
||||
Walk right (press Shift + Right Arrow or D)
|
||||
</string>
|
||||
<string
|
||||
name="run_forward_tooltip">
|
||||
Run Forward (press Up Arrow or W)
|
||||
</string>
|
||||
<string
|
||||
name="run_back_tooltip">
|
||||
Run Backwards (press Down Arrow or S)
|
||||
</string>
|
||||
<string
|
||||
name="run_left_tooltip">
|
||||
Run left (press Shift + Left Arrow or A)
|
||||
</string>
|
||||
<string
|
||||
name="run_right_tooltip">
|
||||
Run right (press Shift + Right Arrow or D)
|
||||
</string>
|
||||
<string
|
||||
name="fly_forward_tooltip">
|
||||
Fly Forward (press Up Arrow or W)
|
||||
</string>
|
||||
<string
|
||||
name="fly_back_tooltip">
|
||||
Fly Backwards (press Down Arrow or S)
|
||||
</string>
|
||||
<string
|
||||
name="fly_left_tooltip">
|
||||
Fly left (press Shift + Left Arrow or A)
|
||||
</string>
|
||||
<string
|
||||
name="fly_right_tooltip">
|
||||
Fly right (press Shift + Right Arrow or D)
|
||||
</string>
|
||||
<string
|
||||
name="fly_up_tooltip">
|
||||
Fly up (press E)
|
||||
</string>
|
||||
<string
|
||||
name="fly_down_tooltip">
|
||||
Fly down (press C)
|
||||
</string>
|
||||
<string
|
||||
name="jump_tooltip">
|
||||
Jump (press E)
|
||||
</string>
|
||||
<string
|
||||
name="crouch_tooltip">
|
||||
Crouch (press C)
|
||||
</string>
|
||||
<string
|
||||
name="walk_title">
|
||||
</string>
|
||||
<string
|
||||
name="run_title">
|
||||
</string>
|
||||
<string
|
||||
name="fly_title">
|
||||
</string>
|
||||
<panel
|
||||
border="false"
|
||||
top="1"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
mouse_opaque="false"
|
||||
name="panel_actions"
|
||||
height="72"
|
||||
width="80">
|
||||
<layout_stack
|
||||
border_size="0"
|
||||
top="0"
|
||||
enabled="true"
|
||||
height="72"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="ls_vertical"
|
||||
orientation="vertical"
|
||||
width="80"
|
||||
follows="all">
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_row1"
|
||||
user_resize="false"
|
||||
width="80"
|
||||
height="25">
|
||||
<layout_stack
|
||||
border_size="0"
|
||||
top="0"
|
||||
enabled="true"
|
||||
height="25"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="ls_horizontal1"
|
||||
orientation="horizontal"
|
||||
width="80"
|
||||
follows="all">
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col1_1"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<button
|
||||
height="25"
|
||||
follows="all"
|
||||
image_selected="Movement_TurnLeft_On"
|
||||
image_pressed_selected="Movement_TurnLeft_On"
|
||||
image_unselected="Movement_TurnLeft_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="turn left btn"
|
||||
width="20"
|
||||
scale_image="true"
|
||||
tool_tip="Turn left (press Left Arrow or A)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col1_2"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<joystick_turn
|
||||
follows="all"
|
||||
height="25"
|
||||
image_selected="Movement_Forward_On"
|
||||
image_pressed_selected="Movement_Forward_On"
|
||||
image_unselected="Movement_Forward_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="forward btn"
|
||||
quadrant="up"
|
||||
width="20"
|
||||
scale_image="true"
|
||||
tool_tip="Walk forward (press up arrow or W)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col1_3"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<button
|
||||
height="25"
|
||||
follows="all"
|
||||
image_selected="Movement_TurnRight_On"
|
||||
image_pressed_selected="Movement_TurnRight_On"
|
||||
image_unselected="Movement_TurnRight_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
width="20"
|
||||
name="turn right btn"
|
||||
scale_image="true"
|
||||
tool_tip="Turn right (press Right Arrow or D)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col1_4"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<button
|
||||
follows="all"
|
||||
height="25"
|
||||
image_selected="Movement_Up_On"
|
||||
image_pressed_selected="Movement_Up_On"
|
||||
image_unselected="Movement_Up_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="move up btn"
|
||||
scale_image="true"
|
||||
tool_tip="Fly up (press E)"
|
||||
top="0"
|
||||
width="20"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_row2"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="80">
|
||||
<layout_stack
|
||||
border_size="0"
|
||||
top="0"
|
||||
enabled="true"
|
||||
height="25"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="ls_horizontal2"
|
||||
orientation="horizontal"
|
||||
width="80"
|
||||
follows="all">
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col2_1"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<joystick_slide
|
||||
height="25"
|
||||
follows="all"
|
||||
image_selected="Movement_Left_On"
|
||||
image_pressed_selected="Movement_Left_On"
|
||||
image_unselected="Movement_Left_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="move left btn"
|
||||
quadrant="left"
|
||||
width="20"
|
||||
scale_image="true"
|
||||
tool_tip="Walk left (press Shift + Left Arrow or A)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col2_2"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<joystick_turn
|
||||
follows="all"
|
||||
height="25"
|
||||
image_selected="Movement_Backward_On"
|
||||
image_pressed_selected="Movement_Backward_On"
|
||||
image_unselected="Movement_Backward_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="backward btn"
|
||||
quadrant="down"
|
||||
width="20"
|
||||
scale_image="true"
|
||||
tool_tip="Walk backward (press down arrow or S)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col2_3"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<joystick_slide
|
||||
height="25"
|
||||
follows="all"
|
||||
image_selected="Movement_Right_On"
|
||||
image_pressed_selected="Movement_Right_On"
|
||||
image_unselected="Movement_Right_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="move right btn"
|
||||
quadrant="right"
|
||||
width="20"
|
||||
scale_image="true"
|
||||
tool_tip="Walk right (press Shift + Right Arrow or D)"
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col2_4"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="20">
|
||||
<button
|
||||
follows="all"
|
||||
height="25"
|
||||
image_selected="Movement_Down_On"
|
||||
image_pressed_selected="Movement_Down_On"
|
||||
image_unselected="Movement_Down_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="move down btn"
|
||||
scale_image="true"
|
||||
tool_tip="Fly down (press C)"
|
||||
top="0"
|
||||
width="20"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_row3"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
height="25"
|
||||
width="80">
|
||||
<layout_stack
|
||||
border_size="0"
|
||||
top="0"
|
||||
enabled="true"
|
||||
height="21"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="ls_horizontal3"
|
||||
orientation="horizontal"
|
||||
width="80"
|
||||
follows="all">
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col3_1"
|
||||
user_resize="false"
|
||||
height="21"
|
||||
width="1"/>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="modes_container"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
height="21"
|
||||
width="78">
|
||||
<!-- Width and height of this panel should be synchronized with panel_stand_stop_flying.xml -->
|
||||
<panel
|
||||
mouse_opaque="false"
|
||||
border="false"
|
||||
height="21"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_modes"
|
||||
top_pad="2"
|
||||
width="78">
|
||||
<button
|
||||
follows="left|bottom"
|
||||
height="19"
|
||||
image_overlay="Move_Walk_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
layout="topleft"
|
||||
name="mode_walk_btn"
|
||||
left="0"
|
||||
pad_right="0"
|
||||
tool_tip="Walking mode"
|
||||
top="0"
|
||||
width="26" />
|
||||
<button
|
||||
follows="left|bottom"
|
||||
height="19"
|
||||
image_overlay="Move_Run_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="mode_run_btn"
|
||||
pad_left="0"
|
||||
pad_right="0"
|
||||
tool_tip="Running mode"
|
||||
top="0"
|
||||
width="26" />
|
||||
<button
|
||||
follows="left|bottom"
|
||||
height="19"
|
||||
image_overlay="Move_Fly_Off"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="mode_fly_btn"
|
||||
pad_left="0"
|
||||
pad_right="0"
|
||||
tool_tip="Flying mode"
|
||||
top="0"
|
||||
width="26" />
|
||||
</panel>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
name="lp_col3_3"
|
||||
user_resize="false"
|
||||
height="21"
|
||||
width="1"/>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
<floater.string name="free_mode_title">
|
||||
View Object
|
||||
</floater.string>
|
||||
<string name="inactive_combo_text">Use preset</string>
|
||||
<tab_container
|
||||
follows="all"
|
||||
halign="center"
|
||||
|
|
@ -73,56 +74,104 @@
|
|||
follows="all"
|
||||
height="102"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
left="10"
|
||||
name="preset_views_list"
|
||||
top_pad="0"
|
||||
width="220"
|
||||
right="-1"
|
||||
visible="false">
|
||||
<panel_camera_item
|
||||
name="front_view">
|
||||
name="front_view"
|
||||
height="20"
|
||||
top="10">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="front_view"/>
|
||||
parameter="Front View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Front_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Front_On"/>
|
||||
<panel_camera_item.text
|
||||
name="front_view_text">
|
||||
name="front_view_text"
|
||||
top="22">
|
||||
Front View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="group_view"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="group_view"/>
|
||||
parameter="Side View"/>
|
||||
<panel_camera_item.picture
|
||||
image_name="Cam_Preset_Side_Off"/>
|
||||
<panel_camera_item.selected_picture
|
||||
image_name="Cam_Preset_Side_On"/>
|
||||
<panel_camera_item.text
|
||||
name="side_view_text">
|
||||
name="side_view_text"
|
||||
top="22">
|
||||
Side View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<panel_camera_item
|
||||
name="rear_view"
|
||||
layout="topleft"
|
||||
top_pad="4">
|
||||
height="20"
|
||||
top_pad="6">
|
||||
<panel_camera_item.mousedown_callback
|
||||
function="CameraPresets.ChangeView"
|
||||
parameter="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"/>
|
||||
<panel_camera_item.text
|
||||
name="rear_view_text">
|
||||
name="rear_view_text"
|
||||
top="22">
|
||||
Rear View
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
<combo_box
|
||||
height="23"
|
||||
left="0"
|
||||
mouse_opaque="true"
|
||||
name="preset_combo"
|
||||
top_pad="1"
|
||||
width="122">
|
||||
<combo_box.item
|
||||
label="Use preset"
|
||||
name="Use preset"
|
||||
value="default" />
|
||||
</combo_box>
|
||||
<button
|
||||
height="16"
|
||||
width="16"
|
||||
layout="topleft"
|
||||
mouse_opaque="true"
|
||||
name="gear_btn"
|
||||
tool_tip="Camera Presets"
|
||||
top_delta="3"
|
||||
left_pad="3"
|
||||
image_selected="Icon_Gear"
|
||||
image_pressed="Icon_Gear"
|
||||
image_unselected="Icon_Gear"
|
||||
is_toggle="true">
|
||||
<button.commit_callback
|
||||
function="CameraPresets.ShowPresetsList"/>
|
||||
</button>
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Position..."
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="camera_position_btn"
|
||||
top_delta="-3"
|
||||
width="103">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="prefs_view_advanced"/>
|
||||
</button>
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-581"
|
||||
left="-604"
|
||||
top="0"
|
||||
width="110"
|
||||
follows="right|top"
|
||||
|
|
@ -270,7 +270,7 @@
|
|||
|
||||
<panel
|
||||
height="18"
|
||||
left="-449"
|
||||
left="-472"
|
||||
width="77"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
|
|
@ -316,7 +316,7 @@
|
|||
<panel
|
||||
height="18"
|
||||
left_pad="5"
|
||||
width="346"
|
||||
width="369"
|
||||
top="0"
|
||||
follows="right|top"
|
||||
name="time_and_media_bg"
|
||||
|
|
@ -372,11 +372,20 @@
|
|||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon"
|
||||
image_pressed="Presets_Icon"
|
||||
image_unselected="Cam_FreeCam_Off"
|
||||
image_pressed="Cam_FreeCam_Off"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon"
|
||||
name="presets_icon_camera"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_unselected="Presets_Icon_Graphic"
|
||||
image_pressed="Presets_Icon_Graphic"
|
||||
left_pad="5"
|
||||
top="2"
|
||||
name="presets_icon_graphic"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel_camera_item
|
||||
background_visible="false"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
width="150">
|
||||
<panel_camera_item.icon_over
|
||||
follows="top|left"
|
||||
height="20"
|
||||
image_name="ListItem_Over"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
layout="topleft"
|
||||
name="hovered_icon"
|
||||
top="20"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="152" />
|
||||
<panel_camera_item.icon_selected
|
||||
follows="top|left"
|
||||
height="20"
|
||||
image_name="ListItem_Select"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="selected_icon"
|
||||
top="20"
|
||||
scale_image="true"
|
||||
visible="false"
|
||||
width="152" />
|
||||
<panel_camera_item.picture
|
||||
follows="top|left"
|
||||
height="20"
|
||||
image_name="Icon_For_Sale"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="picture"
|
||||
tab_stop="false"
|
||||
top="20"
|
||||
top_pad="10"
|
||||
width="20" />
|
||||
<panel_camera_item.selected_picture
|
||||
follows="top|left"
|
||||
height="20"
|
||||
image_name="Cam_Rotate_In"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="selected_picture"
|
||||
tab_stop="false"
|
||||
top="20"
|
||||
top_pad="8"
|
||||
visible="false"
|
||||
width="20" />
|
||||
<panel_camera_item.text
|
||||
follows="top|left|right"
|
||||
font="SansSerifMedium"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
name="picture_name"
|
||||
text_color="White"
|
||||
top="16"
|
||||
use_ellipses="true"
|
||||
width="120"
|
||||
word_wrap="false" >
|
||||
Text
|
||||
</panel_camera_item.text>
|
||||
</panel_camera_item>
|
||||
|
|
@ -17,11 +17,11 @@
|
|||
<panel.string name="buycurrencylabel">
|
||||
[AMT] L$
|
||||
</panel.string>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$"/>
|
||||
<button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$" left_pad="-15"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<icon name="dd_icon" tool_tip="Distancia de dibujo"/>
|
||||
<slider tool_tip="Distancia máxima desde la cámara, en metros a la que se dibujarán objetos" name="drawdistance"/>
|
||||
<text name="TimeText" tool_tip="Hora actual (costa del Pacífico de EEUU)" width="78">24:00:00 PST</text>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
<panel.string name="time">[hour24, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [timezone, datetime, slt]</panel.string>
|
||||
<panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt]. [month, datetime, slt] [year, datetime, slt]</panel.string>
|
||||
<panel.string name="buycurrencylabel">[AMT] L$</panel.string>
|
||||
<panel name="balance_bg" left="-431">
|
||||
<panel name="balance_bg" left="-454">
|
||||
<text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ ??"/>
|
||||
<button label="Compra L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
|
||||
</panel>
|
||||
<panel name="time_and_media_bg" width="328">
|
||||
<panel name="time_and_media_bg" width="351">
|
||||
<text name="TimeText" tool_tip="Orario attuale (Pacifico)" width="78">24:00:00 PST</text>
|
||||
<button name="stream_toggle_btn" tool_tip="Attiva/Ferma musica nella parcella"/>
|
||||
<button name="media_toggle_btn" tool_tip="Attiva/Ferma tutti i media (musica, video, pagine Web)"/>
|
||||
|
|
|
|||