@@ -48,6 +48,9 @@ void TW_CALL setBendingMethod(const void *value, void *clientData);
4848void TW_CALL getBendingMethod (void *value, void *clientData);
4949void TW_CALL setSimulationMethod (const void *value, void *clientData);
5050void TW_CALL getSimulationMethod (void *value, void *clientData);
51+ void TW_CALL setVelocityUpdateMethod (const void *value, void *clientData);
52+ void TW_CALL getVelocityUpdateMethod (void *value, void *clientData);
53+
5154
5255TriangleModel model;
5356TimeStepTriangleModel simulation;
@@ -80,8 +83,10 @@ int main( int argc, char **argv )
8083
8184 TwAddVarRW (MiniGL::getTweakBar (), " Pause" , TW_TYPE_BOOLCPP, &pause, " label='Pause' group=Simulation key=SPACE " );
8285 TwAddVarCB (MiniGL::getTweakBar (), " TimeStepSize" , TW_TYPE_FLOAT, setTimeStep, getTimeStep, &model, " label='Time step size' min=0.0 max = 0.1 step=0.001 precision=4 group=Simulation " );
83- TwType enumType = TwDefineEnum (" SimulationMethodType" , NULL , 0 );
84- TwAddVarCB (MiniGL::getTweakBar (), " SimulationMethod" , enumType, setSimulationMethod, getSimulationMethod, &simulation, " label='Simulation method' enum='0 {None}, 1 {Distance constraints}, 2 {FEM based PBD}, 3 {Strain based dynamics}' group=Simulation" );
86+ TwType enumType = TwDefineEnum (" VelocityUpdateMethodType" , NULL , 0 );
87+ TwAddVarCB (MiniGL::getTweakBar (), " VelocityUpdateMethod" , enumType, setVelocityUpdateMethod, getVelocityUpdateMethod, &simulation, " label='Velocity update method' enum='0 {First Order Update}, 1 {Second Order Update}' group=Simulation" );
88+ TwType enumType2 = TwDefineEnum (" SimulationMethodType" , NULL , 0 );
89+ TwAddVarCB (MiniGL::getTweakBar (), " SimulationMethod" , enumType2, setSimulationMethod, getSimulationMethod, &simulation, " label='Simulation method' enum='0 {None}, 1 {Distance constraints}, 2 {FEM based PBD}, 3 {Strain based dynamics}' group=Simulation" );
8590 TwAddVarCB (MiniGL::getTweakBar (), " Stiffness" , TW_TYPE_FLOAT, setStiffness, getStiffness, &model, " label='Stiffness' min=0.0 step=0.1 precision=4 group='Distance constraints' " );
8691 TwAddVarCB (MiniGL::getTweakBar (), " XXStiffness" , TW_TYPE_FLOAT, setXXStiffness, getXXStiffness, &model, " label='Stiffness XX' min=0.0 step=0.1 precision=4 group='Strain based dynamics' " );
8792 TwAddVarCB (MiniGL::getTweakBar (), " YYStiffness" , TW_TYPE_FLOAT, setYYStiffness, getYYStiffness, &model, " label='Stiffness YY' min=0.0 step=0.1 precision=4 group='Strain based dynamics' " );
@@ -93,8 +98,8 @@ int main( int argc, char **argv )
9398 TwAddVarCB (MiniGL::getTweakBar (), " YXPoissonRatioFEM" , TW_TYPE_FLOAT, setYXPoissonRatio, getYXPoissonRatio, &model, " label='Poisson ratio YX' min=0.0 step=0.1 precision=4 group='FEM based PBD' " );
9499 TwAddVarCB (MiniGL::getTweakBar (), " NormalizeStretch" , TW_TYPE_BOOL32, setNormalizeStretch, getNormalizeStretch, &model, " label='Normalize stretch' group='Strain based dynamics' " );
95100 TwAddVarCB (MiniGL::getTweakBar (), " NormalizeShear" , TW_TYPE_BOOL32, setNormalizeShear, getNormalizeShear, &model, " label='Normalize shear' group='Strain based dynamics' " );
96- TwType enumType2 = TwDefineEnum (" BendingMethodType" , NULL , 0 );
97- TwAddVarCB (MiniGL::getTweakBar (), " BendingMethod" , enumType2 , setBendingMethod, getBendingMethod, &simulation, " label='Bending method' enum='0 {None}, 1 {Dihedral angle}, 2 {Isometric bending}' group=Bending" );
101+ TwType enumType3 = TwDefineEnum (" BendingMethodType" , NULL , 0 );
102+ TwAddVarCB (MiniGL::getTweakBar (), " BendingMethod" , enumType3 , setBendingMethod, getBendingMethod, &simulation, " label='Bending method' enum='0 {None}, 1 {Dihedral angle}, 2 {Isometric bending}' group=Bending" );
98103 TwAddVarCB (MiniGL::getTweakBar (), " BendingStiffness" , TW_TYPE_FLOAT, setBendingStiffness, getBendingStiffness, &model, " label='Bending stiffness' min=0.0 step=0.01 precision=4 group=Bending " );
99104
100105 glutMainLoop ();
@@ -421,3 +426,15 @@ void TW_CALL getSimulationMethod(void *value, void *clientData)
421426{
422427 *(short *)(value) = (short )((TimeStepTriangleModel*)clientData)->getSimulationMethod ();
423428}
429+
430+ void TW_CALL setVelocityUpdateMethod (const void *value, void *clientData)
431+ {
432+ const short val = *(const short *)(value);
433+ ((TimeStepTriangleModel*)clientData)->setVelocityUpdateMethod ((unsigned int )val);
434+ }
435+
436+ void TW_CALL getVelocityUpdateMethod (void *value, void *clientData)
437+ {
438+ *(short *)(value) = (short )((TimeStepTriangleModel*)clientData)->getVelocityUpdateMethod ();
439+ }
440+
0 commit comments