From e2fd2687d475d720da8f24db031dbab2e8855149 Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 18 May 2021 23:27:52 +0100 Subject: [PATCH] FIRE-30963 - better physics defaults --- indra/newview/app_settings/settings.xml | 11 +++ indra/newview/fs_resources/cube_phys.dae | 74 +++++++++++++++++++ indra/newview/fs_resources/hex_phys.dae | 70 ++++++++++++++++++ indra/newview/llfloatermodelpreview.cpp | 19 ++++- indra/newview/llmodelpreview.cpp | 31 ++++++++ indra/newview/llmodelpreview.h | 1 + .../default/xui/en/floater_model_preview.xml | 30 +++++++- indra/newview/viewer_manifest.py | 1 + 8 files changed, 232 insertions(+), 5 deletions(-) create mode 100644 indra/newview/fs_resources/cube_phys.dae create mode 100644 indra/newview/fs_resources/hex_phys.dae diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8085746764..f278f4dcf2 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9399,6 +9399,17 @@ Value salt_and_pepper.jpg + FSPhysicsPresetUser1 + + Comment + full system path to a user provided physics mesh (DAE). + Persist + 1 + Type + String + Value + + MigrateCacheDirectory Comment diff --git a/indra/newview/fs_resources/cube_phys.dae b/indra/newview/fs_resources/cube_phys.dae new file mode 100644 index 0000000000..80a92cb38c --- /dev/null +++ b/indra/newview/fs_resources/cube_phys.dae @@ -0,0 +1,74 @@ + + + + + Avastar User + Avastar 2-0-10 on Blender 2.78 (sub 0) + + 2017-02-03T17:31:59 + 2017-02-03T17:31:59 + + Z_UP + + + + + + + + + + -0.4 -0.4 -0.4 -0.4 -0.4 0.4 -0.4 0.4 -0.4 -0.4 0.4 0.4 0.4 -0.4 -0.4 0.4 -0.4 0.4 0.4 0.4 -0.4 0.4 0.4 0.4 + + + + + + + + + + -1 -0 0 0 1 0 1 -0 0 0 -1 0 0 0 -1 0 -0 1 + + + + + + + + + + + + + + + 4 4 4 4 4 4 +

0 0 1 0 3 0 2 0 2 1 3 1 7 1 6 1 6 2 7 2 5 2 4 2 4 3 5 3 1 3 0 3 2 4 6 4 4 4 0 4 7 5 3 5 1 5 5 5

+
+
+ + + 1 + + +
+
+ + + + + 5.93563 6.77334 -14.9673 + 0 0 1 0 + 0 1 0 0 + 1 0 0 0 + 1 1 1 + + + + + + + +
+ diff --git a/indra/newview/fs_resources/hex_phys.dae b/indra/newview/fs_resources/hex_phys.dae new file mode 100644 index 0000000000..21d05cca6f --- /dev/null +++ b/indra/newview/fs_resources/hex_phys.dae @@ -0,0 +1,70 @@ + + + + + Blender User + Blender 2.80.43 commit date:2019-01-29, commit time:22:41, hash:a1ae04d15a9f + + 2019-02-05T14:28:24 + 2019-02-05T14:28:24 + + Z_UP + + + + + + + 0 1 -1 0 1 1 0.8660255 0.5 -1 0.8660255 0.5 1 0.8660254 -0.5000001 -1 0.8660254 -0.5000001 1 0 -1 -1 0 -1 1 -0.8660255 -0.4999999 -1 -0.8660255 -0.4999999 1 -0.8660255 0.4999999 -1 -0.8660255 0.4999999 1 + + + + + + + + + + 0.5 0.8660255 0 1 0 0 0.5 -0.8660255 0 -0.5000001 -0.8660253 0 0 0 1 -1 0 0 -0.5000001 0.8660255 0 0 0 -1 1 -1.19209e-7 0 0.5 -0.8660255 0 -0.5000001 -0.8660254 0 0 0 1 1.37651e-7 0 1 0 0 1 1.37651e-7 0 -1 1.37651e-7 0 -1 + + + + + + + + + + 1 1 0.8333333 0.5 1 0.5 0.8333333 1 0.6666666 0.5 0.8333333 0.5 0.6666666 1 0.5 0.5 0.6666666 0.5 0.5 1 0.3333333 0.5 0.5 0.5 0.25 0.49 0.04215389 0.13 0.4578461 0.1299999 0.3333333 1 0.1666666 0.5 0.3333333 0.5 0.1666666 1 0 0.5 0.1666666 0.5 0.5421539 0.13 0.5421539 0.37 0.9578461 0.37 1 1 0.8333333 1 0.8333333 0.5 0.8333333 1 0.6666666 1 0.6666666 0.5 0.6666666 1 0.5 1 0.5 0.5 0.5 1 0.3333333 1 0.3333333 0.5 0.4578461 0.1299999 0.4578461 0.37 0.25 0.49 0.25 0.49 0.04215389 0.37 0.04215389 0.13 0.04215389 0.13 0.25 0.00999999 0.4578461 0.1299999 0.3333333 1 0.1666666 1 0.1666666 0.5 0.1666666 1 0 1 0 0.5 0.5421539 0.37 0.75 0.49 0.9578461 0.37 0.9578461 0.37 0.9578461 0.1299999 0.75 0.00999999 0.75 0.00999999 0.5421539 0.13 0.9578461 0.37 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

