@@ -95,6 +95,10 @@ Plateau2::Plateau2(const InstanceInfo& info)
9595 PageBackgroundControl = new ISVGControl (pGraphics->GetBounds (), PageBackgrounds[0 ]);
9696 pGraphics->AttachControl (PageBackgroundControl);
9797
98+ SVGs[3 ] = new ISVGControl (IRECT::MakeMidXYWH (157 .5f , 471 .9415f , 192 .880f , 190.783 ), pGraphics->LoadSVG (DANGERPANEL_FN));
99+ pGraphics->AttachControl (SVGs[3 ]);
100+ SVGs[3 ]->Hide (true );
101+
98102 pGraphics->LoadFont (" Roboto-Regular" , ROBOTO_FN);
99103 const ISVG NeedleSVG = pGraphics->LoadSVG (NEEDLE_FN);
100104 const ISVG NeedleBGSVG = pGraphics->LoadSVG (NEEDLEBG_FN);
@@ -124,16 +128,15 @@ Plateau2::Plateau2(const InstanceInfo& info)
124128 Knobs[13 ]->StartAngle = -72 .6923f ;
125129 Knobs[13 ]->EndAngle = 72 .6923f ;
126130
127- Knobs[14 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 160 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInput1 , kInput2 );
128- Knobs[15 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 160 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kStereoSource1 , kStereoSource2 );
131+ Knobs[14 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInput1 , kInput2 );
132+ Knobs[15 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kStereoSource1 , kStereoSource2 );
129133
130- Knobs[16 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 250 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWidth1 , kWidth2 );
131- Knobs[17 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 250 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPan1 , kPan2 );
134+ Knobs[16 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWidth1 , kWidth2 );
135+ Knobs[17 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPan1 , kPan2 );
132136
133- Knobs[18 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG1PNG, k1to2Level, k1to2Level);
134- Knobs[19 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG2PNG, NeedleFG2PNG, k2to1Level, k2to1Level);
137+ Knobs[18 ] = new NeedleKnob (IRECT::MakeXYWH (130 , 454 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2Level, k2to1Level);
135138
136- for (int i = 12 ; i <= 19 ; i++) {
139+ for (int i = 12 ; i <= 18 ; i++) {
137140 pGraphics->AttachControl (Knobs[i]);
138141 Knobs[i]->Hide (true );
139142 }
@@ -189,14 +192,21 @@ Plateau2::Plateau2(const InstanceInfo& info)
189192 Switches[6 ] = new LEDSwitch (IRECT::MakeXYWH (102 , 301 , 112 , 112 ), 1 , DangerOffSVG, DangerOnSVG, DangerOnSVG, kDanger , kDanger );
190193
191194 // Routing page Switches
192- Switches[7 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 - 20 , 430 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn1SVG, k1to2, k1to2);
193- Switches[8 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 + 20 , 430 , 102 , 102 ), LEDScale, LedOffSVG, LedOn2SVG, LedOn2SVG, k2to1, k2to1);
195+ Switches[7 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 , 374 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn2SVG, k1to2, k2to1);
194196
195- for (int i = 5 ; i <= 8 ; i++) {
197+ for (int i = 5 ; i <= 7 ; i++) {
196198 pGraphics->AttachControl (Switches[i]);
197199 Switches[i]->Hide (true );
198200 }
199201
202+ SVGs[0 ] = new ISVGControl (IRECT::MakeMidXYWH (157 .5f , 395 , 86 .109f , 14 .207f ), pGraphics->LoadSVG (SEND1TO2_FN));
203+ SVGs[1 ] = new ISVGControl (IRECT::MakeMidXYWH (157 .5f , 395 , 89 .227f , 17 .208f ), pGraphics->LoadSVG (SEND2TO1_FN));
204+ SVGs[2 ] = new ISVGControl (IRECT::MakeMidXYWH (157 .5f , 480 , 162 .106f , 45 .576f ), pGraphics->LoadSVG (REQUIRESDANGER_FN));
205+
206+ for (int i = 0 ; i <= 2 ; i++) {
207+ pGraphics->AttachControl (SVGs[i]);
208+ SVGs[i]->Hide (true );
209+ }
200210
201211
202212 LEDRadio* tank1Select = new LEDRadio (IRECT::MakeXYWH (106.5 - 20 , 40 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, [this ](IControl* radioControl) {SelectTank (false );});
@@ -228,6 +238,9 @@ void Plateau2::SelectTank(bool tank2) {
228238 for (int i = 0 ; i < kNumButtons ; i++) {
229239 Buttons[i]->SelectTank (tank2);
230240 }
241+
242+ UpdateSendVisibility ();
243+
231244 IEditorDelegate::SendCurrentParamValuesFromDelegate ();
232245}
233246
@@ -268,12 +281,24 @@ void Plateau2::UpdatePageVisibility()
268281 }
269282
270283 // Routing page
271- for (int i = 14 ; i <= 19 ; i++) {
284+ for (int i = 14 ; i <= 17 ; i++) {
272285 Knobs[i]->Hide (currentPage != 2 );
273286 }
274- for (int i = 7 ; i <= 8 ; i++) {
275- Switches[i]->Hide (currentPage != 2 );
276- }
287+ UpdateSendVisibility ();
288+ }
289+
290+ void Plateau2::UpdateSendVisibility () {
291+ for (int i = 7 ; i <= 7 ; i++) {
292+ Switches[i]->Hide (currentPage != 2 );
293+ }
294+ bool dangerous = GetParam (kDanger )->Value ();
295+ for (int i = 18 ; i <= 18 ; i++) {
296+ Knobs[i]->Hide (currentPage != 2 || (!dangerous && tank2Selected));
297+ }
298+ SVGs[0 ]->Hide (currentPage != 2 || tank2Selected);
299+ SVGs[1 ]->Hide (currentPage != 2 || !tank2Selected);
300+ SVGs[2 ]->Hide (currentPage != 2 || !tank2Selected || dangerous);
301+ SVGs[3 ]->Hide (currentPage != 2 || !tank2Selected);
277302}
278303
279304
@@ -464,6 +489,7 @@ void Plateau2::OnParamChange(int index)
464489 if (initalizedInterface) {
465490 Knobs[13 ]->SetValue ((tank2Selected ? GetParam (kDiffusionDecay2 )->Value () : GetParam (kDiffusionDecay1 )->Value ()) / 100 );
466491 Knobs[13 ]->SetDirty (false );
492+ UpdateSendVisibility ();
467493 }
468494 break ;
469495 }
@@ -493,7 +519,7 @@ void Plateau2::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
493519 const double wet1Param = GetParam (kWet1 )->Value () / 100 ;
494520 const double input1 = GetParam (kInput1 )->Value () / 100 ;
495521 const double level2to1 = GetParam (k2to1Level)->Value () / 100 ;
496- const bool send2to1 = tank2Enabled && GetParam (k2to1)->Value ();
522+ const bool send2to1 = tank2Enabled && GetParam (k2to1)->Value () && GetParam ( kDanger )-> Value () ;
497523
498524 if (clear1Param && !clear1 && cleared1) {
499525 cleared1 = false ;
0 commit comments