@@ -1080,7 +1080,14 @@ void AeroEngineWidget::Setup(std::string const& engfire_elemname, std::string co
1080
1080
// Because highlighting works on per-material basis, we must clone the material for each element
1081
1081
engfire_element = Ogre::OverlayManager::getSingleton ().getOverlayElement (engfire_elemname);
1082
1082
thr_element = Ogre::OverlayManager::getSingleton ().getOverlayElement (thr_elemname);
1083
- thr_element->setMaterial (thr_element->getMaterial ()->clone (thr_element->getMaterial ()->getName () + " @" + thr_elemname));
1083
+ thr_material = thr_element->getMaterial ()->clone (thr_element->getMaterial ()->getName () + " @" + thr_elemname);
1084
+ thr_element->setMaterial (thr_material);
1085
+ }
1086
+
1087
+ AeroEngineWidget::~AeroEngineWidget ()
1088
+ {
1089
+ // Remove cloned materials
1090
+ Ogre::MaterialManager::getSingleton ().remove (thr_material);
1084
1091
}
1085
1092
1086
1093
bool AeroEngineWidget::UpdateMouseHover ()
@@ -1119,6 +1126,13 @@ void AeroSwitchWidget::Setup(std::string const & elem_name, std::string const &
1119
1126
off_material = Ogre::MaterialManager::getSingleton ().getByName (mat_off)->clone (elem_name + " @" + mat_off);
1120
1127
}
1121
1128
1129
+ AeroSwitchWidget::~AeroSwitchWidget ()
1130
+ {
1131
+ // Remove cloned materials
1132
+ Ogre::MaterialManager::getSingleton ().remove (on_material);
1133
+ Ogre::MaterialManager::getSingleton ().remove (off_material);
1134
+ }
1135
+
1122
1136
bool AeroSwitchWidget::UpdateMouseHover ()
1123
1137
{
1124
1138
// Element's current material switches dynamically based on game state, we must always sync both variants.
@@ -1150,9 +1164,18 @@ void AeroTrimWidget::Setup(std::string const & up, std::string const & dn, std::
1150
1164
// Because highlighting works on per-material basis, we must clone the material for each element
1151
1165
display = Ogre::OverlayManager::getSingleton ().getOverlayElement (disp);
1152
1166
up_button = Ogre::OverlayManager::getSingleton ().getOverlayElement (up);
1153
- up_button->setMaterial (up_button->getMaterial ()->clone (up + " $" + disp));
1167
+ up_material = up_button->getMaterial ()->clone (up + " $" + disp);
1168
+ up_button->setMaterial (up_material);
1154
1169
dn_button = Ogre::OverlayManager::getSingleton ().getOverlayElement (dn);
1155
- dn_button->setMaterial (dn_button->getMaterial ()->clone (dn + " $" + disp));
1170
+ down_material = dn_button->getMaterial ()->clone (dn + " $" + disp);
1171
+ dn_button->setMaterial (down_material);
1172
+ }
1173
+
1174
+ AeroTrimWidget::~AeroTrimWidget ()
1175
+ {
1176
+ // Remove cloned materials
1177
+ Ogre::MaterialManager::getSingleton ().remove (up_material);
1178
+ Ogre::MaterialManager::getSingleton ().remove (down_material);
1156
1179
}
1157
1180
1158
1181
bool AeroTrimWidget::UpdateMouseHover ()
0 commit comments