code style

and the fix
This commit is contained in:
tildearrow 2023-02-06 01:36:19 -05:00
parent 056c895c69
commit 4c39de927b
1 changed files with 259 additions and 366 deletions

View File

@ -41,208 +41,196 @@ const char* waveInterpolations[4]={
}; };
double sinus(double x) { double sinus(double x) {
return sin(x); return sin(x);
} }
double rectSin(double x) { double rectSin(double x) {
return sin(x) > 0 ? sin(x) : 0; return sin(x) > 0 ? sin(x) : 0;
} }
double absSin(double x) { double absSin(double x) {
return abs(sin(x)); return fabs(sin(x));
} }
double square(double x) { double square(double x) {
return fmod(x, (2 * M_PI)) >= M_PI ? -1 : 1; return fmod(x, (2 * M_PI)) >= M_PI ? -1 : 1;
} }
double rectSquare(double x) { double rectSquare(double x) {
return square(x) > 0 ? square(x) : 0; return square(x) > 0 ? square(x) : 0;
} }
double quartSin(double x) { double quartSin(double x) {
//if (x < M_PI / 2 || (x >= M_PI && x < (M_PI + M_PI / 2))) return absSin(x) * rectSquare(2 * x);
// return absSin(x);
//return 0;
return absSin(x) * rectSquare(2 * x);
} }
double squiSin(double x) { double squiSin(double x) {
return sin(x) >= 0 ? sin(2 * x) : 0; return sin(x) >= 0 ? sin(2 * x) : 0;
} }
double squiAbsSin(double x) { double squiAbsSin(double x) {
return abs(squiSin(x)); return fabs(squiSin(x));
} }
double saw(double x) { double saw(double x) {
return atan(tan(x / 2)) / (M_PI / 2); return atan(tan(x / 2)) / (M_PI / 2);
} }
double rectSaw(double x) { double rectSaw(double x) {
return saw(x) > 0 ? saw(x) : 0; return saw(x) > 0 ? saw(x) : 0;
} }
double absSaw(double x) { double absSaw(double x) {
return saw(x) < 0 ? saw(x) + 1 : saw(x); return saw(x) < 0 ? saw(x) + 1 : saw(x);
} }
double cubSaw(double x) { double cubSaw(double x) {
return pow(saw(x), 3); return pow(saw(x), 3);
} }
double rectCubSaw(double x) { double rectCubSaw(double x) {
return pow(rectSaw(x), 3); return pow(rectSaw(x), 3);
} }
double absCubSaw(double x) { double absCubSaw(double x) {
return pow(absSaw(x), 3); return pow(absSaw(x), 3);
} }
double cubSine(double x) { double cubSine(double x) {
return pow(sin(x), 3); return pow(sin(x), 3);
} }
double rectCubSin(double x) { double rectCubSin(double x) {
return pow(rectSin(x), 3); return pow(rectSin(x), 3);
} }
double absCubSin(double x) { double absCubSin(double x) {
return pow(absSin(x), 3); return pow(absSin(x), 3);
} }
double quartCubSin(double x) { double quartCubSin(double x) {
return pow(quartSin(x), 3); return pow(quartSin(x), 3);
} }
double squishCubSin(double x) { double squishCubSin(double x) {
return pow(squiSin(x), 3); return pow(squiSin(x), 3);
} }
double squishAbsCubSin(double x) { double squishAbsCubSin(double x) {
return pow(squiAbsSin(x), 3); return pow(squiAbsSin(x), 3);
} }
double triangle(double x) { double triangle(double x) {
return asin(sin(x)) / (M_PI / 2); return asin(sin(x)) / (M_PI / 2);
} }
double rectTri(double x) { double rectTri(double x) {
return triangle(x) > 0 ? triangle(x) : 0; return triangle(x) > 0 ? triangle(x) : 0;
} }
double absTri(double x) { double absTri(double x) {
return abs(triangle(x)); return fabs(triangle(x));
} }
double quartTri(double x) { double quartTri(double x) {
//if (x < M_PI / 2 || (x >= M_PI && x < (M_PI + M_PI / 2))) return absTri(x) * rectSquare(2 * x);
// return absTri(x);
//return 0;
return absTri(x) * rectSquare(2 * x);
} }
double squiTri(double x) { double squiTri(double x) {
return sin(x) >= 0 ? triangle(2 * x) : 0; return sin(x) >= 0 ? triangle(2 * x) : 0;
} }
double absSquiTri(double x) { double absSquiTri(double x) {
return abs(squiTri(x)); return fabs(squiTri(x));
} }
double cubTriangle(double x) { double cubTriangle(double x) {
return pow(triangle(x), 3); return pow(triangle(x), 3);
} }
double cubRectTri(double x) { double cubRectTri(double x) {
return pow(rectTri(x), 3); return pow(rectTri(x), 3);
} }
double cubAbsTri(double x) { double cubAbsTri(double x) {
return pow(absTri(x), 3); return pow(absTri(x), 3);
} }
double cubQuartTri(double x) { double cubQuartTri(double x) {
return pow(quartTri(x), 3); return pow(quartTri(x), 3);
} }
double cubSquiTri(double x) { double cubSquiTri(double x) {
return pow(squiTri(x), 3); return pow(squiTri(x), 3);
} }
double absCubSquiTri(double x) { double absCubSquiTri(double x) {
return abs(cubSquiTri(x)); return fabs(cubSquiTri(x));
} }
typedef double (*WaveFunc) (double a); typedef double (*WaveFunc) (double a);
WaveFunc waveFuncs[] = { WaveFunc waveFuncs[]={
sinus, sinus,
rectSin, rectSin,
absSin, absSin,
quartSin, quartSin,
squiSin, squiSin,
squiAbsSin, squiAbsSin,
square, square,
rectSquare, rectSquare,
saw, saw,
rectSaw, rectSaw,
absSaw, absSaw,
cubSaw, cubSaw,
rectCubSaw, rectCubSaw,
absCubSaw, absCubSaw,
cubSine, cubSine,
rectCubSin, rectCubSin,
absCubSin, absCubSin,
quartCubSin, quartCubSin,
squishCubSin, squishCubSin,
squishAbsCubSin, squishAbsCubSin,
triangle, triangle,
rectTri, rectTri,
absTri, absTri,
quartTri, quartTri,
squiTri, squiTri,
absSquiTri, absSquiTri,
cubTriangle, cubTriangle,
cubRectTri, cubRectTri,
cubAbsTri, cubAbsTri,
cubQuartTri, cubQuartTri,
cubSquiTri, cubSquiTri,
absCubSquiTri absCubSquiTri
}; };
const char* fmWaveforms[] = { const char* fmWaveforms[] = {
"Sine", "Sine",
"Rect. Sine", "Rect. Sine",
"Abs. Sine", "Abs. Sine",
"Quart. Sine", "Quart. Sine",
"Squish. Sine", "Squish. Sine",
"Abs. Squish. Sine", "Abs. Squish. Sine",
"Square", "Square",
"rectSquare", "rectSquare",
"Saw", "Saw",
"Rect. Saw", "Rect. Saw",
"Abs. Saw", "Abs. Saw",
"Cubed Saw", "Cubed Saw",
"Rect. Cubed Saw", "Rect. Cubed Saw",
"Abs. Cubed Saw", "Abs. Cubed Saw",
"Cubed Sine", "Cubed Sine",
"Rect. Cubed Sine", "Rect. Cubed Sine",
"Abs. Cubed Sine", "Abs. Cubed Sine",
"Quart. Cubed Sine", "Quart. Cubed Sine",
"Squish. Cubed Sine", "Squish. Cubed Sine",
"Squish. Abs. Cub. Sine", "Squish. Abs. Cub. Sine",
"Triangle", "Triangle",
"Rect. Triangle", "Rect. Triangle",
"Abs. Triangle", "Abs. Triangle",
"Quart. Triangle", "Quart. Triangle",
"Squish. Triangle", "Squish. Triangle",
"Abs. Squish. Triangle", "Abs. Squish. Triangle",
"Cubed Triangle", "Cubed Triangle",
"Rect. Cubed Triangle", "Rect. Cubed Triangle",
"Abs. Cubed Triangle", "Abs. Cubed Triangle",
"Quart. Cubed Triangle", "Quart. Cubed Triangle",
"Squish. Cubed Triangle", "Squish. Cubed Triangle",
"Squish. Abs. Cub. Triangle", "Squish. Abs. Cub. Triangle",
}; };
const size_t fmWaveformsLen=sizeof(fmWaveforms)/sizeof(fmWaveforms[0]);
const float multFactors[17]={ const float multFactors[17]={
M_PI, M_PI,
2*M_PI, 2*M_PI,
@ -263,8 +251,6 @@ const float multFactors[17]={
32*M_PI, 32*M_PI,
}; };
void FurnaceGUI::doGenerateWave() { void FurnaceGUI::doGenerateWave() {
float finalResult[256]; float finalResult[256];
if (curWave<0 || curWave>=(int)e->song.wave.size()) return; if (curWave<0 || curWave>=(int)e->song.wave.size()) return;
@ -284,53 +270,50 @@ void FurnaceGUI::doGenerateWave() {
float s3fb0=0; float s3fb0=0;
float s3fb1=0; float s3fb1=0;
float s0 = 0; float s0=0;
float s1 = 0; float s1=0;
float s2 = 0; float s2=0;
float s3 = 1; float s3=1;
for (int i=0; i<wave->len; i++) { for (int i=0; i<wave->len; i++) {
float pos=(float)i/(float)wave->len; float pos=(float)i/(float)wave->len;
s0 = waveFuncs[fmWaveform[0]]((pos + s0=waveFuncs[fmWaveform[0]]((pos +
(waveGenFB[0] ? ((s0fb0 + s0fb1) * pow(2.0f, waveGenFB[0] - 8)) : 0.0f) + (waveGenFB[0] ? ((s0fb0 + s0fb1) * pow(2.0f, waveGenFB[0] - 8)) : 0.0f) +
(waveGenFMCon0[3] ? s3 : 0.0f) + (waveGenFMCon0[3] ? s3 : 0.0f) +
(waveGenFMCon0[2] ? s2 : 0.0f) + (waveGenFMCon0[2] ? s2 : 0.0f) +
(waveGenFMCon0[1] ? s1 : 0.0f) + (waveGenFMCon0[1] ? s1 : 0.0f) +
(waveGenFMCon0[0] ? s0 : 0.0f))* multFactors[waveGenMult[0]]) * waveGenTL[0]; (waveGenFMCon0[0] ? s0 : 0.0f))* multFactors[waveGenMult[0]]) * waveGenTL[0];
s0fb0=s0fb1; s0fb0=s0fb1;
s0fb1=s0; s0fb1=s0;
s1=waveFuncs[fmWaveform[1]]((pos +
s1 = waveFuncs[fmWaveform[1]]((pos + (waveGenFB[1] ? ((s1fb0 + s1fb1) * pow(2.0f, waveGenFB[1] - 8)) : 0.0f) +
(waveGenFB[1] ? ((s1fb0 + s1fb1) * pow(2.0f, waveGenFB[1] - 8)) : 0.0f) + (waveGenFMCon1[3] ? s3 : 0.0f) +
(waveGenFMCon1[3] ? s3 : 0.0f) + (waveGenFMCon1[2] ? s2 : 0.0f) +
(waveGenFMCon1[2] ? s2 : 0.0f) + (waveGenFMCon1[1] ? s1 : 0.0f) +
(waveGenFMCon1[1] ? s1 : 0.0f) + (waveGenFMCon1[0] ? s0 : 0.0f))* multFactors[waveGenMult[1]]) * waveGenTL[1];
(waveGenFMCon1[0] ? s0 : 0.0f))* multFactors[waveGenMult[1]]) * waveGenTL[1];
s1fb0=s1fb1; s1fb0=s1fb1;
s1fb1=s1; s1fb1=s1;
s2 = waveFuncs[fmWaveform[2]]((pos + s2=waveFuncs[fmWaveform[2]]((pos +
(waveGenFB[2] ? ((s2fb0 + s2fb1) * pow(2.0f, waveGenFB[2] - 8)) : 0.0f) + (waveGenFB[2] ? ((s2fb0 + s2fb1) * pow(2.0f, waveGenFB[2] - 8)) : 0.0f) +
(waveGenFMCon2[3] ? s3 : 0.0f) + (waveGenFMCon2[3] ? s3 : 0.0f) +
(waveGenFMCon2[2] ? s2 : 0.0f) + (waveGenFMCon2[2] ? s2 : 0.0f) +
(waveGenFMCon2[1] ? s1 : 0.0f) + (waveGenFMCon2[1] ? s1 : 0.0f) +
(waveGenFMCon2[0] ? s0 : 0.0f))* multFactors[waveGenMult[2]]) * waveGenTL[2]; (waveGenFMCon2[0] ? s0 : 0.0f))* multFactors[waveGenMult[2]]) * waveGenTL[2];
s2fb0=s2fb1; s2fb0=s2fb1;
s2fb1=s2; s2fb1=s2;
s3=waveFuncs[fmWaveform[3]]((pos +
s3 = waveFuncs[fmWaveform[3]]((pos + (waveGenFB[3] ? ((s3fb0 + s3fb1) * pow(2.0f, waveGenFB[3] - 8)) : 0.0f) +
(waveGenFB[3] ? ((s3fb0 + s3fb1) * pow(2.0f, waveGenFB[3] - 8)) : 0.0f) + (waveGenFMCon3[3] ? s3 : 0.0f) +
(waveGenFMCon3[3] ? s3 : 0.0f) + (waveGenFMCon3[2] ? s2 : 0.0f) +
(waveGenFMCon3[2] ? s2 : 0.0f) + (waveGenFMCon3[1] ? s1 : 0.0f) +
(waveGenFMCon3[1] ? s1 : 0.0f) + (waveGenFMCon3[0] ? s0 : 0.0f)) * multFactors[waveGenMult[3]])* waveGenTL[3];
(waveGenFMCon3[0] ? s0 : 0.0f)) * multFactors[waveGenMult[3]])* waveGenTL[3];
s3fb0=s3fb1; s3fb0=s3fb1;
s3fb1=s3; s3fb1=s3;
@ -339,7 +322,6 @@ void FurnaceGUI::doGenerateWave() {
if (waveGenFMCon1[4]) finalResult[i]+=s1; if (waveGenFMCon1[4]) finalResult[i]+=s1;
if (waveGenFMCon2[4]) finalResult[i]+=s2; if (waveGenFMCon2[4]) finalResult[i]+=s2;
if (waveGenFMCon3[4]) finalResult[i]+=s3; if (waveGenFMCon3[4]) finalResult[i]+=s3;
//finalResult[i]+=s3;
} }
} else { } else {
switch (waveGenBaseShape) { switch (waveGenBaseShape) {
@ -405,15 +387,9 @@ void FurnaceGUI::doGenerateWave() {
MARK_MODIFIED; MARK_MODIFIED;
} }
#define CENTER_TEXT(text) \ #define CENTER_TEXT(text) \
ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(text).x)); ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(text).x));
//int lengthArray()
void FurnaceGUI::drawWaveEdit() { void FurnaceGUI::drawWaveEdit() {
if (nextWindow==GUI_WINDOW_WAVE_EDIT) { if (nextWindow==GUI_WINDOW_WAVE_EDIT) {
waveEditOpen=true; waveEditOpen=true;
@ -733,232 +709,149 @@ void FurnaceGUI::drawWaveEdit() {
ImGui::EndTable(); ImGui::EndTable();
} }
if (ImGui::BeginTable("WGFMWAVE",2)) {
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,ImGui::CalcTextSize("Op").x);
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,1);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableNextColumn();
ImGui::Text("Op");
ImGui::TableNextColumn();
ImGui::Text("Waveform");
if (ImGui::BeginTable("WGFMWAVE", 2)) { for (int i=0; i<4; i++) {
ImGui::TableSetupColumn("c0", ImGuiTableColumnFlags_WidthFixed, ImGui::CalcTextSize("Op").x); ImGui::TableNextRow();
ImGui::TableSetupColumn("c1", ImGuiTableColumnFlags_WidthStretch, 1);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableNextColumn(); ImGui::TableNextColumn();
ImGui::Text("Op"); ImGui::Text("%d",i+1);
ImGui::TableNextColumn(); ImGui::TableNextColumn();
ImGui::Text("Waveform"); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
ImGui::PushID(i);
for (int i = 0; i < 4; i++) { if (CWSliderInt("##WGWAVEFORM",&fmWaveform[i],0,fmWaveformsLen-1,fmWaveforms[fmWaveform[i]])) {
ImGui::TableNextRow(); doGenerateWave();
ImGui::TableNextColumn();
ImGui::Text("%d", i + 1);
ImGui::TableNextColumn();
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
ImGui::PushID(i);
if (CWSliderInt("##WGWAVEFORM", &fmWaveform[i], 0, _countof(fmWaveforms)-1, fmWaveforms[fmWaveform[i]])) {
doGenerateWave();
}
ImGui::PopID();
} }
ImGui::PopID();
ImGui::EndTable(); }
ImGui::EndTable();
} }
CENTER_TEXT("Connection Diagram"); CENTER_TEXT("Connection Diagram");
ImGui::Text("Connection Diagram"); ImGui::Text("Connection Diagram");
//if (ImGui::BeginTable("WGFMCon",5)) { if (ImGui::BeginTable("WGFMCon",6)) {
// ImGui::TableNextRow(); ImGui::TableNextRow();
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text(">>"); ImGui::Text(">>");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("2"); ImGui::Text("1");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("3"); ImGui::Text("2");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("4"); ImGui::Text("3");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("Out"); ImGui::Text("4");
ImGui::TableNextColumn();
ImGui::Text("Out");
// ImGui::TableNextRow(); ImGui::TableNextRow();
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("1"); ImGui::Text("1");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con12",&waveGenFMCon1[0])) { if (ImGui::Checkbox("##ConO1",&waveGenFMCon0[0])) {
// doGenerateWave(); doGenerateWave();
// } }
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con13",&waveGenFMCon1[1])) { if (ImGui::Checkbox("##ConO2",&waveGenFMCon0[1])) {
// doGenerateWave(); doGenerateWave();
// } }
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con14",&waveGenFMCon1[2])) { if (ImGui::Checkbox("##ConO3",&waveGenFMCon0[2])) {
// doGenerateWave(); doGenerateWave();
// } }
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con1O",&waveGenFMCon1[3])) { if (ImGui::Checkbox("##ConO4",&waveGenFMCon0[3])) {
// doGenerateWave(); doGenerateWave();
// } }
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConOO",&waveGenFMCon0[4])) {
doGenerateWave();
}
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("2");
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con11",&waveGenFMCon1[0])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con12",&waveGenFMCon1[1])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con13",&waveGenFMCon1[2])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con14",&waveGenFMCon1[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con1O",&waveGenFMCon1[4])) {
doGenerateWave();
}
// ImGui::TableNextRow(); ImGui::TableNextRow();
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("2"); ImGui::Text("3");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// // blank if (ImGui::Checkbox("##Con21",&waveGenFMCon2[0])) {
// ImGui::TableNextColumn(); doGenerateWave();
// if (ImGui::Checkbox("##Con23",&waveGenFMCon2[0])) { }
// doGenerateWave(); ImGui::TableNextColumn();
// } if (ImGui::Checkbox("##Con22",&waveGenFMCon2[1])) {
// ImGui::TableNextColumn(); doGenerateWave();
// if (ImGui::Checkbox("##Con24",&waveGenFMCon2[1])) { }
// doGenerateWave(); ImGui::TableNextColumn();
// } if (ImGui::Checkbox("##Con23",&waveGenFMCon2[2])) {
// ImGui::TableNextColumn(); doGenerateWave();
// if (ImGui::Checkbox("##Con2O",&waveGenFMCon2[2])) { }
// doGenerateWave(); ImGui::TableNextColumn();
// } if (ImGui::Checkbox("##Con24",&waveGenFMCon2[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con2O",&waveGenFMCon2[4])) {
doGenerateWave();
}
// ImGui::TableNextRow(); ImGui::TableNextRow();
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// ImGui::Text("3"); ImGui::Text("4");
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// // blank if (ImGui::Checkbox("##Con31",&waveGenFMCon3[0])) {
// ImGui::TableNextColumn(); doGenerateWave();
// // blank }
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con34",&waveGenFMCon3[0])) { if (ImGui::Checkbox("##Con32",&waveGenFMCon3[1])) {
// doGenerateWave(); doGenerateWave();
// } }
// ImGui::TableNextColumn(); ImGui::TableNextColumn();
// if (ImGui::Checkbox("##Con3O",&waveGenFMCon3[1])) { if (ImGui::Checkbox("##Con33",&waveGenFMCon3[2])) {
// doGenerateWave(); doGenerateWave();
// } }
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con34",&waveGenFMCon3[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con3O",&waveGenFMCon3[4])) {
doGenerateWave();
}
// ImGui::EndTable(); ImGui::EndTable();
//}
if (ImGui::BeginTable("WGFMCon", 6)) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text(">>");
ImGui::TableNextColumn();
ImGui::Text("1");
ImGui::TableNextColumn();
ImGui::Text("2");
ImGui::TableNextColumn();
ImGui::Text("3");
ImGui::TableNextColumn();
ImGui::Text("4");
ImGui::TableNextColumn();
//ImGui::Text("4");
//ImGui::TableNextColumn();
ImGui::Text("Out");
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("1");
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConO1", &waveGenFMCon0[0])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConO2", &waveGenFMCon0[1])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConO3", &waveGenFMCon0[2])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConO4", &waveGenFMCon0[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##ConOO", &waveGenFMCon0[4])) {
doGenerateWave();
}
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("2");
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con11", &waveGenFMCon1[0])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con12", &waveGenFMCon1[1])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con13", &waveGenFMCon1[2])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con14", &waveGenFMCon1[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con1O", &waveGenFMCon1[4])) {
doGenerateWave();
}
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("3");
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con21", &waveGenFMCon2[0])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con22", &waveGenFMCon2[1])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con23", &waveGenFMCon2[2])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con24", &waveGenFMCon2[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con2O", &waveGenFMCon2[4])) {
doGenerateWave();
}
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("4");
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con31", &waveGenFMCon3[0])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con32", &waveGenFMCon3[1])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con33", &waveGenFMCon3[2])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con34", &waveGenFMCon3[3])) {
doGenerateWave();
}
ImGui::TableNextColumn();
if (ImGui::Checkbox("##Con3O", &waveGenFMCon3[4])) {
doGenerateWave();
}
ImGui::EndTable();
} }
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
if (ImGui::BeginTabItem("WaveTools")) { if (ImGui::BeginTabItem("WaveTools")) {