Changeset 1875


Ignore:
Timestamp:
Sep 4, 2012, 2:08:19 PM (7 years ago)
Author:
sam
Message:

easymesh: first shot at a simple, flat shaded torus.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/easymesh/easymesh-parser.y

    r1835 r1875  
    5252
    5353%token T_CYLINDER T_BOX T_SMOOTHCHAMFBOX T_FLATCHAMFBOX T_SPHERE T_CAPSULE
    54 %token T_STAR T_EXPANDEDSTAR T_DISC T_TRIANGLE T_QUAD T_COG
     54%token T_STAR T_EXPANDEDSTAR T_DISC T_TRIANGLE T_QUAD T_COG T_TORUS
    5555
    5656%token T_END 0
     
    149149                                               vec3($2.f1, $2.f2, $2.f3)); }
    150150  | T_CAPSULE args3        { mc.m_mesh.AppendCapsule($2.f0, $2.f1, $2.f2); }
     151  | T_TORUS args3          { mc.m_mesh.AppendTorus((int)$2.f0, $2.f1, $2.f2); }
    151152  | T_STAR args5           { mc.m_mesh.AppendStar((int)$2.f0, $2.f1, $2.f2,
    152153                                             (int)$2.f3, (int)$2.f4); }
  • trunk/src/easymesh/easymesh-scanner.l

    r1808 r1875  
    7777acap  { return token::T_CAPSULE; }
    7878asph  { return token::T_SPHERE; }
     79at    { return token::T_TORUS; }
    7980as    { return token::T_STAR; }
    8081aes   { return token::T_EXPANDEDSTAR; }
  • trunk/src/easymesh/easymesh.cpp

    r1793 r1875  
    509509}
    510510
     511void EasyMesh::AppendTorus(int ndivisions, float r1, float r2)
     512{
     513    int ibase = m_indices.Count();
     514
     515    for (int j = 0; j < ndivisions; j++)
     516    for (int i = 0; i < ndivisions; i++)
     517    {
     518        for (int di = 0; di < 2; di++)
     519        for (int dj = 0; dj < 2; dj++)
     520        {
     521            int i2 = (i + di) % ndivisions;
     522            int j2 = (j + dj) % ndivisions;
     523            float x = 0.5f * (r1 + r2) + 0.5 * (r2 - r1) * lol::cos(2.0 * M_PI * i2 / ndivisions);
     524            float y = 0.5f * (r2 - r1) * lol::sin(2.0 * M_PI * i2 / ndivisions);
     525            float z = 0.0f;
     526
     527            float ca = lol::cos(2.0 * M_PI * j2 / ndivisions);
     528            float sa = lol::sin(2.0 * M_PI * j2 / ndivisions);
     529            float x2 = x * ca - z * sa;
     530            float z2 = z * ca + x * sa;
     531
     532            AddVertex(vec3(x2, y, z2));
     533        }
     534
     535        AppendTriangle(0, 2, 3, m_vert.Count() - 4);
     536        AppendTriangle(0, 3, 1, m_vert.Count() - 4);
     537    }
     538
     539    ComputeNormals(ibase, m_indices.Count() - ibase);
     540}
     541
    511542void EasyMesh::AppendBox(vec3 const &size, float chamf)
    512543{
  • trunk/src/easymesh/easymesh.h

    r1784 r1875  
    7474    void AppendCapsule(int ndivisions, float h, float r);
    7575    void AppendSphere(int ndivisions, vec3 const &size);
     76    void AppendTorus(int ndivisions, float r1, float r2);
    7677    void AppendBox(vec3 const &size, float chamf = 0.f);
    7778    void AppendSmoothChamfBox(vec3 const &size, float chamf);
  • trunk/src/generated/easymesh-parser.cpp

    r1835 r1875  
    687687/* Line 690 of lalr1.cc  */
    688688#line 151 "easymesh/easymesh-parser.y"
     689    { mc.m_mesh.AppendTorus((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
     690    break;
     691
     692  case 43:
     693
     694/* Line 690 of lalr1.cc  */
     695#line 152 "easymesh/easymesh-parser.y"
    689696    { mc.m_mesh.AppendStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2,
    690697                                             (int)(yysemantic_stack_[(2) - (2)].args).f3, (int)(yysemantic_stack_[(2) - (2)].args).f4); }
    691698    break;
    692699
    693   case 43:
    694 
    695 /* Line 690 of lalr1.cc  */
    696 #line 153 "easymesh/easymesh-parser.y"
     700  case 44:
     701
     702/* Line 690 of lalr1.cc  */
     703#line 154 "easymesh/easymesh-parser.y"
    697704    { mc.m_mesh.AppendExpandedStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    698705                                                     (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    699706    break;
    700707
    701   case 44:
    702 
    703 /* Line 690 of lalr1.cc  */
    704 #line 155 "easymesh/easymesh-parser.y"
     708  case 45:
     709
     710/* Line 690 of lalr1.cc  */
     711#line 156 "easymesh/easymesh-parser.y"
    705712    { mc.m_mesh.AppendDisc((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (int)(yysemantic_stack_[(2) - (2)].args).f2); }
    706713    break;
    707714
    708   case 45:
    709 
    710 /* Line 690 of lalr1.cc  */
    711 #line 156 "easymesh/easymesh-parser.y"
     715  case 46:
     716
     717/* Line 690 of lalr1.cc  */
     718#line 157 "easymesh/easymesh-parser.y"
    712719    { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
    713720    break;
    714721
    715   case 46:
    716 
    717 /* Line 690 of lalr1.cc  */
    718 #line 157 "easymesh/easymesh-parser.y"
     722  case 47:
     723
     724/* Line 690 of lalr1.cc  */
     725#line 158 "easymesh/easymesh-parser.y"
    719726    { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
    720727    break;
    721728
    722   case 47:
    723 
    724 /* Line 690 of lalr1.cc  */
    725 #line 158 "easymesh/easymesh-parser.y"
     729  case 48:
     730
     731/* Line 690 of lalr1.cc  */
     732#line 159 "easymesh/easymesh-parser.y"
    726733    { mc.m_mesh.AppendCog((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
    727734                                            (yysemantic_stack_[(2) - (2)].args).f4, (yysemantic_stack_[(2) - (2)].args).f5, (yysemantic_stack_[(2) - (2)].args).f6, (int)(yysemantic_stack_[(2) - (2)].args).f7); }
    728735    break;
    729736
    730   case 48:
    731 
    732 /* Line 690 of lalr1.cc  */
    733 #line 162 "easymesh/easymesh-parser.y"
     737  case 49:
     738
     739/* Line 690 of lalr1.cc  */
     740#line 163 "easymesh/easymesh-parser.y"
    734741    { (yyval.args).f0 = (yysemantic_stack_[(1) - (1)].fval); }
    735742    break;
    736743
    737   case 49:
    738 
    739 /* Line 690 of lalr1.cc  */
    740 #line 163 "easymesh/easymesh-parser.y"
     744  case 50:
     745
     746/* Line 690 of lalr1.cc  */
     747#line 164 "easymesh/easymesh-parser.y"
    741748    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f1 = (yysemantic_stack_[(2) - (2)].fval); }
    742749    break;
    743750
    744   case 50:
    745 
    746 /* Line 690 of lalr1.cc  */
    747 #line 164 "easymesh/easymesh-parser.y"
     751  case 51:
     752
     753/* Line 690 of lalr1.cc  */
     754#line 165 "easymesh/easymesh-parser.y"
    748755    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f2 = (yysemantic_stack_[(2) - (2)].fval); }
    749756    break;
    750757
    751   case 51:
    752 
    753 /* Line 690 of lalr1.cc  */
    754 #line 165 "easymesh/easymesh-parser.y"
     758  case 52:
     759
     760/* Line 690 of lalr1.cc  */
     761#line 166 "easymesh/easymesh-parser.y"
    755762    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f3 = (yysemantic_stack_[(2) - (2)].fval); }
    756763    break;
    757764
    758   case 52:
    759 
    760 /* Line 690 of lalr1.cc  */
    761 #line 166 "easymesh/easymesh-parser.y"
     765  case 53:
     766
     767/* Line 690 of lalr1.cc  */
     768#line 167 "easymesh/easymesh-parser.y"
    762769    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f4 = (yysemantic_stack_[(2) - (2)].fval); }
    763770    break;
    764771
    765   case 53:
    766 
    767 /* Line 690 of lalr1.cc  */
    768 #line 167 "easymesh/easymesh-parser.y"
     772  case 54:
     773
     774/* Line 690 of lalr1.cc  */
     775#line 168 "easymesh/easymesh-parser.y"
    769776    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f5 = (yysemantic_stack_[(2) - (2)].fval); }
    770777    break;
    771778
    772   case 54:
    773 
    774 /* Line 690 of lalr1.cc  */
    775 #line 168 "easymesh/easymesh-parser.y"
     779  case 55:
     780
     781/* Line 690 of lalr1.cc  */
     782#line 169 "easymesh/easymesh-parser.y"
    776783    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f6 = (yysemantic_stack_[(2) - (2)].fval); }
    777784    break;
    778785
    779   case 55:
    780 
    781 /* Line 690 of lalr1.cc  */
    782 #line 169 "easymesh/easymesh-parser.y"
     786  case 56:
     787
     788/* Line 690 of lalr1.cc  */
     789#line 170 "easymesh/easymesh-parser.y"
    783790    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f7 = (yysemantic_stack_[(2) - (2)].fval); }
    784791    break;
    785792
    786   case 56:
    787 
    788 /* Line 690 of lalr1.cc  */
    789 #line 172 "easymesh/easymesh-parser.y"
     793  case 57:
     794
     795/* Line 690 of lalr1.cc  */
     796#line 173 "easymesh/easymesh-parser.y"
    790797    { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); }
    791798    break;
    792799
    793   case 57:
    794 
    795 /* Line 690 of lalr1.cc  */
    796 #line 173 "easymesh/easymesh-parser.y"
     800  case 58:
     801
     802/* Line 690 of lalr1.cc  */
     803#line 174 "easymesh/easymesh-parser.y"
    797804    { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); }
    798805    break;
     
    801808
    802809/* Line 690 of lalr1.cc  */
    803 #line 804 "generated/easymesh-parser.cpp"
     810#line 811 "generated/easymesh-parser.cpp"
    804811        default:
    805812          break;
     
    10751082  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    10761083     STATE-NUM.  */
    1077   const signed char EasyMeshParser::yypact_ninf_ = -46;
     1084  const signed char EasyMeshParser::yypact_ninf_ = -47;
    10781085  const signed char
    10791086  EasyMeshParser::yypact_[] =
    10801087  {
    1081         35,   -30,    -7,    72,    72,    72,    72,   -46,    72,    72,
    1082       72,    72,   -46,    72,    72,    72,    72,   -46,    72,    72,
    1083       72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
    1084       72,    72,    72,   -46,    12,    15,    35,    35,    71,   -46,
    1085      -46,   -46,   -46,   -46,   -46,    72,    72,    72,    72,   -46,
    1086      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,
    1087      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,    72,    72,
    1088      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,
    1089      -46,    72,    72,   -46,   -46,   -46,   -46,   -22,   -46,   -46,
    1090      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46
     1088        35,   -26,    85,   -31,   -31,   -31,   -31,   -47,   -31,   -31,
     1089     -31,   -31,   -47,   -31,   -31,   -31,   -31,   -47,   -31,   -31,
     1090     -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,
     1091     -31,   -31,   -31,   -31,   -47,     5,    13,    35,    35,    72,
     1092     -47,   -47,   -47,   -47,   -47,   -47,   -31,   -31,   -31,   -31,
     1093     -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,
     1094     -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -31,
     1095     -31,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,
     1096     -47,   -47,   -31,   -31,   -47,   -47,   -47,   -47,   -47,   -24,
     1097     -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,
     1098     -47
    10911099  };
    10921100
     
    11001108       0,     0,    34,     0,     0,     0,     0,    35,     0,     0,
    11011109       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1102        0,     0,     0,     7,     0,     0,     3,     0,     5,     9,
    1103       11,    12,    13,    56,    15,     0,     0,     0,     0,    14,
    1104       48,    17,    16,    19,    23,    26,    29,    20,    24,    27,
    1105       30,    21,    25,    28,    31,    22,    32,    18,     0,     0,
    1106       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    1107       46,     0,     0,    47,     1,     2,     4,     0,    10,    57,
    1108       49,    50,    51,    52,    53,    54,    55,     8,     6
     1110       0,     0,     0,     0,     7,     0,     0,     3,     0,     5,
     1111       9,    11,    12,    13,    57,    15,     0,     0,     0,     0,
     1112      14,    49,    17,    16,    19,    23,    26,    29,    20,    24,
     1113      27,    30,    21,    25,    28,    31,    22,    32,    18,     0,
     1114       0,    36,    37,    38,    39,    40,    41,    43,    44,    45,
     1115      46,    47,     0,     0,    48,    42,     1,     2,     4,     0,
     1116      10,    58,    50,    51,    52,    53,    54,    55,    56,     8,
     1117       6
    11091118  };
    11101119
     
    11131122  EasyMeshParser::yypgoto_[] =
    11141123  {
    1115        -46,   -46,    -2,   -46,   -46,   -46,   -46,   -18,   -46,   -46,
    1116      -46,     5,    40,   101,     3,    -5,     0,   -46,   -46,   -45
     1124       -47,   -47,   -18,   -47,   -47,   -47,   -47,   -17,   -47,   -47,
     1125     -47,   105,    -4,    -1,     6,     8,     1,   -47,   -47,   -46
    11171126  };
    11181127
     
    11211130  EasyMeshParser::yydefgoto_[] =
    11221131  {
    1123         -1,    34,    35,    36,    37,    98,    38,    39,    40,    41,
    1124       42,    46,    47,    48,    68,    69,    70,    82,    83,    50
     1132        -1,    35,    36,    37,    38,   100,    39,    40,    41,    42,
     1133      43,    47,    48,    49,    69,    70,    71,    83,    84,    51
    11251134  };
    11261135
     
    11321141  EasyMeshParser::yytable_[] =
    11331142  {
    1134         89,    90,    91,    92,    49,    52,    43,    44,    53,    54,
    1135       45,    56,    84,    57,    58,    85,    60,    97,    61,    62,
    1136       88,    64,    76,    93,    94,    67,    72,    73,    74,    43,
    1137       51,    77,    81,    45,    86,    87,    95,    96,     1,     2,
     1143        91,    92,    93,    94,    56,    86,    44,    50,    53,    60,
     1144      46,    44,    45,    87,    64,    46,    99,    66,    67,    88,
     1145      89,    72,    90,    95,    96,    76,    80,    81,    79,    73,
     1146      74,    75,    85,    82,    78,    77,    97,    98,     1,     2,
    11381147       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    11391148      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    11401149      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    1141       79,    80,     0,    33,     1,     2,     3,     4,     5,     6,
    1142        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    1143       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    1144       27,    28,    29,    30,    31,    32,    55,     0,    43,     0,
    1145        0,    59,    45,     0,     0,     0,    63,     0,     0,    65,
    1146       66,     0,     0,    71,     0,     0,     0,    75,     0,     0,
    1147       78
     1150      33,     0,     0,     0,    34,     1,     2,     3,     4,     5,
     1151       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     1152      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     1153      26,    27,    28,    29,    30,    31,    32,    33,    54,    55,
     1154       0,    57,     0,    58,    59,     0,    61,     0,    62,    63,
     1155       0,    65,    44,    52,     0,    68,    46
    11481156  };
    11491157
     
    11521160  EasyMeshParser::yycheck_[] =
    11531161  {
    1154         45,    46,    47,    48,     1,     2,    36,    37,     3,     4,
    1155       40,     6,     0,     8,     9,     0,    11,    39,    13,    14,
    1156       38,    16,    27,    68,    69,    20,    23,    24,    25,    36,
    1157       37,    28,    32,    40,    36,    37,    81,    82,     3,     4,
     1162        46,    47,    48,    49,     5,     0,    37,     1,     2,    10,
     1163      41,    37,    38,     0,    15,    41,    40,    18,    19,    37,
     1164      38,    22,    39,    69,    70,    26,    30,    31,    29,    23,
     1165      24,    25,    33,    32,    28,    27,    82,    83,     3,     4,
    11581166       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    11591167      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    11601168      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    1161       30,    31,    -1,    38,     3,     4,     5,     6,     7,     8,
    1162        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    1163       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    1164       29,    30,    31,    32,    33,    34,     5,    -1,    36,    -1,
    1165       -1,    10,    40,    -1,    -1,    -1,    15,    -1,    -1,    18,
    1166       19,    -1,    -1,    22,    -1,    -1,    -1,    26,    -1,    -1,
    1167       29
     1169      35,    -1,    -1,    -1,    39,     3,     4,     5,     6,     7,
     1170       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     1171      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     1172      28,    29,    30,    31,    32,    33,    34,    35,     3,     4,
     1173      -1,     6,    -1,     8,     9,    -1,    11,    -1,    13,    14,
     1174      -1,    16,    37,    38,    -1,    20,    41
    11681175  };
    11691176
     
    11761183      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    11771184      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    1178       32,    33,    34,    38,    42,    43,    44,    45,    47,    48,
    1179       49,    50,    51,    36,    37,    40,    52,    53,    54,    55,
    1180       60,    37,    55,    52,    52,    54,    52,    52,    52,    54,
    1181       52,    52,    52,    54,    52,    54,    54,    52,    55,    56,
    1182       57,    54,    55,    55,    55,    54,    56,    55,    54,    53,
    1183       53,    57,    58,    59,     0,     0,    43,    43,    48,    60,
    1184       60,    60,    60,    60,    60,    60,    60,    39,    46
     1185      32,    33,    34,    35,    39,    43,    44,    45,    46,    48,
     1186      49,    50,    51,    52,    37,    38,    41,    53,    54,    55,
     1187      56,    61,    38,    56,    53,    53,    55,    53,    53,    53,
     1188      55,    53,    53,    53,    55,    53,    55,    55,    53,    56,
     1189      57,    58,    55,    56,    56,    56,    55,    57,    56,    55,
     1190      54,    54,    58,    59,    60,    55,     0,     0,    44,    44,
     1191      49,    61,    61,    61,    61,    61,    61,    61,    61,    40,
     1192      47
    11851193  };
    11861194
     
    11941202     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
    11951203     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
    1196      285,   286,   287,   288,   289,   290,   291,   292,    91,    93,
    1197       45
     1204     285,   286,   287,   288,   289,   290,   291,   292,   293,    91,
     1205      93,    45
    11981206  };
    11991207#endif
     
    12031211  EasyMeshParser::yyr1_[] =
    12041212  {
    1205          0,    41,    42,    43,    43,    44,    44,    45,    46,    47,
    1206       47,    48,    48,    48,    49,    49,    49,    49,    50,    50,
    1207       50,    50,    50,    50,    50,    50,    50,    50,    50,    50,
    1208       50,    50,    50,    50,    50,    50,    51,    51,    51,    51,
    1209       51,    51,    51,    51,    51,    51,    51,    51,    52,    53,
    1210       54,    55,    56,    57,    58,    59,    60,    60
     1213         0,    42,    43,    44,    44,    45,    45,    46,    47,    48,
     1214      48,    49,    49,    49,    50,    50,    50,    50,    51,    51,
     1215      51,    51,    51,    51,    51,    51,    51,    51,    51,    51,
     1216      51,    51,    51,    51,    51,    51,    52,    52,    52,    52,
     1217      52,    52,    52,    52,    52,    52,    52,    52,    52,    53,
     1218      54,    55,    56,    57,    58,    59,    60,    61,    61
    12111219  };
    12121220
     
    12191227       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    12201228       2,     2,     2,     1,     1,     1,     2,     2,     2,     2,
    1221        2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
    1222        2,     2,     2,     2,     2,     2,     1,     2
     1229       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
     1230       2,     2,     2,     2,     2,     2,     2,     1,     2
    12231231  };
    12241232
     
    12351243  "T_SCALE", "T_CHAMFER", "T_CYLINDER", "T_BOX", "T_SMOOTHCHAMFBOX",
    12361244  "T_FLATCHAMFBOX", "T_SPHERE", "T_CAPSULE", "T_STAR", "T_EXPANDEDSTAR",
    1237   "T_DISC", "T_TRIANGLE", "T_QUAD", "T_COG", "T_ERROR", "NUMBER", "COLOR",
    1238   "'['", "']'", "'-'", "$accept", "mesh_description",
     1245  "T_DISC", "T_TRIANGLE", "T_QUAD", "T_COG", "T_TORUS", "T_ERROR",
     1246  "NUMBER", "COLOR", "'['", "']'", "'-'", "$accept", "mesh_description",
    12391247  "mesh_expression_list", "mesh_expression", "mesh_open", "mesh_close",
    12401248  "mesh_command_list", "mesh_command", "color_command",
     
    12491257  EasyMeshParser::yyrhs_[] =
    12501258  {
    1251         42,     0,    -1,    43,     0,    -1,    44,    -1,    44,    43,
    1252       -1,    47,    -1,    45,    43,    46,    -1,    38,    -1,    39,
    1253       -1,    48,    -1,    47,    48,    -1,    49,    -1,    50,    -1,
    1254       51,    -1,     3,    55,    -1,     3,    37,    -1,     4,    55,
    1255       -1,     4,    37,    -1,    22,    52,    -1,     5,    52,    -1,
    1256       10,    52,    -1,    15,    52,    -1,    20,    54,    -1,     6,
    1257       52,    -1,    11,    52,    -1,    16,    52,    -1,     7,    54,
    1258       -1,    12,    54,    -1,    17,    54,    -1,     8,    52,    -1,
    1259       13,    52,    -1,    18,    52,    -1,    21,    54,    -1,     9,
    1260       -1,    14,    -1,    19,    -1,    23,    57,    -1,    24,    54,
    1261       -1,    25,    55,    -1,    26,    55,    -1,    27,    55,    -1,
    1262       28,    54,    -1,    29,    56,    -1,    30,    55,    -1,    31,
    1263       54,    -1,    32,    53,    -1,    33,    53,    -1,    34,    59,
    1264       -1,    60,    -1,    52,    60,    -1,    53,    60,    -1,    54,
    1265       60,    -1,    55,    60,    -1,    56,    60,    -1,    57,    60,
    1266       -1,    58,    60,    -1,    36,    -1,    40,    60,    -1
     1259        43,     0,    -1,    44,     0,    -1,    45,    -1,    45,    44,
     1260      -1,    48,    -1,    46,    44,    47,    -1,    39,    -1,    40,
     1261      -1,    49,    -1,    48,    49,    -1,    50,    -1,    51,    -1,
     1262      52,    -1,     3,    56,    -1,     3,    38,    -1,     4,    56,
     1263      -1,     4,    38,    -1,    22,    53,    -1,     5,    53,    -1,
     1264      10,    53,    -1,    15,    53,    -1,    20,    55,    -1,     6,
     1265      53,    -1,    11,    53,    -1,    16,    53,    -1,     7,    55,
     1266      -1,    12,    55,    -1,    17,    55,    -1,     8,    53,    -1,
     1267      13,    53,    -1,    18,    53,    -1,    21,    55,    -1,     9,
     1268      -1,    14,    -1,    19,    -1,    23,    58,    -1,    24,    55,
     1269      -1,    25,    56,    -1,    26,    56,    -1,    27,    56,    -1,
     1270      28,    55,    -1,    35,    55,    -1,    29,    57,    -1,    30,
     1271      56,    -1,    31,    55,    -1,    32,    54,    -1,    33,    54,
     1272      -1,    34,    60,    -1,    61,    -1,    53,    61,    -1,    54,
     1273      61,    -1,    55,    61,    -1,    56,    61,    -1,    57,    61,
     1274      -1,    58,    61,    -1,    59,    61,    -1,    37,    -1,    41,
     1275      61,    -1
    12671276  };
    12681277
     
    12761285      50,    53,    56,    59,    62,    65,    68,    71,    74,    77,
    12771286      80,    83,    86,    89,    91,    93,    95,    98,   101,   104,
    1278      107,   110,   113,   116,   119,   122,   125,   128,   131,   133,
    1279      136,   139,   142,   145,   148,   151,   154,   156
     1287     107,   110,   113,   116,   119,   122,   125,   128,   131,   134,
     1288     136,   139,   142,   145,   148,   151,   154,   157,   159
    12801289  };
    12811290
     
    12881297     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
    12891298     131,   132,   133,   134,   135,   136,   140,   143,   144,   146,
    1290      148,   150,   151,   153,   155,   156,   157,   158,   162,   163,
    1291      164,   165,   166,   167,   168,   169,   172,   173
     1299     148,   150,   151,   152,   154,   156,   157,   158,   159,   163,
     1300     164,   165,   166,   167,   168,   169,   170,   173,   174
    12921301  };
    12931302
     
    13331342       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    13341343       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    1335        2,     2,     2,     2,     2,    40,     2,     2,     2,     2,
    1336        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    1337        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    1338        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    1339        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    1340        2,    38,     2,    39,     2,     2,     2,     2,     2,     2,
     1344       2,     2,     2,     2,     2,    41,     2,     2,     2,     2,
     1345       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     1346       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     1347       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     1348       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     1349       2,    39,     2,    40,     2,     2,     2,     2,     2,     2,
    13411350       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    13421351       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    13581367      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    13591368      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    1360       35,    36,    37
     1369      35,    36,    37,    38
    13611370    };
    13621371    if ((unsigned int) t <= yyuser_token_number_max_)
     
    13671376
    13681377  const int EasyMeshParser::yyeof_ = 0;
    1369   const int EasyMeshParser::yylast_ = 130;
     1378  const int EasyMeshParser::yylast_ = 126;
    13701379  const int EasyMeshParser::yynnts_ = 20;
    13711380  const int EasyMeshParser::yyempty_ = -2;
    1372   const int EasyMeshParser::yyfinal_ = 84;
     1381  const int EasyMeshParser::yyfinal_ = 86;
    13731382  const int EasyMeshParser::yyterror_ = 1;
    13741383  const int EasyMeshParser::yyerrcode_ = 256;
    1375   const int EasyMeshParser::yyntokens_ = 41;
    1376 
    1377   const unsigned int EasyMeshParser::yyuser_token_number_max_ = 292;
     1384  const int EasyMeshParser::yyntokens_ = 42;
     1385
     1386  const unsigned int EasyMeshParser::yyuser_token_number_max_ = 293;
    13781387  const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2;
    13791388
     
    13821391
    13831392/* Line 1136 of lalr1.cc  */
    1384 #line 1385 "generated/easymesh-parser.cpp"
     1393#line 1394 "generated/easymesh-parser.cpp"
    13851394
    13861395
    13871396/* Line 1138 of lalr1.cc  */
    1388 #line 176 "easymesh/easymesh-parser.y"
     1397#line 177 "easymesh/easymesh-parser.y"
    13891398
    13901399
  • trunk/src/generated/easymesh-parser.h

    r1619 r1875  
    132132     T_QUAD = 288,
    133133     T_COG = 289,
    134      T_ERROR = 290,
    135      NUMBER = 291,
    136      COLOR = 292
     134     T_TORUS = 290,
     135     T_ERROR = 291,
     136     NUMBER = 292,
     137     COLOR = 293
    137138   };
    138139
     
    314315
    315316/* Line 35 of lalr1.cc  */
    316 #line 317 "generated/easymesh-parser.h"
     317#line 318 "generated/easymesh-parser.h"
    317318
    318319
  • trunk/src/generated/easymesh-scanner.cpp

    r1808 r1875  
    331331        (yy_c_buf_p) = yy_cp;
    332332
    333 #define YY_NUM_RULES 44
    334 #define YY_END_OF_BUFFER 45
     333#define YY_NUM_RULES 45
     334#define YY_END_OF_BUFFER 46
    335335/* This struct is not used in this scanner,
    336336   but its presence is necessary. */
     
    342342static yyconst flex_int16_t yy_accept[72] =
    343343    {   0,
    344         0,    0,   45,   43,   42,   41,   43,   43,   38,   43,
    345        37,   39,   40,   43,   43,   43,   43,   17,    7,    0,
    346         0,   37,   37,    0,   22,   21,   29,    0,    0,   31,
    347        27,   30,    3,   18,   19,   20,    8,    9,   10,    1,
    348        14,   15,   16,    0,    4,    5,    6,    0,    0,   37,
    349         0,   32,   28,    0,    0,    0,    2,   11,   12,   13,
    350        33,   25,   24,   23,   26,   34,    0,   35,    0,   36,
     344        0,    0,   46,   44,   43,   42,   44,   44,   39,   44,
     345       38,   40,   41,   44,   44,   44,   44,   17,    7,    0,
     346        0,   38,   38,    0,   22,   21,   30,    0,    0,   32,
     347       28,   27,    3,   18,   19,   20,    8,    9,   10,    1,
     348       14,   15,   16,    0,    4,    5,    6,    0,    0,   38,
     349        0,   33,   29,    0,    0,    0,    2,   11,   12,   13,
     350       34,   25,   24,   23,   26,   35,    0,   36,    0,   37,
    351351        0
    352352    } ;
     
    822822YY_RULE_SETUP
    823823#line 79 "easymesh/easymesh-scanner.l"
     824{ return token::T_TORUS; }
     825        YY_BREAK
     826case 28:
     827YY_RULE_SETUP
     828#line 80 "easymesh/easymesh-scanner.l"
    824829{ return token::T_STAR; }
    825830        YY_BREAK
    826 case 28:
    827 YY_RULE_SETUP
    828 #line 80 "easymesh/easymesh-scanner.l"
     831case 29:
     832YY_RULE_SETUP
     833#line 81 "easymesh/easymesh-scanner.l"
    829834{ return token::T_EXPANDEDSTAR; }
    830835        YY_BREAK
    831 case 29:
    832 YY_RULE_SETUP
    833 #line 81 "easymesh/easymesh-scanner.l"
     836case 30:
     837YY_RULE_SETUP
     838#line 82 "easymesh/easymesh-scanner.l"
    834839{ return token::T_DISC; }
    835840        YY_BREAK
    836 case 30:
    837 YY_RULE_SETUP
    838 #line 82 "easymesh/easymesh-scanner.l"
     841case 31:
     842YY_RULE_SETUP
     843#line 83 "easymesh/easymesh-scanner.l"
    839844{ return token::T_TRIANGLE; }
    840845        YY_BREAK
    841 case 31:
    842 YY_RULE_SETUP
    843 #line 83 "easymesh/easymesh-scanner.l"
     846case 32:
     847YY_RULE_SETUP
     848#line 84 "easymesh/easymesh-scanner.l"
    844849{ return token::T_QUAD; }
    845850        YY_BREAK
    846 case 32:
    847 YY_RULE_SETUP
    848 #line 84 "easymesh/easymesh-scanner.l"
     851case 33:
     852YY_RULE_SETUP
     853#line 85 "easymesh/easymesh-scanner.l"
    849854{ return token::T_COG; }
    850855        YY_BREAK
    851 case 33:
    852 YY_RULE_SETUP
    853 #line 86 "easymesh/easymesh-scanner.l"
     856case 34:
     857YY_RULE_SETUP
     858#line 87 "easymesh/easymesh-scanner.l"
    854859{
    855860        uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
     
    860865        return token::COLOR; }
    861866        YY_BREAK
    862 case 34:
    863 YY_RULE_SETUP
    864 #line 93 "easymesh/easymesh-scanner.l"
     867case 35:
     868YY_RULE_SETUP
     869#line 94 "easymesh/easymesh-scanner.l"
    865870{
    866871        uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
     
    871876        return token::COLOR; }
    872877        YY_BREAK
    873 case 35:
    874 YY_RULE_SETUP
    875 #line 100 "easymesh/easymesh-scanner.l"
     878case 36:
     879YY_RULE_SETUP
     880#line 101 "easymesh/easymesh-scanner.l"
    876881{
    877882        yylval->u32val = 0xffu
     
    879884        return token::COLOR; }
    880885        YY_BREAK
    881 case 36:
    882 YY_RULE_SETUP
    883 #line 104 "easymesh/easymesh-scanner.l"
     886case 37:
     887YY_RULE_SETUP
     888#line 105 "easymesh/easymesh-scanner.l"
    884889{
    885890        yylval->u32val = (uint32_t)std::strtol(yytext + 1, NULL, 16);
    886891        return token::COLOR; }
    887892        YY_BREAK
    888 case 37:
    889 YY_RULE_SETUP
    890 #line 107 "easymesh/easymesh-scanner.l"
     893case 38:
     894YY_RULE_SETUP
     895#line 108 "easymesh/easymesh-scanner.l"
    891896{
    892897        yylval->fval = std::atof(yytext); return token::NUMBER; }
    893898        YY_BREAK
    894 case 38:
    895 YY_RULE_SETUP
    896 #line 109 "easymesh/easymesh-scanner.l"
     899case 39:
     900YY_RULE_SETUP
     901#line 110 "easymesh/easymesh-scanner.l"
    897902{ return token_type('-'); }
    898903        YY_BREAK
    899 case 39:
    900 YY_RULE_SETUP
    901 #line 110 "easymesh/easymesh-scanner.l"
     904case 40:
     905YY_RULE_SETUP
     906#line 111 "easymesh/easymesh-scanner.l"
    902907{ return token_type('['); }
    903908        YY_BREAK
    904 case 40:
    905 YY_RULE_SETUP
    906 #line 111 "easymesh/easymesh-scanner.l"
     909case 41:
     910YY_RULE_SETUP
     911#line 112 "easymesh/easymesh-scanner.l"
    907912{ return token_type(']'); }
    908913        YY_BREAK
    909 case 41:
    910 YY_RULE_SETUP
    911 #line 112 "easymesh/easymesh-scanner.l"
    912 { /* ignore this */ }
    913         YY_BREAK
    914914case 42:
    915 /* rule 42 can match eol */
    916915YY_RULE_SETUP
    917916#line 113 "easymesh/easymesh-scanner.l"
     
    919918        YY_BREAK
    920919case 43:
     920/* rule 43 can match eol */
    921921YY_RULE_SETUP
    922922#line 114 "easymesh/easymesh-scanner.l"
     923{ /* ignore this */ }
     924        YY_BREAK
     925case 44:
     926YY_RULE_SETUP
     927#line 115 "easymesh/easymesh-scanner.l"
    923928{ return token::T_ERROR; }
    924929        YY_BREAK
    925 case 44:
    926 YY_RULE_SETUP
    927 #line 116 "easymesh/easymesh-scanner.l"
     930case 45:
     931YY_RULE_SETUP
     932#line 117 "easymesh/easymesh-scanner.l"
    928933ECHO;
    929934        YY_BREAK
    930 #line 931 "generated/easymesh-scanner.cpp"
     935#line 936 "generated/easymesh-scanner.cpp"
    931936case YY_STATE_EOF(INITIAL):
    932937        yyterminate();
     
    18291834#define YYTABLES_NAME "yytables"
    18301835
    1831 #line 116 "easymesh/easymesh-scanner.l"
     1836#line 117 "easymesh/easymesh-scanner.l"
    18321837
    18331838
  • trunk/tutorial/05_easymesh.cpp

    r1784 r1875  
    3030                m_mesh.Compile("ad12,2.2,0 ty.1 ac12,.2,2.4,2.2,0,1 ty.8 ac12,1.7,2.4,2.4,0,1 ty2.5");
    3131                m_mesh.Translate(vec3(i * 8.f, (h - 1) * 3.2f, j * 8.f));
    32 
    33                                 m_mesh.CloseBrace();
     32                m_mesh.CloseBrace();
    3433            }
    3534        m_mesh.OpenBrace();
     
    4544    {
    4645        m_angle = 0;
    47         m_mesh.Compile("sc#800 [asph10 20 20 20]");
    48                 m_mesh.RadialJitter(0.2f);             
     46        m_mesh.Compile("sc#8d3 [at40 10 40 rx20 ry130 tx30]");
     47
     48        m_mesh.OpenBrace();
     49        m_mesh.Compile("sc#800 [asph10 25 25 25]");
     50        m_mesh.Compile("ty50");
     51        m_mesh.RadialJitter(0.2f);
     52        m_mesh.Compile("ty-50 tx-40");
     53        m_mesh.CloseBrace();
     54
     55#if 0
    4956        //m_mesh.Compile("sc#94e scb#649 [asph3 7 7 7 tx-6 tz-9]");
    5057        //m_mesh.Compile("sc#49e scb#469 [asph31 7 7 7 tx-6 tz9]");
     
    103110        m_mesh.Compile("sc#e49 scb#e49");
    104111        AddPiece(6, 2, 1, -2, -2, -3);
     112#endif
    105113
    106114        /* Center everything -- is it needed? */
    107         m_mesh.Compile("tx4 tz4");
     115//        m_mesh.Compile("tx4 tz4");
    108116
    109117        m_camera = new Camera(vec3(0.f, 600.f, 0.f),
Note: See TracChangeset for help on using the changeset viewer.