Merge branch 'main' of https://github.com/secondlife/viewer
# Conflicts: # indra/fix-incredibuild.py # indra/newview/CMakeLists.txt # indra/newview/llscrollingpanelparam.cpp # indra/newview/viewer_manifest.pymaster
commit
2c52b8b243
|
|
@ -12,14 +12,10 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
runner: [windows-large, macos-12-xl]
|
||||
configuration: [Release, ReleaseOS]
|
||||
python-version: ["3.11"]
|
||||
configuration: [Release]
|
||||
include:
|
||||
- runner: macos-12-xl
|
||||
developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
|
||||
exclude:
|
||||
- runner: macos-12-xl
|
||||
configuration: ReleaseOS
|
||||
runs-on: ${{ matrix.runner }}
|
||||
outputs:
|
||||
viewer_channel: ${{ steps.build.outputs.viewer_channel }}
|
||||
|
|
@ -67,7 +63,7 @@ jobs:
|
|||
- name: Setup python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
python-version: "3.11"
|
||||
|
||||
- name: Checkout build variables
|
||||
uses: actions/checkout@v4
|
||||
|
|
@ -101,7 +97,7 @@ jobs:
|
|||
|
||||
- name: Determine source branch
|
||||
id: which-branch
|
||||
uses: secondlife/viewer-build-util/which-branch@v1
|
||||
uses: secondlife/viewer-build-util/which-branch@v2
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
|
||||
|
|
@ -271,7 +267,7 @@ jobs:
|
|||
steps:
|
||||
- name: Sign and package Windows viewer
|
||||
if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID
|
||||
uses: secondlife/viewer-build-util/sign-pkg-windows@v1
|
||||
uses: secondlife/viewer-build-util/sign-pkg-windows@v2
|
||||
with:
|
||||
vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
|
||||
cert_name: "${{ env.AZURE_CERT_NAME }}"
|
||||
|
|
@ -310,7 +306,7 @@ jobs:
|
|||
|
||||
- name: Sign and package Mac viewer
|
||||
if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team
|
||||
uses: secondlife/viewer-build-util/sign-pkg-mac@v1
|
||||
uses: secondlife/viewer-build-util/sign-pkg-mac@v2
|
||||
with:
|
||||
channel: ${{ needs.build.outputs.viewer_channel }}
|
||||
imagename: ${{ needs.build.outputs.imagename }}
|
||||
|
|
@ -330,7 +326,7 @@ jobs:
|
|||
steps:
|
||||
- name: Post Windows symbols
|
||||
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
|
||||
uses: secondlife/viewer-build-util/post-bugsplat-windows@v1
|
||||
uses: secondlife/viewer-build-util/post-bugsplat-windows@v2
|
||||
with:
|
||||
username: ${{ env.BUGSPLAT_USER }}
|
||||
password: ${{ env.BUGSPLAT_PASS }}
|
||||
|
|
@ -347,7 +343,7 @@ jobs:
|
|||
steps:
|
||||
- name: Post Mac symbols
|
||||
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
|
||||
uses: secondlife/viewer-build-util/post-bugsplat-mac@v1
|
||||
uses: secondlife/viewer-build-util/post-bugsplat-mac@v2
|
||||
with:
|
||||
username: ${{ env.BUGSPLAT_USER }}
|
||||
password: ${{ env.BUGSPLAT_PASS }}
|
||||
|
|
@ -360,31 +356,20 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_')
|
||||
steps:
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: Windows-installer
|
||||
pattern: "*-installer"
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: macOS-installer
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: Windows-metadata
|
||||
|
||||
- name: Rename windows metadata
|
||||
pattern: "*-metadata"
|
||||
|
||||
- name: Rename metadata
|
||||
run: |
|
||||
mv autobuild-package.xml Windows-autobuild-package.xml
|
||||
mv newview/viewer_version.txt Windows-viewer_version.txt
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: macOS-metadata
|
||||
|
||||
- name: Rename macOS metadata
|
||||
run: |
|
||||
mv autobuild-package.xml macOS-autobuild-package.xml
|
||||
mv newview/viewer_version.txt macOS-viewer_version.txt
|
||||
cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml
|
||||
cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt
|
||||
cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml
|
||||
cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt
|
||||
|
||||
# forked from softprops/action-gh-release
|
||||
- name: Create GitHub release
|
||||
|
|
@ -407,8 +392,8 @@ jobs:
|
|||
append_body: true
|
||||
fail_on_unmatched_files: true
|
||||
files: |
|
||||
*.dmg
|
||||
*.exe
|
||||
macOS-installer/*.dmg
|
||||
Windows-installer/*.exe
|
||||
*-autobuild-package.xml
|
||||
*-viewer_version.txt
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
PERSONAL_ACCESS_TOKEN: ${{ secrets.SHARED_CLA_TOKEN }}
|
||||
with:
|
||||
branch: main
|
||||
path-to-document: https://github.com/secondlife/cla/blob/master/CLA.md
|
||||
path-to-document: https://github.com/secondlife/cla/blob/main/CLA.md
|
||||
path-to-signatures: signatures.json
|
||||
remote-organization-name: secondlife
|
||||
remote-repository-name: cla-signatures
|
||||
|
|
|
|||
73
BuildParams
73
BuildParams
|
|
@ -1,73 +0,0 @@
|
|||
# BuildParams
|
||||
#
|
||||
# Please refer to:
|
||||
# https://wiki.secondlife.com/wiki/Automated_Build_System
|
||||
|
||||
# Variants (NOTE: 'Release' must be last for uploads to work correctly)
|
||||
variants = "RelWithDebInfo Release"
|
||||
|
||||
# Use Public Upload Locations
|
||||
public_build = true
|
||||
build_docs = true
|
||||
|
||||
# enable Doxygen building on Linux for TeamCity (it can be done manually on any platform)
|
||||
build_Linux_Doxygen = true
|
||||
|
||||
# Need viewer-build-variables as well as other shared repositories
|
||||
buildscripts_shared_more_NAMEs="build_secrets build_variables git_hooks"
|
||||
|
||||
# Python 3 / SL-15742
|
||||
BUILDSCRIPTS_PY3 = "true"
|
||||
|
||||
################################################################
|
||||
#### Examples of how to set the viewer_channel ####
|
||||
#
|
||||
# To build a Release or Release candidate in build bingo:
|
||||
# bingo.viewer_channel = "Second Life Release"
|
||||
#
|
||||
# To build a Beta for the 'Bingo' project in build bingo:
|
||||
# bingo.viewer_channel = "Second Life Beta Bingo"
|
||||
#
|
||||
# To build a Project viewer for the 'Bingo' project in build bingo:
|
||||
# bingo.viewer_channel = "Second Life Project Bingo"
|
||||
#
|
||||
# If left unset, viewer_channel defaults to 'Second Life Test',
|
||||
# which is appropriate for individual developer builds.
|
||||
#
|
||||
# All Linden Lab builds (and only Linden Lab builds)
|
||||
# should use a viewer_channel that begins with "Second Life"
|
||||
################################################################
|
||||
viewer_channel = "Second Life Test"
|
||||
|
||||
|
||||
################################################################
|
||||
# Special packaging parameters.
|
||||
# These parameters can be used to create additional packages
|
||||
# which identify themselves in a distinct way with either
|
||||
# a sourceid (sent to web services) or a channel name (sent to login)
|
||||
# the default sourceid should always be a null string:
|
||||
sourceid = ""
|
||||
# the additional_packages variable is a blank separated list of package prefixes:
|
||||
# additional_packages = ""
|
||||
# to set the special values for a package, create variables using each prefix:
|
||||
# additional_packages = "Foo Bar"
|
||||
# Foo_sourceid = "bingo"
|
||||
# Foo_viewer_channel_suffix = "Foo"
|
||||
# Bar_sourceid = "bongo"
|
||||
# Bar_viewer_channel_suffix = "Bar"
|
||||
# the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel
|
||||
# for the package in a setting that overrides the compiled-in value
|
||||
################################################################
|
||||
additional_packages = "EDU"
|
||||
Linux.additional_packages = ""
|
||||
|
||||
# The EDU package allows us to create a separate release channel whose expirations
|
||||
# are synchronized as much as possible with the academic year
|
||||
EDU_sourceid = ""
|
||||
EDU_viewer_channel_suffix = "edu"
|
||||
|
||||
# Notifications - to configure email notices use the TeamCity parameter
|
||||
# setting screen for your project or build configuration to set the
|
||||
# environment variable 'email' to a space-separated list of email addresses
|
||||
email=""
|
||||
|
||||
13
build.sh
13
build.sh
|
|
@ -6,9 +6,6 @@
|
|||
# it relies on the environment that sets up, functions it provides, and
|
||||
# the build result post-processing it does.
|
||||
#
|
||||
# The shared buildscript build.sh invokes this because it is named 'build.sh',
|
||||
# which is the default custom build script name in buildscripts/hg/BuildParams
|
||||
#
|
||||
# PLEASE NOTE:
|
||||
#
|
||||
# * This script is interpreted on three platforms, including windows and cygwin
|
||||
|
|
@ -85,7 +82,7 @@ installer_Linux()
|
|||
{
|
||||
local package_name="$1"
|
||||
local package_dir="$(build_dir_Linux)/newview/"
|
||||
local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.bz2\$"
|
||||
local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.xz\$"
|
||||
# since the additional packages are built after the base package,
|
||||
# sorting oldest first ensures that the unqualified package is returned
|
||||
# even if someone makes a qualified name that duplicates the last word of the base name
|
||||
|
|
@ -173,7 +170,7 @@ pre_build()
|
|||
# This name is consumed by indra/newview/CMakeLists.txt. Make it
|
||||
# absolute because we've had troubles with relative pathnames.
|
||||
abs_build_dir="$(cd "$build_dir"; pwd)"
|
||||
VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.bz2")"
|
||||
VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.xz")"
|
||||
fi
|
||||
|
||||
# honor autobuild_configure_parameters same as sling-buildscripts
|
||||
|
|
@ -417,10 +414,10 @@ do
|
|||
fi
|
||||
if [ -d "$build_dir/doxygen/html" ]
|
||||
then
|
||||
tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html"
|
||||
python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.bz2" \
|
||||
tar -cJf "$build_dir/viewer-doxygen.tar.xz" --strip-components 3 "$build_dir/doxygen/html"
|
||||
python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.xz" \
|
||||
|| fatal "Upload of doxygen tarball failed"
|
||||
metadata+=("$build_dir/viewer-doxygen.tar.bz2")
|
||||
metadata+=("$build_dir/viewer-doxygen.tar.xz")
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
|
|
|
|||
|
|
@ -1,61 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
##
|
||||
## $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
## Second Life Viewer Source Code
|
||||
## Copyright (C) 2011, 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$
|
||||
|
||||
import sys
|
||||
import os
|
||||
import glob
|
||||
|
||||
def delete_file_types(path, filetypes):
|
||||
if os.path.exists(path):
|
||||
print('Cleaning: ' + path)
|
||||
orig_dir = os.getcwd();
|
||||
os.chdir(path)
|
||||
filelist = []
|
||||
for type in filetypes:
|
||||
filelist.extend(glob.glob(type))
|
||||
for file in filelist:
|
||||
os.remove(file)
|
||||
os.chdir(orig_dir)
|
||||
|
||||
def main():
|
||||
build_types = ['*.exp','*.exe','*.pdb','*.idb',
|
||||
'*.ilk','*.lib','*.obj','*.ib_pdb_index']
|
||||
pch_types = ['*.pch']
|
||||
delete_file_types("build-vc80/newview/Release", build_types)
|
||||
delete_file_types("build-vc80/newview/firestorm-bin.dir/Release/",
|
||||
pch_types)
|
||||
delete_file_types("build-vc80/newview/RelWithDebInfo", build_types)
|
||||
delete_file_types("build-vc80/newview/firestorm-bin.dir/RelWithDebInfo/",
|
||||
pch_types)
|
||||
delete_file_types("build-vc80/newview/Debug", build_types)
|
||||
delete_file_types("build-vc80/newview/firestorm-bin.dir/Debug/",
|
||||
pch_types)
|
||||
|
||||
|
||||
delete_file_types("build-vc80/test/RelWithDebInfo", build_types)
|
||||
delete_file_types("build-vc80/test/test.dir/RelWithDebInfo/",
|
||||
pch_types)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -2262,7 +2262,7 @@ if (WINDOWS)
|
|||
|
||||
if (PACKAGE)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
ARGS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
|
||||
|
|
@ -2307,7 +2307,7 @@ if (WINDOWS)
|
|||
)
|
||||
# temporarily disable packaging of event_host until hg subrepos get
|
||||
# sorted out on the parabuild cluster...
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz)
|
||||
|
||||
endif (PACKAGE)
|
||||
elseif (DARWIN)
|
||||
|
|
@ -2460,7 +2460,7 @@ if (LINUX)
|
|||
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer10 media_plugin_cef linux-crash-logger)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${product}.tar.bz2
|
||||
OUTPUT ${product}.tar.xz
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
ARGS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
|
||||
|
|
@ -2513,7 +2513,7 @@ if (LINUX)
|
|||
add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)
|
||||
|
||||
if (PACKAGE)
|
||||
add_custom_target(llpackage ALL DEPENDS ${product}.tar.bz2)
|
||||
add_custom_target(llpackage ALL DEPENDS ${product}.tar.xz)
|
||||
# Make sure we don't run two instances of viewer_manifest.py at the same time.
|
||||
add_dependencies(llpackage copy_l_viewer_manifest)
|
||||
check_message_template(llpackage)
|
||||
|
|
@ -2662,7 +2662,7 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE
|
|||
# OUTPUT_VARIABLE PARENT_DIRECTORY_CYGWIN
|
||||
# OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
# add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
|
||||
# # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.bz2;
|
||||
# # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.xz;
|
||||
# # testing a string suffix is painful enough in CMake language that
|
||||
# # we'll continue assuming it until forced to generalize.
|
||||
# COMMAND "tar"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
7.1.6
|
||||
7.1.7
|
||||
|
|
|
|||
|
|
@ -2023,7 +2023,7 @@
|
|||
value_min="-1"
|
||||
value_max="1">
|
||||
<param_skeleton>
|
||||
|
||||
|
||||
<bone
|
||||
name="mEyeLeft"
|
||||
scale="0 0 0"
|
||||
|
|
@ -2033,8 +2033,9 @@
|
|||
name="mEyeRight"
|
||||
scale="0 0 0"
|
||||
offset="-.005 0 0" />
|
||||
|
||||
<bone
|
||||
|
||||
|
||||
<bone
|
||||
name="mFaceEyeAltLeft"
|
||||
scale="0 0 0"
|
||||
offset="-.005 0 0" />
|
||||
|
|
@ -2043,7 +2044,7 @@
|
|||
name="mFaceEyeAltRight"
|
||||
scale="0 0 0"
|
||||
offset="-.005 0 0" />
|
||||
|
||||
|
||||
<bone
|
||||
name="mFaceEyeLidLowerRight"
|
||||
scale="0 0.3 0.7"
|
||||
|
|
@ -2054,7 +2055,7 @@
|
|||
scale="0 0.3 0.7"
|
||||
offset="0 0 0" />
|
||||
|
||||
<bone
|
||||
<bone
|
||||
name="mFaceEyeLidUpperRight"
|
||||
scale="0 0.3 0.7"
|
||||
offset=" 0 0 0" />
|
||||
|
|
@ -2063,17 +2064,17 @@
|
|||
name="mFaceEyeLidUpperLeft"
|
||||
scale="0 0.3 0.7"
|
||||
offset=" 0 0 0" />
|
||||
|
||||
|
||||
<bone
|
||||
name="mFaceEyecornerInnerLeft"
|
||||
scale="0 0 0"
|
||||
offset="-0.005 -0.008 0.0" />
|
||||
|
||||
|
||||
<bone
|
||||
name="mFaceEyecornerInnerRight"
|
||||
scale="0 0 0"
|
||||
offset="-0.005 0.008 0.0" />
|
||||
|
||||
|
||||
</param_skeleton>
|
||||
</param>
|
||||
|
||||
|
|
|
|||
|
|
@ -259,17 +259,21 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )
|
|||
|
||||
// Make sure we're not taking the slider out of bounds
|
||||
// (this is where some simple UI limits are stored)
|
||||
F32 new_percent = weightToSlider(new_weight);
|
||||
if (mSlider->getMinValue() < new_percent
|
||||
&& new_percent < mSlider->getMaxValue())
|
||||
F32 new_percent = weightToPercent(new_weight);
|
||||
LLSliderCtrl* slider = getChild<LLSliderCtrl>("param slider");
|
||||
if (slider)
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight);
|
||||
mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
mWearable->writeToAvatar(gAgentAvatarp);
|
||||
gAgentAvatarp->updateVisualParams();
|
||||
if (slider->getMinValue() < new_percent
|
||||
&& new_percent < slider->getMaxValue())
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight);
|
||||
mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
mWearable->writeToAvatar(gAgentAvatarp);
|
||||
gAgentAvatarp->updateVisualParams();
|
||||
|
||||
mSlider->setValue( weightToSlider( new_weight ) );
|
||||
slider->setValue( weightToPercent( new_weight ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -290,15 +294,19 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )
|
|||
F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();
|
||||
// step a fraction in the negative directiona
|
||||
F32 new_weight = current_weight - (range / 10.f);
|
||||
F32 new_percent = self->weightToSlider(new_weight);
|
||||
if (self->mSlider->getMinValue() < new_percent
|
||||
&& new_percent < self->mSlider->getMaxValue())
|
||||
F32 new_percent = self->weightToPercent(new_weight);
|
||||
LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider");
|
||||
if (slider)
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
|
||||
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
self->mWearable->writeToAvatar(gAgentAvatarp);
|
||||
self->mSlider->setValue( self->weightToSlider( new_weight ) );
|
||||
if (slider->getMinValue() < new_percent
|
||||
&& new_percent < slider->getMaxValue())
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
|
||||
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
self->mWearable->writeToAvatar(gAgentAvatarp);
|
||||
slider->setValue( self->weightToPercent( new_weight ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -322,18 +330,35 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )
|
|||
F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();
|
||||
// step a fraction in the negative direction
|
||||
F32 new_weight = current_weight + (range / 10.f);
|
||||
F32 new_percent = self->weightToSlider(new_weight);
|
||||
if (self->mSlider->getMinValue() < new_percent
|
||||
&& new_percent < self->mSlider->getMaxValue())
|
||||
F32 new_percent = self->weightToPercent(new_weight);
|
||||
LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider");
|
||||
if (slider)
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
|
||||
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
self->mWearable->writeToAvatar(gAgentAvatarp);
|
||||
self->mSlider->setValue( self->weightToSlider( new_weight ) );
|
||||
if (slider->getMinValue() < new_percent
|
||||
&& new_percent < slider->getMaxValue())
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
//self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
|
||||
self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
|
||||
self->mWearable->writeToAvatar(gAgentAvatarp);
|
||||
slider->setValue( self->weightToPercent( new_weight ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLVisualParamHint::requestHintUpdates( self->mHintMin, self->mHintMax );
|
||||
}
|
||||
|
||||
|
||||
F32 LLScrollingPanelParam::weightToPercent( F32 weight )
|
||||
{
|
||||
LLViewerVisualParam* param = mParam;
|
||||
return (weight - param->getMinWeight()) / (param->getMaxWeight() - param->getMinWeight()) * 100.f;
|
||||
}
|
||||
|
||||
F32 LLScrollingPanelParam::percentToWeight( F32 percent )
|
||||
{
|
||||
LLViewerVisualParam* param = mParam;
|
||||
return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ public:
|
|||
void onHintMouseDown( LLVisualParamHint* hint );
|
||||
void onHintHeldDown( LLVisualParamHint* hint );
|
||||
|
||||
F32 weightToPercent( F32 weight );
|
||||
F32 percentToWeight( F32 percent );
|
||||
|
||||
public:
|
||||
// Constants for LLPanelVisualParam
|
||||
const static F32 PARAM_STEP_TIME_THRESHOLD;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan
|
|||
LLViewerJointMesh* mesh, LLViewerVisualParam* param, BOOL allow_modify, LLWearable* wearable, LLJoint* jointp, BOOL use_hints)
|
||||
: LLScrollingPanel( panel_params ),
|
||||
mParam(param),
|
||||
mSlider(nullptr),
|
||||
mAllowModify(allow_modify),
|
||||
mWearable(wearable)
|
||||
{
|
||||
|
|
@ -51,15 +50,13 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan
|
|||
buildFromFile( "panel_scrolling_param.xml");
|
||||
else
|
||||
buildFromFile( "panel_scrolling_param_base.xml");
|
||||
|
||||
mSlider = getChild<LLSliderCtrl>("param slider");
|
||||
mSlider->setMaxValue(100.f * (mParam->getMaxWeight() - mParam->getMinWeight()));
|
||||
mSlider->setValue(weightToSlider(param->getWeight()));
|
||||
|
||||
getChild<LLUICtrl>("param slider")->setValue(weightToPercent(param->getWeight()));
|
||||
|
||||
std::string display_name = LLTrans::getString(param->getDisplayName());
|
||||
mSlider->setLabelArg("[DESC]", display_name);
|
||||
mSlider->setEnabled(mAllowModify);
|
||||
mSlider->setCommitCallback(boost::bind(LLScrollingPanelParamBase::onSliderMoved, mSlider, this));
|
||||
getChild<LLUICtrl>("param slider")->setLabelArg("[DESC]", display_name);
|
||||
getChildView("param slider")->setEnabled(mAllowModify);
|
||||
childSetCommitCallback("param slider", LLScrollingPanelParamBase::onSliderMoved, this);
|
||||
|
||||
setVisible(FALSE);
|
||||
setBorderVisible( FALSE );
|
||||
|
|
@ -80,9 +77,9 @@ void LLScrollingPanelParamBase::updatePanel(BOOL allow_modify)
|
|||
}
|
||||
|
||||
F32 current_weight = mWearable->getVisualParamWeight( param->getID() );
|
||||
mSlider->setValue(weightToSlider( current_weight ) );
|
||||
getChild<LLUICtrl>("param slider")->setValue(weightToPercent( current_weight ) );
|
||||
mAllowModify = allow_modify;
|
||||
mSlider->setEnabled(mAllowModify);
|
||||
getChildView("param slider")->setEnabled(mAllowModify);
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
@ -93,7 +90,7 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)
|
|||
LLViewerVisualParam* param = self->mParam;
|
||||
|
||||
F32 current_weight = self->mWearable->getVisualParamWeight( param->getID() );
|
||||
F32 new_weight = self->sliderToWeight( (F32)slider->getValue().asReal() );
|
||||
F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() );
|
||||
if (current_weight != new_weight )
|
||||
{
|
||||
// <FS:Ansariel> [Legacy Bake]
|
||||
|
|
@ -104,12 +101,14 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)
|
|||
}
|
||||
}
|
||||
|
||||
F32 LLScrollingPanelParamBase::weightToSlider(F32 weight)
|
||||
F32 LLScrollingPanelParamBase::weightToPercent( F32 weight )
|
||||
{
|
||||
return (weight - mParam->getMinWeight()) * 100.f;
|
||||
LLViewerVisualParam* param = mParam;
|
||||
return (weight - param->getMinWeight()) / (param->getMaxWeight() - param->getMinWeight()) * 100.f;
|
||||
}
|
||||
|
||||
F32 LLScrollingPanelParamBase::sliderToWeight(F32 slider)
|
||||
F32 LLScrollingPanelParamBase::percentToWeight( F32 percent )
|
||||
{
|
||||
return slider / 100.f + mParam->getMinWeight();
|
||||
LLViewerVisualParam* param = mParam;
|
||||
return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ class LLViewerVisualParam;
|
|||
class LLWearable;
|
||||
class LLVisualParamHint;
|
||||
class LLViewerVisualParam;
|
||||
class LLSliderCtrl;
|
||||
class LLJoint;
|
||||
|
||||
class LLScrollingPanelParamBase : public LLScrollingPanel
|
||||
|
|
@ -50,13 +49,11 @@ public:
|
|||
|
||||
static void onSliderMoved(LLUICtrl* ctrl, void* userdata);
|
||||
|
||||
F32 weightToSlider(F32 weight);
|
||||
F32 sliderToWeight(F32 slider);
|
||||
F32 weightToPercent( F32 weight );
|
||||
F32 percentToWeight( F32 percent );
|
||||
|
||||
public:
|
||||
LLViewerVisualParam* mParam;
|
||||
LLSliderCtrl* mSlider;
|
||||
|
||||
protected:
|
||||
BOOL mAllowModify;
|
||||
LLWearable *mWearable;
|
||||
|
|
|
|||
|
|
@ -629,7 +629,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
|
|||
# 'secondlife-bin.*',
|
||||
# '*_Setup.exe',
|
||||
# '*.bat',
|
||||
# '*.tar.bz2')))
|
||||
# '*.tar.xz')))
|
||||
# </FS:Ansariel>
|
||||
|
||||
# <FS:Ansariel> Remove VMP
|
||||
|
|
|
|||
Loading…
Reference in New Issue