@@ -1045,14 +1045,28 @@ void MainWindow::SetMeshScaleAndBias() {
1045
1045
void MainWindow::ApplMeshTransform (ScaleAndBiasDlg* sender) {
1046
1046
if (!m_pActiveRenderWin || !sender) return ;
1047
1047
1048
- sender->m_pMesh ->ScaleAndBias (sender->scaleVec , sender->biasVec );
1048
+ if (sender->GetApplyAll ()) {
1049
+ auto meshes = m_pActiveRenderWin->GetRendererMeshes ();
1050
+ for (size_t i = 0 ; i < meshes.size (); ++i) {
1051
+ meshes[i]->ScaleAndBias (sender->scaleVec , sender->biasVec );
1052
+ }
1053
+ } else {
1054
+ sender->m_pMesh ->ScaleAndBias (sender->scaleVec , sender->biasVec );
1055
+ }
1049
1056
m_pActiveRenderWin->RendererSchedule3DWindowRedraws ();
1050
1057
}
1051
1058
1052
1059
void MainWindow::ApplyMatrixMeshTransform (ScaleAndBiasDlg* sender) {
1053
1060
if (!m_pActiveRenderWin || !sender) return ;
1054
1061
1055
- sender->m_pMesh ->Transform (sender->GetExpertTransform ());
1062
+ if (sender->GetApplyAll ()) {
1063
+ auto meshes = m_pActiveRenderWin->GetRendererMeshes ();
1064
+ for (size_t i = 0 ; i < meshes.size (); ++i) {
1065
+ meshes[i]->Transform (sender->GetExpertTransform ());
1066
+ }
1067
+ } else {
1068
+ sender->m_pMesh ->Transform (sender->GetExpertTransform ());
1069
+ }
1056
1070
m_pActiveRenderWin->RendererSchedule3DWindowRedraws ();
1057
1071
}
1058
1072
@@ -1062,8 +1076,16 @@ void MainWindow::RestoreMeshTransform(ScaleAndBiasDlg* sender) {
1062
1076
LuaClassInstance ds = m_pActiveRenderWin->GetRendererDataset ();
1063
1077
vector<shared_ptr<Mesh>> meshes = ss->cexecRet <vector<shared_ptr<Mesh>>>(
1064
1078
ds.fqName () + " .getMeshes" );
1065
- const shared_ptr<Mesh> m = meshes[sender->m_index ];
1066
- m_pActiveRenderWin->RendererReloadMesh (sender->m_index , m);
1079
+
1080
+ if (sender->GetApplyAll ()) {
1081
+ for (size_t i = 0 ; i < meshes.size (); ++i) {
1082
+ const shared_ptr<Mesh> m = meshes[i];
1083
+ m_pActiveRenderWin->RendererReloadMesh (i, m);
1084
+ }
1085
+ } else {
1086
+ const shared_ptr<Mesh> m = meshes[sender->m_index ];
1087
+ m_pActiveRenderWin->RendererReloadMesh (sender->m_index , m);
1088
+ }
1067
1089
m_pActiveRenderWin->RendererSchedule3DWindowRedraws ();
1068
1090
}
1069
1091
@@ -1078,21 +1100,44 @@ void MainWindow::SaveMeshTransform(ScaleAndBiasDlg* sender) {
1078
1100
pleaseWait.SetText (" Saving transformation to UVF file..." );
1079
1101
pleaseWait.AttachLabel (&m_MasterController);
1080
1102
1081
- const FLOATMATRIX4& m = m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->GetTransformFromOriginal ();
1082
- const FLOATVECTOR4& c = m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->GetDefaultColor ();
1083
-
1084
1103
m_pActiveRenderWin->SetDatasetIsInvalid (true );
1085
1104
1086
- if (!ss->cexecRet <bool >(ds.fqName () + " .geomTransformToFile" ,
1087
- static_cast <size_t >(sender->m_index ), m, c)) {
1105
+ if (sender->GetApplyAll ()) {
1106
+ auto meshes = m_pActiveRenderWin->GetRendererMeshes ();
1107
+ bool error = false ;
1108
+ for (size_t i = 0 ; i < meshes.size (); ++i) {
1109
+ const FLOATMATRIX4& m = meshes[i]->GetTransformFromOriginal ();
1110
+ const FLOATVECTOR4& c = meshes[i]->GetDefaultColor ();
1111
+
1112
+ if (!ss->cexecRet <bool >(ds.fqName () + " .geomTransformToFile" , i, m, c)) {
1113
+ error = true ;
1114
+ break ;
1115
+ } else {
1116
+ meshes[i]->DeleteTransformFromOriginal ();
1117
+ }
1118
+ }
1088
1119
pleaseWait.close ();
1089
- ShowCriticalDialog (" Transform Save Failed." ,
1090
- " Could not save geometry transform to the UVF file, "
1091
- " maybe the file is write protected? For details please "
1092
- " check the debug log ('Help | Debug Window')." );
1120
+ if (error) {
1121
+ ShowCriticalDialog (" Transform Save Failed." ,
1122
+ " Could not save geometry transform to the UVF file, "
1123
+ " maybe the file is write protected? For details please "
1124
+ " check the debug log ('Help | Debug Window')." );
1125
+ }
1093
1126
} else {
1094
- m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->DeleteTransformFromOriginal ();
1095
- pleaseWait.close ();
1127
+ const FLOATMATRIX4& m = m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->GetTransformFromOriginal ();
1128
+ const FLOATVECTOR4& c = m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->GetDefaultColor ();
1129
+
1130
+ if (!ss->cexecRet <bool >(ds.fqName () + " .geomTransformToFile" ,
1131
+ static_cast <size_t >(sender->m_index ), m, c)) {
1132
+ pleaseWait.close ();
1133
+ ShowCriticalDialog (" Transform Save Failed." ,
1134
+ " Could not save geometry transform to the UVF file, "
1135
+ " maybe the file is write protected? For details please "
1136
+ " check the debug log ('Help | Debug Window')." );
1137
+ } else {
1138
+ m_pActiveRenderWin->GetRendererMeshes ()[sender->m_index ]->DeleteTransformFromOriginal ();
1139
+ pleaseWait.close ();
1140
+ }
1096
1141
}
1097
1142
1098
1143
m_pActiveRenderWin->SetDatasetIsInvalid (false );
0 commit comments