1 0 0 2 0 1 0 0 2 3 1 3 4 1 4 2 1 5 5 2 6 6 2 7 4 2 8 7 3 9 8 3 10 6 3 11 1 4 12 9 4 13 5 4 14 9 5 15 10 5 16 8 5 17 11 6 18 0 6 19 10 6 20 8 7 21 10 7 22 2 7 23 1 0 24 3 0 25 2 0 26 3 8 27 5 8 28 4 8 29 5 9 30 7 9 31 6 9 32 7 10 33 9 10 34 8 10 35 5 11 36 3 11 37 1 11 38 1 12 39 11 12 40 9 12 41 9 13 42 7 13 43 5 13 44 9 5 45 11 5 46 10 5 47 11 6 48 1 6 49 0 6 50 10 14 51 0 14 52 2 14 53 2 15 54 4 15 55 6 15 56 6 7 57 8 7 58 2 7 59

+
+
+
+
+ + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + +
\ No newline at end of file diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 294b0b234a..9f34b59bf6 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1139,8 +1139,21 @@ void LLFloaterModelPreview::onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata) S32 file_mode = iface->getItemCount() - 1; if (which_mode < file_mode) { - S32 which_lod = num_lods - which_mode; - sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + // FIRE-30963 Support pre-defined physics shapes (initially cube) + // S32 which_lod = num_lods - which_mode; + // sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + if(which_mode >= num_lods) + { + // which_mode is between the last LOD entry and file selection + // so it is a preset + sInstance->mModelPreview->setPhysicsFromPreset(which_mode-num_lods); + } + else + { + S32 which_lod = num_lods - which_mode; + sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + } + // } LLModelPreview *model_preview = sInstance->mModelPreview; @@ -1747,7 +1760,7 @@ void LLFloaterModelPreview::setCtrlLoadFromFile(S32 lod) LLComboBox* lod_combo = findChild("physics_lod_combo"); if (lod_combo) { - lod_combo->setCurrentByIndex(5); + lod_combo->setCurrentByIndex(lod_combo->getItemCount() - 1); // FIRE-30963 - better physics defaults } } else diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index e322081a48..58c74e8d95 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -923,7 +923,38 @@ void LLModelPreview::setPhysicsFromLOD(S32 lod) updateStatusMessages(); } } +// FIRE-30963 - better physics defaults +void LLModelPreview::setPhysicsFromPreset(S32 preset) +{ + assert_main_thread(); + mPhysicsSearchLOD = -1; + mLODFile[LLModel::LOD_PHYSICS].clear(); + mFMP->childSetValue("physics_file", mLODFile[LLModel::LOD_PHYSICS]); + mVertexBuffer[LLModel::LOD_PHYSICS].clear(); + if(preset == 1) + { + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_FS_RESOURCES, "cube_phys.dae"), LLModel::LOD_PHYSICS); + } + else if(preset == 2) + { + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_FS_RESOURCES, "hex_phys.dae"), LLModel::LOD_PHYSICS); + } + else if(preset == 3) + { + auto ud_physics = gSavedSettings.getString("FSPhysicsPresetUser1"); + LL_INFOS() << "Loading User defined Physics Preset [" << ud_physics << "]" << LL_ENDL; + if (ud_physics != "" && gDirUtilp->fileExists(ud_physics)) + { + // loading physics from file + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_NONE, gDirUtilp->getDirName(ud_physics), gDirUtilp->getBaseFileName(ud_physics, false)), LLModel::LOD_PHYSICS); + } + } +} +// void LLModelPreview::clearIncompatible(S32 lod) { //Don't discard models if specified model is the physic rep diff --git a/indra/newview/llmodelpreview.h b/indra/newview/llmodelpreview.h index a0e1d2b18c..90a3fccf81 100644 --- a/indra/newview/llmodelpreview.h +++ b/indra/newview/llmodelpreview.h @@ -139,6 +139,7 @@ public: void setTexture(U32 name) { mTextureName = name; } void setPhysicsFromLOD(S32 lod); + void setPhysicsFromPreset(S32 preset);// FIRE-30963 - better physics defaults BOOL render(); void update(); void genBuffers(S32 lod, bool skinned); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 2d091d1d34..684dbaa81b 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -788,6 +788,9 @@ Medium Low Lowest + Cube + Hexagon + User Defined From file + + Physics User Defined Preset: + + Include firestorm resources with self.prefix(src_dst="fs_resources"): self.path("*.lsltxt") + self.path("*.dae") # FIRE-30963 - better physics defaults # skins with self.prefix(src_dst="skins"):