Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
commit
e8b42af7a7
|
|
@ -35,12 +35,9 @@ jobs:
|
|||
build_matrix:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-15,ubuntu-24.04,windows-2022]
|
||||
os: [macos-15,ubuntu-22.04,windows-2022]
|
||||
grid: [sl,os]
|
||||
variant: [regular, avx]
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
container_image: ubuntu:22.04 # only Linux uses a container
|
||||
runs-on: ${{ matrix.os }}
|
||||
container: ${{ matrix.container_image }}
|
||||
outputs:
|
||||
|
|
@ -62,16 +59,39 @@ jobs:
|
|||
echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
id: py311
|
||||
# Use apt-based Python when inside the Ubuntu 22.04 container
|
||||
- name: Install Python 3.11 (container case)
|
||||
if: matrix.container_image == 'ubuntu:22.04'
|
||||
id: py311_apt
|
||||
run: |
|
||||
apt-get update
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
python3.11 python3.11-venv python3-pip python-is-python3
|
||||
python3.11 -m pip install --upgrade pip setuptools wheel
|
||||
echo "python-path=$(command -v python3.11)" >> "$GITHUB_OUTPUT"
|
||||
# Use setup-python for all other jobs
|
||||
- name: Set up Python (normal case)
|
||||
if: matrix.container_image != 'ubuntu:22.04'
|
||||
id: py311_setup
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
check-latest: true
|
||||
- name: resolve python path
|
||||
id: py311
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -n "${{ steps.py311_apt.outputs.python-path }}" ]; then
|
||||
PY="${{ steps.py311_apt.outputs.python-path }}"
|
||||
else
|
||||
PY="${{ steps.py311_setup.outputs.python-path }}"
|
||||
fi
|
||||
echo "python-path=$PY" >> "$GITHUB_OUTPUT"
|
||||
echo "Resolved Python at: $PY"
|
||||
- name: Set PYTHON environment for CMake
|
||||
run: |
|
||||
echo "PYTHON=${{ steps.py311.outputs.python-path }}" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- name: Install python requirements
|
||||
run: |
|
||||
python3 -m pip install -r requirements.txt
|
||||
|
|
@ -105,17 +125,16 @@ jobs:
|
|||
with:
|
||||
swap-storage: false
|
||||
|
||||
- name: Install GCC-14
|
||||
- name: Install GCC-13
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y software-properties-common
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y gcc-14 g++-14
|
||||
echo "CC=gcc-14" >> $GITHUB_ENV
|
||||
echo "CXX=g++-14" >> $GITHUB_ENV
|
||||
|
||||
sudo apt-get install -y gcc-13 g++-13
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \
|
||||
--slave /usr/bin/g++ g++ /usr/bin/g++-13
|
||||
echo "CC=gcc-13" >> $GITHUB_ENV
|
||||
echo "CXX=g++-13" >> $GITHUB_ENV
|
||||
- name: Setup rclone and download the folder
|
||||
uses: beqjanus/setup-rclone@main
|
||||
with:
|
||||
|
|
|
|||
|
|
@ -338,8 +338,10 @@ void LLFloater::initFloater(const Params& p)
|
|||
|
||||
// Help button: '?'
|
||||
//SL-14050 Disable all Help question marks
|
||||
// <FS:Ansariel> Nope!
|
||||
mButtonsEnabled[BUTTON_HELP] = !mHelpTopic.empty();// false;
|
||||
// <FS:TJ> Disable the help button only if the debug setting is on
|
||||
static LLUICachedControl<bool> hide_help_buttons ("FSHideHelpButtons", false);
|
||||
mButtonsEnabled[BUTTON_HELP] = !mHelpTopic.empty() && !hide_help_buttons;// false;
|
||||
// </FS:TJ>
|
||||
|
||||
// Minimize button only for top draggers
|
||||
if ( !mDragOnLeft && mCanMinimize )
|
||||
|
|
|
|||
|
|
@ -26927,5 +26927,16 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<integer>0</integer>
|
||||
</map>
|
||||
<!-- </FS:Zi> Area Search Defaults -->
|
||||
<key>FSHideHelpButtons</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When enabled, hides the help button from floaters (requires restart)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -632,8 +632,9 @@ void LLFloaterWorldMap::reshape( S32 width, S32 height, bool called_from_parent
|
|||
void LLFloaterWorldMap::draw()
|
||||
{
|
||||
// <FS:Ansariel> Performance improvement
|
||||
static LLView* show_destination_btn = getChildView("Show Destination");
|
||||
static LLUICtrl* zoom_slider = getChild<LLUICtrl>("zoom slider");
|
||||
static LLView* show_destination_btn = getChildView("Show Destination");
|
||||
static LLUICtrl* zoom_slider = getChild<LLUICtrl>("zoom slider");
|
||||
static LLButton* track_region_btn = getChild<LLButton>("track_region");
|
||||
// </FS:Ansariel> Performance improvement
|
||||
|
||||
static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white);
|
||||
|
|
@ -709,7 +710,7 @@ void LLFloaterWorldMap::draw()
|
|||
mGoHomeButton->setEnabled((!rlv_handler_t::isEnabled()) || !(gRlvHandler.hasBehaviour(RLV_BHVR_TPLM) && gRlvHandler.hasBehaviour(RLV_BHVR_TPLOC)));
|
||||
// </FS:Ansariel> Performance improvement
|
||||
// <FS:Ansariel> Alchemy region tracker
|
||||
getChild<LLButton>("track_region")->setEnabled((bool) tracking_status || LLWorldMap::getInstance()->isTracking());
|
||||
track_region_btn->setEnabled((bool) tracking_status || LLWorldMap::getInstance()->isTracking());
|
||||
|
||||
setMouseOpaque(true);
|
||||
getDragHandle()->setMouseOpaque(true);
|
||||
|
|
@ -1270,13 +1271,13 @@ void LLFloaterWorldMap::buildAvatarIDList()
|
|||
//}
|
||||
|
||||
std::multimap<std::string, LLUUID> buddymap;
|
||||
for(; it != end; ++it)
|
||||
for (; it != end; ++it)
|
||||
{
|
||||
buddymap.insert(std::make_pair((*it).second, (*it).first));
|
||||
buddymap.emplace(it->second, it->first);
|
||||
}
|
||||
for (std::multimap<std::string, LLUUID>::iterator bit = buddymap.begin(); bit != buddymap.end(); ++bit)
|
||||
for (const auto& [name, id] : buddymap)
|
||||
{
|
||||
mFriendCombo->addSimpleElement((*bit).first, ADD_BOTTOM, (*bit).second);
|
||||
mFriendCombo->addSimpleElement(name, ADD_BOTTOM, id);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
|
@ -1331,11 +1332,11 @@ void LLFloaterWorldMap::buildLandmarkIDLists()
|
|||
// <FS:Ansariel> Filter duplicate landmarks on world map
|
||||
if (filterLandmarks)
|
||||
{
|
||||
if (used_landmarks.find(item->getAssetUUID()) != used_landmarks.end())
|
||||
if (used_landmarks.contains(item->getAssetUUID()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
used_landmarks.insert(item->getAssetUUID());
|
||||
used_landmarks.emplace(item->getAssetUUID());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
|
@ -1982,7 +1983,7 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
|
|||
|
||||
if (num_results > 0)
|
||||
{
|
||||
// Ansariel: Let's sort the list to make it more user-friendly
|
||||
// <FS:Ansariel> Let's sort the list to make it more user-friendly
|
||||
mSearchResults->sortByColumn("sim_name", true);
|
||||
|
||||
// if match found, highlight it and go
|
||||
|
|
|
|||
|
|
@ -318,12 +318,12 @@ void LLNetMap::draw()
|
|||
}
|
||||
// </FS:Ansariel>: Synchronize netmap scale throughout instances
|
||||
|
||||
// <FS:Ansariel> Aurora Sim
|
||||
// <FS:Ansariel> Aurora Sim
|
||||
if (!LLWorld::getInstance()->getAllowMinimap())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// <FS:Ansariel> Aurora Sim
|
||||
// <FS:Ansariel> Aurora Sim
|
||||
|
||||
static LLUIColor map_avatar_color = LLUIColorTable::instance().getColor("MapAvatarColor", LLColor4::white);
|
||||
static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white);
|
||||
|
|
@ -699,7 +699,9 @@ void LLNetMap::draw()
|
|||
// Draw avatars
|
||||
for (U32 i = 0; i < avatar_ids.size(); i++)
|
||||
{
|
||||
LLUUID uuid = avatar_ids[i];
|
||||
// <FS:Ansariel> Performance improvement
|
||||
//LLUUID uuid = avatar_ids[i];
|
||||
const LLUUID& uuid = avatar_ids.at(i);
|
||||
// Skip self, we'll draw it later
|
||||
if (uuid == gAgent.getID()) continue;
|
||||
|
||||
|
|
@ -872,8 +874,8 @@ void LLNetMap::draw()
|
|||
F32 ctr_x = (F32)center_sw_left;
|
||||
F32 ctr_y = (F32)center_sw_bottom;
|
||||
|
||||
const F32 steps_per_circle = 40.0f;
|
||||
const F32 steps_per_radian = steps_per_circle / F_TWO_PI;
|
||||
constexpr F32 steps_per_circle = 40.0f;
|
||||
constexpr F32 steps_per_radian = steps_per_circle / F_TWO_PI;
|
||||
const F32 arc_start = -(horiz_fov / 2.0f) + F_PI_BY_TWO;
|
||||
const F32 arc_end = (horiz_fov / 2.0f) + F_PI_BY_TWO;
|
||||
const S32 steps = llmax(1, (S32)((horiz_fov * steps_per_radian) + 0.5f));
|
||||
|
|
@ -1958,8 +1960,7 @@ void LLNetMap::handleClearMarks()
|
|||
// static
|
||||
bool LLNetMap::getAvatarMarkColor(const LLUUID& avatar_id, LLColor4& color)
|
||||
{
|
||||
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id);
|
||||
if (found != sAvatarMarksMap.end())
|
||||
if (auto found = sAvatarMarksMap.find(avatar_id); found != sAvatarMarksMap.end())
|
||||
{
|
||||
color = found->second;
|
||||
return true;
|
||||
|
|
@ -2025,8 +2026,7 @@ LLColor4 LLNetMap::getAvatarColor(const LLUUID& avatar_id)
|
|||
cs_instance.hasFriendColorThatShouldShow(avatar_id, ContactSetType::MINIMAP, color);
|
||||
|
||||
// Mark Avatars with special colors
|
||||
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id);
|
||||
if (found != sAvatarMarksMap.end())
|
||||
if (auto found = sAvatarMarksMap.find(avatar_id); found != sAvatarMarksMap.end())
|
||||
{
|
||||
color = found->second;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@
|
|||
#include "llviewerprecompiledheaders.h"
|
||||
#include "particleeditor.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llappviewer.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
|
|
@ -47,10 +45,7 @@
|
|||
#include "llwindow.h"
|
||||
#include "llviewerassetupload.h"
|
||||
|
||||
ParticleEditor::ParticleEditor(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mObject(0),
|
||||
mParticleScriptInventoryItem(0)
|
||||
ParticleEditor::ParticleEditor(const LLSD& key) : LLFloater(key)
|
||||
{
|
||||
mPatternMap["drop"] = LLPartSysData::LL_PART_SRC_PATTERN_DROP;
|
||||
mPatternMap["explode"] = LLPartSysData::LL_PART_SRC_PATTERN_EXPLODE;
|
||||
|
|
@ -325,11 +320,11 @@ void ParticleEditor::updateUI()
|
|||
bool targetLinear = mTargetLinearCheckBox->getValue();
|
||||
bool interpolateColor = mInterpolateColorCheckBox->getValue();
|
||||
bool interpolateScale = mInterpolateScaleCheckBox->getValue();
|
||||
bool targetEnabled = targetLinear | (mTargetPositionCheckBox->getValue().asBoolean() ? true : false);
|
||||
bool targetEnabled = targetLinear || (mTargetPositionCheckBox->getValue().asBoolean() ? true : false);
|
||||
|
||||
mBurstRadiusSpinner->setEnabled(!(targetLinear | (mFollowSourceCheckBox->getValue().asBoolean() ? true : false) | dropPattern));
|
||||
mBurstSpeedMinSpinner->setEnabled(!(targetLinear | dropPattern));
|
||||
mBurstSpeedMaxSpinner->setEnabled(!(targetLinear | dropPattern));
|
||||
mBurstRadiusSpinner->setEnabled(!targetLinear && !(mFollowSourceCheckBox->getValue().asBoolean() ? true : false) && !dropPattern);
|
||||
mBurstSpeedMinSpinner->setEnabled(!targetLinear && !dropPattern);
|
||||
mBurstSpeedMaxSpinner->setEnabled(!targetLinear && !dropPattern);
|
||||
|
||||
// disabling a color swatch does nothing visually, so we also set alpha
|
||||
LLColor4 endColor = mEndColorSelector->get();
|
||||
|
|
@ -355,8 +350,8 @@ void ParticleEditor::updateUI()
|
|||
mOmegaYSpinner->setEnabled(!targetLinear);
|
||||
mOmegaZSpinner->setEnabled(!targetLinear);
|
||||
|
||||
mAngleBeginSpinner->setEnabled(!(explodePattern | dropPattern));
|
||||
mAngleEndSpinner->setEnabled(!(explodePattern | dropPattern));
|
||||
mAngleBeginSpinner->setEnabled(!explodePattern && !dropPattern);
|
||||
mAngleEndSpinner->setEnabled(!explodePattern && !dropPattern);
|
||||
}
|
||||
|
||||
void ParticleEditor::onClearTargetButtonClicked()
|
||||
|
|
@ -369,15 +364,13 @@ void ParticleEditor::onTargetPickerButtonClicked()
|
|||
{
|
||||
mPickTargetButton->setToggleState(true);
|
||||
mPickTargetButton->setEnabled(false);
|
||||
startPicking(this);
|
||||
startPicking();
|
||||
}
|
||||
|
||||
// inspired by the LLFloaterReporter object picker
|
||||
// static
|
||||
void ParticleEditor::startPicking(void* userdata)
|
||||
void ParticleEditor::startPicking()
|
||||
{
|
||||
ParticleEditor* self = (ParticleEditor*) userdata;
|
||||
LLToolObjPicker::getInstance()->setExitCallback(ParticleEditor::onTargetPicked, self);
|
||||
LLToolObjPicker::getInstance()->setExitCallback(ParticleEditor::onTargetPicked, this);
|
||||
LLToolMgr::getInstance()->setTransientTool(LLToolObjPicker::getInstance());
|
||||
}
|
||||
|
||||
|
|
@ -386,14 +379,12 @@ void ParticleEditor::onTargetPicked(void* userdata)
|
|||
{
|
||||
ParticleEditor* self = (ParticleEditor*)userdata;
|
||||
|
||||
LLUUID picked = LLToolObjPicker::getInstance()->getObjectID();
|
||||
|
||||
LLToolMgr::getInstance()->clearTransientTool();
|
||||
|
||||
self->mPickTargetButton->setEnabled(true);
|
||||
self->mPickTargetButton->setToggleState(false);
|
||||
|
||||
if (picked.notNull())
|
||||
if (LLUUID picked = LLToolObjPicker::getInstance()->getObjectID(); picked.notNull())
|
||||
{
|
||||
self->mTargetKeyInput->setValue(picked.asString());
|
||||
self->onParameterChange();
|
||||
|
|
@ -522,8 +513,7 @@ default\n\
|
|||
|
||||
void ParticleEditor::onCopyButtonClicked()
|
||||
{
|
||||
std::string script = createScript();
|
||||
if (!script.empty())
|
||||
if (std::string script = createScript(); !script.empty())
|
||||
{
|
||||
getWindow()->copyTextToClipboard(utf8str_to_wstring(script));
|
||||
LLNotificationsUtil::add("ParticleScriptCopiedToClipboard");
|
||||
|
|
@ -608,9 +598,7 @@ void ParticleEditor::callbackReturned(const LLUUID& inventoryItemID)
|
|||
gInventory.notifyObservers();
|
||||
|
||||
//caps import
|
||||
std::string url = gAgent.getRegionCapability("UpdateScriptAgent");
|
||||
|
||||
if (!url.empty())
|
||||
if (std::string url = gAgent.getRegionCapability("UpdateScriptAgent"); !url.empty())
|
||||
{
|
||||
std::string script = createScript();
|
||||
|
||||
|
|
@ -633,30 +621,23 @@ void ParticleEditor::callbackReturned(const LLUUID& inventoryItemID)
|
|||
void ParticleEditor::scriptInjectReturned()
|
||||
{
|
||||
setCanClose(true);
|
||||
mMainPanel->setEnabled(true);
|
||||
|
||||
// play it safe, because some time may have passed
|
||||
LLViewerObject* object = gObjectList.findObject(mObject->getID());
|
||||
if (!object || mObject->isDead())
|
||||
if (LLViewerObject* object = gObjectList.findObject(mObject->getID()); object && mObject&& !mObject->isDead())
|
||||
{
|
||||
mObject->saveScript(mParticleScriptInventoryItem, true, false);
|
||||
LLNotificationsUtil::add("ParticleScriptInjected");
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Can't inject script - object is dead or went away!" << LL_ENDL;
|
||||
mMainPanel->setEnabled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
mObject->saveScript(mParticleScriptInventoryItem, true, false);
|
||||
LLNotificationsUtil::add("ParticleScriptInjected");
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
// ---------------------------------- Callbacks ----------------------------------
|
||||
|
||||
ParticleScriptCreationCallback::ParticleScriptCreationCallback(ParticleEditor* editor)
|
||||
{
|
||||
mEditor = editor;
|
||||
}
|
||||
|
||||
ParticleScriptCreationCallback::~ParticleScriptCreationCallback()
|
||||
ParticleScriptCreationCallback::ParticleScriptCreationCallback(ParticleEditor* editor) : mEditor(editor)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,117 +43,117 @@ class ParticleEditor : public LLFloater
|
|||
friend class ParticleScriptCreationCallback;
|
||||
friend class ParticleScriptUploadResponder;
|
||||
|
||||
public:
|
||||
ParticleEditor(const LLSD& key);
|
||||
~ParticleEditor();
|
||||
public:
|
||||
ParticleEditor(const LLSD& key);
|
||||
~ParticleEditor();
|
||||
|
||||
bool postBuild() override;
|
||||
bool postBuild() override;
|
||||
|
||||
void setObject(LLViewerObject* objectp);
|
||||
void scriptInjectReturned( );
|
||||
void setObject(LLViewerObject* objectp);
|
||||
void scriptInjectReturned();
|
||||
|
||||
protected:
|
||||
void clearParticles();
|
||||
void updateParticles();
|
||||
void updateUI();
|
||||
protected:
|
||||
void clearParticles();
|
||||
void updateParticles();
|
||||
void updateUI();
|
||||
|
||||
std::string createScript();
|
||||
void createScriptInventoryItem(LLUUID categoryID);
|
||||
std::string createScript();
|
||||
void createScriptInventoryItem(LLUUID categoryID);
|
||||
|
||||
void onParameterChange();
|
||||
void onCopyButtonClicked();
|
||||
void onInjectButtonClicked();
|
||||
void onParameterChange();
|
||||
void onCopyButtonClicked();
|
||||
void onInjectButtonClicked();
|
||||
|
||||
void onClearTargetButtonClicked();
|
||||
void onTargetPickerButtonClicked();
|
||||
static void startPicking(void* userdata);
|
||||
static void onTargetPicked(void* userdata);
|
||||
void onClearTargetButtonClicked();
|
||||
void onTargetPickerButtonClicked();
|
||||
void startPicking();
|
||||
static void onTargetPicked(void* userdata);
|
||||
|
||||
void callbackReturned(const LLUUID& inv_item);
|
||||
void callbackReturned(const LLUUID& inv_item);
|
||||
|
||||
std::string lslVector(F32 x, F32 y, F32 z);
|
||||
std::string lslColor(const LLColor4& color);
|
||||
std::string lslVector(F32 x, F32 y, F32 z);
|
||||
std::string lslColor(const LLColor4& color);
|
||||
|
||||
LLViewerObject* mObject;
|
||||
LLViewerTexture* mTexture;
|
||||
LLViewerInventoryItem* mParticleScriptInventoryItem;
|
||||
LLViewerObject* mObject{ nullptr };
|
||||
LLViewerTexture* mTexture{ nullptr };
|
||||
LLViewerInventoryItem* mParticleScriptInventoryItem{ nullptr };
|
||||
|
||||
LLViewerTexture* mDefaultParticleTexture;
|
||||
LLViewerTexture* mDefaultParticleTexture{ nullptr };
|
||||
|
||||
LLPartSysData mParticles;
|
||||
LLPartSysData mParticles;
|
||||
|
||||
std::map<std::string, U8> mPatternMap;
|
||||
std::map<std::string, std::string> mScriptPatternMap;
|
||||
std::map<std::string, U8> mPatternMap;
|
||||
std::map<std::string, std::string> mScriptPatternMap;
|
||||
|
||||
std::map<std::string, U8> mBlendMap;
|
||||
std::map<std::string, std::string> mScriptBlendMap;
|
||||
std::map<std::string, U8> mBlendMap;
|
||||
std::map<std::string, std::string> mScriptBlendMap;
|
||||
|
||||
LLPanel* mMainPanel;
|
||||
LLPanel* mMainPanel{ nullptr };
|
||||
|
||||
LLComboBox* mPatternTypeCombo;
|
||||
LLTextureCtrl* mTexturePicker;
|
||||
LLComboBox* mPatternTypeCombo{ nullptr };
|
||||
LLTextureCtrl* mTexturePicker{ nullptr };
|
||||
|
||||
LLSpinCtrl* mBurstRateSpinner;
|
||||
LLSpinCtrl* mBurstCountSpinner;
|
||||
LLSpinCtrl* mBurstRadiusSpinner;
|
||||
LLSpinCtrl* mAngleBeginSpinner;
|
||||
LLSpinCtrl* mAngleEndSpinner;
|
||||
LLSpinCtrl* mBurstSpeedMinSpinner;
|
||||
LLSpinCtrl* mBurstSpeedMaxSpinner;
|
||||
LLSpinCtrl* mStartAlphaSpinner;
|
||||
LLSpinCtrl* mEndAlphaSpinner;
|
||||
LLSpinCtrl* mScaleStartXSpinner;
|
||||
LLSpinCtrl* mScaleStartYSpinner;
|
||||
LLSpinCtrl* mScaleEndXSpinner;
|
||||
LLSpinCtrl* mScaleEndYSpinner;
|
||||
LLSpinCtrl* mSourceMaxAgeSpinner;
|
||||
LLSpinCtrl* mParticlesMaxAgeSpinner;
|
||||
LLSpinCtrl* mStartGlowSpinner;
|
||||
LLSpinCtrl* mEndGlowSpinner;
|
||||
LLSpinCtrl* mBurstRateSpinner{ nullptr };
|
||||
LLSpinCtrl* mBurstCountSpinner{ nullptr };
|
||||
LLSpinCtrl* mBurstRadiusSpinner{ nullptr };
|
||||
LLSpinCtrl* mAngleBeginSpinner{ nullptr };
|
||||
LLSpinCtrl* mAngleEndSpinner{ nullptr };
|
||||
LLSpinCtrl* mBurstSpeedMinSpinner{ nullptr };
|
||||
LLSpinCtrl* mBurstSpeedMaxSpinner{ nullptr };
|
||||
LLSpinCtrl* mStartAlphaSpinner{ nullptr };
|
||||
LLSpinCtrl* mEndAlphaSpinner{ nullptr };
|
||||
LLSpinCtrl* mScaleStartXSpinner{ nullptr };
|
||||
LLSpinCtrl* mScaleStartYSpinner{ nullptr };
|
||||
LLSpinCtrl* mScaleEndXSpinner{ nullptr };
|
||||
LLSpinCtrl* mScaleEndYSpinner{ nullptr };
|
||||
LLSpinCtrl* mSourceMaxAgeSpinner{ nullptr };
|
||||
LLSpinCtrl* mParticlesMaxAgeSpinner{ nullptr };
|
||||
LLSpinCtrl* mStartGlowSpinner{ nullptr };
|
||||
LLSpinCtrl* mEndGlowSpinner{ nullptr };
|
||||
|
||||
LLComboBox* mBlendFuncSrcCombo;
|
||||
LLComboBox* mBlendFuncDestCombo;
|
||||
LLComboBox* mBlendFuncSrcCombo{ nullptr };
|
||||
LLComboBox* mBlendFuncDestCombo{ nullptr };
|
||||
|
||||
LLCheckBoxCtrl* mBounceCheckBox;
|
||||
LLCheckBoxCtrl* mEmissiveCheckBox;
|
||||
LLCheckBoxCtrl* mFollowSourceCheckBox;
|
||||
LLCheckBoxCtrl* mFollowVelocityCheckBox;
|
||||
LLCheckBoxCtrl* mInterpolateColorCheckBox;
|
||||
LLCheckBoxCtrl* mInterpolateScaleCheckBox;
|
||||
LLCheckBoxCtrl* mTargetPositionCheckBox;
|
||||
LLCheckBoxCtrl* mTargetLinearCheckBox;
|
||||
LLCheckBoxCtrl* mWindCheckBox;
|
||||
LLCheckBoxCtrl* mRibbonCheckBox;
|
||||
LLCheckBoxCtrl* mBounceCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mEmissiveCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mFollowSourceCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mFollowVelocityCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mInterpolateColorCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mInterpolateScaleCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mTargetPositionCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mTargetLinearCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mWindCheckBox{ nullptr };
|
||||
LLCheckBoxCtrl* mRibbonCheckBox{ nullptr };
|
||||
|
||||
LLLineEditor* mTargetKeyInput;
|
||||
LLButton* mClearTargetButton;
|
||||
LLButton* mPickTargetButton;
|
||||
LLLineEditor* mTargetKeyInput{ nullptr };
|
||||
LLButton* mClearTargetButton{ nullptr };
|
||||
LLButton* mPickTargetButton{ nullptr };
|
||||
|
||||
LLSpinCtrl* mAcellerationXSpinner;
|
||||
LLSpinCtrl* mAcellerationYSpinner;
|
||||
LLSpinCtrl* mAcellerationZSpinner;
|
||||
LLSpinCtrl* mAcellerationXSpinner{ nullptr };
|
||||
LLSpinCtrl* mAcellerationYSpinner{ nullptr };
|
||||
LLSpinCtrl* mAcellerationZSpinner{ nullptr };
|
||||
|
||||
LLSpinCtrl* mOmegaXSpinner;
|
||||
LLSpinCtrl* mOmegaYSpinner;
|
||||
LLSpinCtrl* mOmegaZSpinner;
|
||||
LLSpinCtrl* mOmegaXSpinner{ nullptr };
|
||||
LLSpinCtrl* mOmegaYSpinner{ nullptr };
|
||||
LLSpinCtrl* mOmegaZSpinner{ nullptr };
|
||||
|
||||
LLColorSwatchCtrl* mStartColorSelector;
|
||||
LLColorSwatchCtrl* mEndColorSelector;
|
||||
LLColorSwatchCtrl* mStartColorSelector{ nullptr };
|
||||
LLColorSwatchCtrl* mEndColorSelector{ nullptr };
|
||||
|
||||
LLButton* mCopyToLSLButton;
|
||||
LLButton* mInjectScriptButton;
|
||||
LLButton* mCopyToLSLButton{ nullptr };
|
||||
LLButton* mInjectScriptButton{ nullptr };
|
||||
};
|
||||
|
||||
class ParticleScriptCreationCallback : public LLInventoryCallback
|
||||
{
|
||||
public:
|
||||
ParticleScriptCreationCallback(ParticleEditor* editor);
|
||||
void fire(const LLUUID& inventoryItem);
|
||||
public:
|
||||
ParticleScriptCreationCallback(ParticleEditor* editor);
|
||||
void fire(const LLUUID& inventoryItem);
|
||||
|
||||
protected:
|
||||
~ParticleScriptCreationCallback();
|
||||
protected:
|
||||
~ParticleScriptCreationCallback() = default;
|
||||
|
||||
ParticleEditor* mEditor;
|
||||
ParticleEditor* mEditor;
|
||||
};
|
||||
|
||||
#endif // PARTICLEEDITOR_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue