Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm into jp-translation

meow-7.2.2
logue 2025-03-27 20:05:10 +09:00
commit 2d79e0337e
5 changed files with 57 additions and 41 deletions

View File

@ -26220,5 +26220,16 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>1</integer>
</map>
<key>FSLocalMeshApplyJointOffsets</key>
<map>
<key>Comment</key>
<string>use joint offsets if they are present</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -3147,10 +3147,10 @@ void LLPanelProfileNotes::updateData()
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim() && gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty())
{
LLUUID avatar_id = getAvatarId();
if (!getStarted() && avatar_id.notNull() && gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty() && !getSelfProfile())
{
setIsLoading();
LLUUID avatar_id = getAvatarId();
if (!getStarted() && avatar_id.notNull())
{
setIsLoading();
LLAvatarPropertiesProcessor::getInstance()->sendAvatarNotesRequest(avatar_id);
}
}

View File

@ -1032,8 +1032,6 @@
max_val="5"
top_delta="-2"
width="127">
<slider_bar.commit_callback
function="Advanced.ClearShaderCache" />
</slider_bar>
<spinner
name="S_Shadow_Res"
@ -1047,8 +1045,6 @@
min_val="0"
width="53"
increment="0.5">
<spinner.commit_callback
function="Advanced.ClearShaderCache" />
</spinner>
<button
follows="left|top"

View File

@ -5,7 +5,7 @@
can_resize="true"
can_dock="false"
can_close="true"
height="300"
height="305"
width="505"
min_width="505"
min_height="300"
@ -21,7 +21,7 @@
follows="top|left|right|bottom"
top="20"
left="0"
height="223"
height="233"
width="500"
tab_position="top"
enable_tabs_flashing="true"
@ -114,6 +114,15 @@
width="300"
label="Assume scale is in meters."
tool_tip="Ignore the cm scale units used by tools such as Maya" />
<check_box name="local_mesh_scale_use_meters"
height="15"
control_name="FSLocalMeshApplyJointOffsets"
follows="top|left"
top_pad="5"
left="8"
width="300"
label="Apply joint offsets."
tool_tip="Apply any joint offsets in the mesh, by default these are ignored." />
<text name="lod_suffix_label"
follows="left|top"
layout="topleft"
@ -256,7 +265,6 @@
label="Apply"
layout="topleft"
left="10"
top="253"
width="90"
visible="true" />
<combo_box name="object_apply_list"
@ -264,7 +272,7 @@
layout="topleft"
follows="bottom"
left="105"
top="253"
top_delta="0"
width="315"
visible="true" />
<button name="btn_add"
@ -272,7 +280,6 @@
label="Add"
layout="topleft"
left="10"
top="275"
width="90"
visible="true" />
<button name="btn_remove"
@ -280,7 +287,7 @@
label="Remove"
layout="topleft"
left="105"
top="275"
top_delta="0"
width="90"
visible="true" />
<button name="btn_reload"
@ -288,7 +295,7 @@
label="Reload"
layout="topleft"
left="200"
top="275"
top_delta="0"
width="90"
visible="true" />
<button name="btn_clear"
@ -296,7 +303,7 @@
label="Clear"
layout="topleft"
left="295"
top="275"
top_delta="0"
width="90"
visible="true" />
<button name="btn_rez"
@ -305,7 +312,7 @@
tool_tip="Create a donor mesh inworld and populate with selected local mesh. This creates an empty object in-world."
layout="topleft"
left="390"
top="275"
top_delta="0"
width="90"
visible="true" />
</floater>

View File

@ -753,34 +753,36 @@ bool LLLocalMeshImportDAE::processSkin(daeDatabase* collada_db, daeElement* coll
}
}
}
int jointname_idx = 0;
for (auto jointname_iterator = skininfop->mJointNames.begin(); jointname_iterator != skininfop->mJointNames.end(); ++jointname_iterator, ++jointname_idx)
static LLCachedControl<bool> apply_joint_offsets(gSavedSettings, "FSLocalMeshApplyJointOffsets");
if (apply_joint_offsets)
{
std::string name_lookup = jointname_iterator->mName;
if (joint_map.find(name_lookup) == joint_map.end())
int jointname_idx = 0;
for (auto jointname_iterator = skininfop->mJointNames.begin();
jointname_iterator != skininfop->mJointNames.end();
++jointname_iterator, ++jointname_idx)
{
pushLog("DAE Importer", "WARNING: Unknown joint named " + name_lookup + " found, skipping over it.");
continue;
std::string name_lookup = jointname_iterator->mName;
if (joint_map.find(name_lookup) == joint_map.end())
{
pushLog("DAE Importer", "WARNING: Unknown joint named " + name_lookup + " found, skipping over it.");
continue;
}
else
{
LL_DEBUGS("LocalMesh") << "Calc invBindMat for joint name: " << name_lookup << LL_ENDL;
}
if (skininfop->mInvBindMatrix.size() <= jointname_idx)
{
pushLog("DAE Importer", "WARNING: Requesting out of bounds joint named " + name_lookup);
break;
}
LLMatrix4 newinverse = LLMatrix4(skininfop->mInvBindMatrix[jointname_idx].getF32ptr());
const auto& joint_translation = joint_transforms[name_lookup].getTranslation();
newinverse.setTranslation(joint_translation);
skininfop->mAlternateBindMatrix.push_back(LLMatrix4a(newinverse));
}
else
{
LL_DEBUGS("LocalMesh") << "Calc invBindMat for joint name: " << name_lookup << LL_ENDL;
}
if (skininfop->mInvBindMatrix.size() <= jointname_idx)
{
// doesn't seem like a critical fail that should invalidate the entire skin, just break and move on?
pushLog("DAE Importer", "WARNING: Requesting out of bounds joint named " + name_lookup);
break;
}
LLMatrix4 newinverse = LLMatrix4(skininfop->mInvBindMatrix[jointname_idx].getF32ptr());
const auto& joint_translation = joint_transforms[name_lookup].getTranslation();
newinverse.setTranslation(joint_translation);
skininfop->mAlternateBindMatrix.push_back( LLMatrix4a(newinverse) );
}
size_t bind_count = skininfop->mAlternateBindMatrix.size();
if ((bind_count > 0) && (bind_count != skininfop->mJointNames.size()))
{