diff --git a/src/easymesh/easymesh-parser.y b/src/easymesh/easymesh-parser.y index 14c2d135..6a7adeff 100644 --- a/src/easymesh/easymesh-parser.y +++ b/src/easymesh/easymesh-parser.y @@ -45,12 +45,12 @@ %start mesh_description -%token T_LOOP T_COLOR T_BCOLOR T_VCOLOR +%token T_LOOP T_COLOR T_ACOLOR T_BCOLOR T_VCOLOR %token T_TRANSLATEX T_ROTATEX T_TAPERX T_TWISTX T_SHEARX T_STRETCHX T_BENDXY T_BENDXZ T_SCALEX T_MIRRORX %token T_TRANSLATEY T_ROTATEY T_TAPERY T_TWISTY T_SHEARY T_STRETCHY T_BENDYX T_BENDYZ T_SCALEY T_MIRRORY %token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_TWISTZ T_SHEARZ T_STRETCHZ T_BENDZX T_BENDZY T_SCALEZ T_MIRRORZ -%token T_TRANSLATE T_ROTATE T_SCALE T_TOGGLESCALEWINDING T_RADIALJITTER T_SPLITTRIANGLE T_SMOOTHMESH +%token T_TRANSLATE T_ROTATE T_SCALE T_TOGGLESCALEWINDING T_TOGGLEQUADWEIGHTING T_RADIALJITTER T_SPLITTRIANGLE T_SMOOTHMESH %token T_DUPLICATE %token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR %token T_CHAMFER @@ -70,6 +70,7 @@ %type fv %type iv /* Vector types */ +%type v2 %type v3 %type v4 /* Special types */ @@ -147,11 +148,16 @@ color_command: | T_COLOR COLOR { uint32_t x = $2; ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); mc.m_mesh.SetCurColor(vec4(v) * (1.f / 255.f)); } - | T_BCOLOR fv fv fv fv { mc.m_mesh.SetCurColor2(vec4($2, $3, $4, $5)); } - | T_BCOLOR v4 { mc.m_mesh.SetCurColor2(vec4($2[0], $2[1], $2[2], $2[3])); } + | T_ACOLOR fv fv fv fv { mc.m_mesh.SetCurColorA(vec4($2, $3, $4, $5)); } + | T_ACOLOR v4 { mc.m_mesh.SetCurColorA(vec4($2[0], $2[1], $2[2], $2[3])); } + | T_ACOLOR COLOR { uint32_t x = $2; + ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); + mc.m_mesh.SetCurColorA(vec4(v) * (1.f / 255.f)); } + | T_BCOLOR fv fv fv fv { mc.m_mesh.SetCurColorB(vec4($2, $3, $4, $5)); } + | T_BCOLOR v4 { mc.m_mesh.SetCurColorB(vec4($2[0], $2[1], $2[2], $2[3])); } | T_BCOLOR COLOR { uint32_t x = $2; ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); - mc.m_mesh.SetCurColor2(vec4(v) * (1.f / 255.f)); } + mc.m_mesh.SetCurColorB(vec4(v) * (1.f / 255.f)); } | T_VCOLOR fv fv fv fv { mc.m_mesh.SetVertColor(vec4($2, $3, $4, $5)); } | T_VCOLOR v4 { mc.m_mesh.SetVertColor(vec4($2[0], $2[1], $2[2], $2[3])); } | T_VCOLOR COLOR { uint32_t x = $2; @@ -226,6 +232,7 @@ transform_command: | T_SPLITTRIANGLE iv { mc.m_mesh.SplitTriangles($2); } | T_SMOOTHMESH iv iv iv { mc.m_mesh.SmoothMesh($2, $3, $4); } | T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); } + | T_TOGGLEQUADWEIGHTING { mc.m_mesh.ToggleQuadWeighting(); } ; primitive_command: @@ -262,6 +269,9 @@ primitive_command: | T_COG iv fv fv fv fv fv fv fv fv bv { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); } | T_COG iv fv fv fv fv fv fv fv fv { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9, $10); } | T_COG iv fv fv fv fv fv fv fv { mc.m_mesh.AppendCog($2, $3, $4, $5, $6, $7, $8, $9); } + | T_COG iv fv v2 v2 v2 fv bv { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1], $7, $8); } + | T_COG iv fv v2 v2 v2 fv { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1], $7); } + | T_COG iv fv v2 v2 v2 { mc.m_mesh.AppendCog($2, $3, $4[0], $4[1], $5[0], $5[1], $6[0], $6[1]); } ; /* Base Number types */ @@ -280,6 +290,11 @@ iv: ; /* Vector types */ +v2: + '('fv')' { $$[0] = $2; $$[1] = $2; } + | '('fv fv')' { $$[0] = $2; $$[1] = $3; } + ; + v3: '('fv')' { $$[0] = $2; $$[1] = $2; $$[2] = $2; } | '('fv fv fv')' { $$[0] = $2; $$[1] = $3; $$[2] = $4; } diff --git a/src/easymesh/easymesh-scanner.l b/src/easymesh/easymesh-scanner.l index 6d1733b2..018d52a4 100644 --- a/src/easymesh/easymesh-scanner.l +++ b/src/easymesh/easymesh-scanner.l @@ -54,10 +54,12 @@ typedef lol::EasyMeshParser::token_type token_type; (csgx|csgxor) { return token::T_CSGXOR; } (lp|loop) { return token::T_LOOP; } -(tsw|scalewinding) { return token::T_TOGGLESCALEWINDING; } +(tsw|tglscalewind) { return token::T_TOGGLESCALEWINDING; } +(tqw|tglquadweight) { return token::T_TOGGLEQUADWEIGHTING; } (sc|setcolor) { return token::T_COLOR; } -(scb|setbcolor) { return token::T_BCOLOR; } -(scv|setcolorvert) { return token::T_VCOLOR; } +(sca|setcolora) { return token::T_ACOLOR; } +(scb|setcolorb) { return token::T_BCOLOR; } +(scv|setcolorv) { return token::T_VCOLOR; } (tx|translatex) { return token::T_TRANSLATEX; } (ty|translatey) { return token::T_TRANSLATEY; } diff --git a/src/easymesh/easymesh.cpp b/src/easymesh/easymesh.cpp index 908e9396..da187c13 100644 --- a/src/easymesh/easymesh.cpp +++ b/src/easymesh/easymesh.cpp @@ -519,14 +519,19 @@ void EasyMesh::ExecuteCmdStack() EZM_CALL_FUNC(ToggleScaleWinding); break; } - case EasyMeshCmdType::SetColor: + case EasyMeshCmdType::QuadWeighting: { - EZM_CALL_FUNC(SetCurColor, vec4); + EZM_CALL_FUNC(ToggleQuadWeighting); break; } - case EasyMeshCmdType::SetColor2: + case EasyMeshCmdType::SetColorA: { - EZM_CALL_FUNC(SetCurColor2, vec4); + EZM_CALL_FUNC(SetCurColorA, vec4); + break; + } + case EasyMeshCmdType::SetColorB: + { + EZM_CALL_FUNC(SetCurColorB, vec4); break; } case EasyMeshCmdType::SetVertColor: @@ -1126,30 +1131,49 @@ void EasyMesh::ToggleScaleWinding() BD()->Toggle(MeshBuildOperation::ScaleWinding); } +//----------------------------------------------------------------------------- +void EasyMesh::ToggleQuadWeighting() +{ + if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) + { + BD()->CmdStack().AddCmd(EasyMeshCmdType::QuadWeighting); + return; + } + + BD()->Toggle(MeshBuildOperation::QuadWeighting); +} + //----------------------------------------------------------------------------- void EasyMesh::SetCurColor(vec4 const &color) +{ + SetCurColorA(color); + SetCurColorB(color); +} + +//----------------------------------------------------------------------------- +void EasyMesh::SetCurColorA(vec4 const &color) { if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) { - BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColor); + BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColorA); BD()->CmdStack() << color; return; } - BD()->Color() = color; + BD()->ColorA() = color; } //----------------------------------------------------------------------------- -void EasyMesh::SetCurColor2(vec4 const &color) +void EasyMesh::SetCurColorB(vec4 const &color) { if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) { - BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColor2); + BD()->CmdStack().AddCmd(EasyMeshCmdType::SetColorB); BD()->CmdStack() << color; return; } - BD()->Color2() = color; + BD()->ColorB() = color; } //----------------------------------------------------------------------------- @@ -1169,7 +1193,7 @@ void EasyMesh::SetVertColor(vec4 const &color) //----------------------------------------------------------------------------- void EasyMesh::AddVertex(vec3 const &coord) { - m_vert.Push(VertexData(coord, vec3(0.f, 1.f, 0.f), BD()->Color())); + m_vert.Push(VertexData(coord, vec3(0.f, 1.f, 0.f), BD()->ColorA())); m_state = MeshRender::NeedConvert; } @@ -1183,38 +1207,81 @@ void EasyMesh::AddDuplicateVertex(int i) //----------------------------------------------------------------------------- void EasyMesh::AddLerpVertex(int i, int j, float alpha) { - m_vert.Push(VertexData( - lol::lerp(m_vert[i].m_coord, m_vert[j].m_coord, alpha), - lol::lerp(m_vert[i].m_normal, m_vert[j].m_normal, alpha), - lol::lerp(m_vert[i].m_color, m_vert[j].m_color, alpha), - lol::lerp(m_vert[i].m_texcoord, m_vert[j].m_texcoord, alpha), - ((alpha < .5f) ? (m_vert[i].m_bone_id) : (m_vert[j].m_bone_id)), /* FIXME ? */ - lol::lerp(m_vert[i].m_bone_weight, m_vert[j].m_bone_weight, alpha))); + AddLerpVertex(m_vert[i], m_vert[j], alpha); + +} +//----------------------------------------------------------------------------- +void EasyMesh::AddLerpVertex(VertexData &vi, VertexData &vj, float alpha) +{ + m_vert.Push(GetLerpVertex(vi, vj, alpha)); m_state = MeshRender::NeedConvert; } +//----------------------------------------------------------------------------- +VertexData EasyMesh::GetLerpVertex(int i, int j, float alpha) +{ + return GetLerpVertex(m_vert[i], m_vert[j], alpha); +} + +//----------------------------------------------------------------------------- +VertexData EasyMesh::GetLerpVertex(VertexData &vi, VertexData &vj, float alpha) +{ + return VertexData( + lol::lerp(vi.m_coord, vj.m_coord, alpha), + lol::lerp(vi.m_normal, vj.m_normal, alpha), + lol::lerp(vi.m_color, vj.m_color, alpha), + lol::lerp(vi.m_texcoord, vj.m_texcoord, alpha), + ((alpha < .5f) ? (vi.m_bone_id) : (vj.m_bone_id)), /* FIXME ? */ + lol::lerp(vi.m_bone_weight, vj.m_bone_weight, alpha)); +} + //----------------------------------------------------------------------------- void EasyMesh::AppendQuad(int i1, int i2, int i3, int i4, int base) { - m_indices << base + i1; - m_indices << base + i2; - m_indices << base + i3; + if (BD()->IsEnabled(MeshBuildOperation::QuadWeighting) && + !BD()->IsEnabled(MeshBuildOperation::IgnoreQuadWeighting)) + { + int i5 = m_vert.Count(); + AddLerpVertex(GetLerpVertex(base + i1, base + i3, .5f), + GetLerpVertex(base + i2, base + i4, .5f), .5f); + m_indices << i1 + base; + m_indices << i2 + base; + m_indices << i5; - m_indices << base + i4; - m_indices << base + i1; - m_indices << base + i3; + m_indices << i2 + base; + m_indices << i3 + base; + m_indices << i5; + + m_indices << i4 + base; + m_indices << i1 + base; + m_indices << i5; + + m_indices << i5; + m_indices << i3 + base; + m_indices << i4 + base; + } + else + { + m_indices << base + i1; + m_indices << base + i2; + m_indices << base + i3; + + m_indices << base + i4; + m_indices << base + i1; + m_indices << base + i3; + } } //----------------------------------------------------------------------------- void EasyMesh::AppendQuadDuplicateVerts(int i1, int i2, int i3, int i4, int base) { - m_indices << m_vert.Count(); AddDuplicateVertex(base + i1); - m_indices << m_vert.Count(); AddDuplicateVertex(base + i2); - m_indices << m_vert.Count(); AddDuplicateVertex(base + i3); + int vbase = m_vert.Count(); + AddDuplicateVertex(base + i1); + AddDuplicateVertex(base + i2); + AddDuplicateVertex(base + i3); + AddDuplicateVertex(base + i4); - m_indices << m_vert.Count(); AddDuplicateVertex(base + i4); - m_indices << m_vert.Count(); AddDuplicateVertex(base + i1); - m_indices << m_vert.Count(); AddDuplicateVertex(base + i3); + AppendQuad(0, 1, 2, 3, vbase); } //----------------------------------------------------------------------------- @@ -1726,8 +1793,8 @@ void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2, float r2 = d2 * .5f; //SAVE - vec4 Saved_Color = BD()->Color(); - vec4 Saved_Color2 = BD()->Color2(); + vec4 Saved_ColorA = BD()->ColorA(); + vec4 Saved_ColorB = BD()->ColorB(); vec2 Save_texcoord_offset = BD()->TexCoordOffset(); vec2 Save_texcoord_scale = BD()->TexCoordScale(); @@ -1749,14 +1816,29 @@ void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2, n = mat3::rotate(180.0f / nsides, 0.f, 1.f, 0.f) * n; n = normalize(n); - /* FIXME: normals should be flipped in two-sided mode, but that - * means duplicating the vertices again... */ + //Two passes necessary to ensure "weighted quad" compatibility + //First pass : Add vertices for (int i = 0; i < nsides; i++) { + /* FIXME: normals should be flipped in two-sided mode, but that + * means duplicating the vertices again... */ AddVertex(p1); SetCurVertNormal(n); SetCurVertTexCoord(uv1); SetCurVertTexCoord2(uv1); - AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); - SetCurVertColor(BD()->Color2()); + AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); SetCurVertColor(BD()->ColorB()); + + p1 = rotmat * p1; uv1 += uvadd; + p2 = rotmat * p2; uv2 += uvadd; + + if (!smooth) + { + AddVertex(p1); SetCurVertNormal(n); SetCurVertTexCoord(uv1); SetCurVertTexCoord2(uv1); + AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); SetCurVertColor(BD()->ColorB()); + } + n = rotmat * n; + } + //Second pass : Build quad + for (int i = 0; i < nsides; i++) + { if (smooth) { int j = (i + 1) % nsides; @@ -1764,22 +1846,13 @@ void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2, if (dualside) AppendQuad(i * 2, i * 2 + 1, j * 2 + 1, j * 2, vbase); } - - p1 = rotmat * p1; uv1 += uvadd; - p2 = rotmat * p2; uv2 += uvadd; - - if (!smooth) + else { - AddVertex(p1); SetCurVertNormal(n); SetCurVertTexCoord(uv1); SetCurVertTexCoord2(uv1); - AddVertex(p2); SetCurVertNormal(n); SetCurVertTexCoord(uv2); SetCurVertTexCoord2(uv2); - SetCurVertColor(BD()->Color2()); - AppendQuad(i * 4 + 2, i * 4 + 3, i * 4 + 1, i * 4, vbase); if (dualside) AppendQuad(i * 4, i * 4 + 1, i * 4 + 3, i * 4 + 2, vbase); } - n = rotmat * n; } if (close) @@ -1788,20 +1861,20 @@ void EasyMesh::AppendCylinder(int nsides, float h, float d1, float d2, OpenBrace(); //LOWER DISC SetTexCoordData(vec2(.0f, .5f), vec2(.5f, .5f)); - SetCurColor(BD()->Color()); + SetCurColorA(BD()->ColorA()); AppendDisc(nsides, d1); Translate(vec3(.0f, h, .0f)); RotateX(180.0f); //UPPER DISC SetTexCoordData(vec2(.5f, .5f), vec2(.5f, .5f)); - SetCurColor(BD()->Color2()); + SetCurColorA(BD()->ColorB()); AppendDisc(nsides, d2); Translate(vec3(.0f, h * .5f, .0f)); CloseBrace(); } //RESTORE - SetCurColor(Saved_Color); - SetCurColor2(Saved_Color2); + SetCurColorA(Saved_ColorA); + SetCurColorB(Saved_ColorB); SetTexCoordData(Save_texcoord_offset, Save_texcoord_scale); } @@ -2175,13 +2248,13 @@ void EasyMesh::AppendBox(vec3 const &size, float chamf, bool smooth) SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft)); SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft)); - /* The 6 quads on each side of the box */ - for (int i = 0; i < 24; i += 4) - AppendQuad(i, i + 1, i + 2, i + 3, vbase); - ComputeNormals(ibase, m_indices.Count() - ibase); ibase = m_indices.Count(); + //Build the box at the end : The 6 quads on each side of the box. + for (int i = 0; i < 24; i += 4) + AppendQuad(i, i + 1, i + 2, i + 3, vbase); + /* The 8 quads at each edge of the box */ if (chamf) { @@ -2195,11 +2268,11 @@ void EasyMesh::AppendBox(vec3 const &size, float chamf, bool smooth) for (int i = 0; i < 48; i += 4) { if (smooth) - AppendQuad(quadlist[i], quadlist[i + 1], + AppendQuad(quadlist[i], quadlist[i + 1], quadlist[i + 2], quadlist[i + 3], vbase); else - AppendQuadDuplicateVerts(quadlist[i], quadlist[i + 1], - quadlist[i + 2], quadlist[i + 3], vbase); + AppendQuadDuplicateVerts(quadlist[i], quadlist[i + 1], + quadlist[i + 2], quadlist[i + 3], vbase); } } @@ -2215,11 +2288,9 @@ void EasyMesh::AppendBox(vec3 const &size, float chamf, bool smooth) for (int i = 0; i < 24; i += 3) { if (smooth) - AppendTriangle(trilist[i], trilist[i + 1], - trilist[i + 2], vbase); + AppendTriangle(trilist[i], trilist[i + 1], trilist[i + 2], vbase); else - AppendTriangleDuplicateVerts(trilist[i], trilist[i + 1], - trilist[i + 2], vbase); + AppendTriangleDuplicateVerts(trilist[i], trilist[i + 1], trilist[i + 2], vbase); } } @@ -2238,6 +2309,9 @@ void EasyMesh::AppendStar(int nbranches, float d1, float d2, return; } + //Should ignore quad weight, as it does not destroy star symmetry + BD()->Enable(MeshBuildOperation::IgnoreQuadWeighting); + //XXX : This operation is done to convert radius to diameter without changing all the code. float r1 = d1 * .5f; float r2 = d2 * .5f; @@ -2260,18 +2334,21 @@ void EasyMesh::AppendStar(int nbranches, float d1, float d2, { AddVertex(p1); SetCurVertTexCoord(uv1.xz + vec2(.5f)); SetCurVertTexCoord2(uv1.xz + vec2(.5f)); if (fade2) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); AddVertex(p2); SetCurVertTexCoord(uv2.xz + vec2(.5f)); SetCurVertTexCoord2(uv2.xz + vec2(.5f)); if (fade) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); - AppendQuad(0, 2 * i + 1, 2 * i + 2, (2 * i + 3) % (2 * nbranches), - vbase); + //Append quad at the end + AppendQuad(0, 2 * i + 1, 2 * i + 2, (2 * i + 3) % (2 * nbranches), vbase); p1 = rotmat * p1; uv1 = rotmat * uv1; p2 = rotmat * p2; uv2 = rotmat * uv2; } + + //Restore + BD()->Disable(MeshBuildOperation::IgnoreQuadWeighting); } //----------------------------------------------------------------------------- @@ -2284,6 +2361,9 @@ void EasyMesh::AppendExpandedStar(int nbranches, float d1, float d2, float extra return; } + //Should ignore quad weight, as it does not destroy star symmetry + BD()->Enable(MeshBuildOperation::IgnoreQuadWeighting); + //XXX : This operation is done to convert radius to diameter without changing all the code. float r1 = d1 * .5f; float r2 = d2 * .5f; @@ -2310,10 +2390,11 @@ void EasyMesh::AppendExpandedStar(int nbranches, float d1, float d2, float extra { AddVertex(p1); SetCurVertTexCoord(uv1.xz + vec2(.5f)); SetCurVertTexCoord2(uv1.xz + vec2(.5f)); AddVertex(p2); SetCurVertTexCoord(uv2.xz + vec2(.5f)); SetCurVertTexCoord2(uv2.xz + vec2(.5f)); - AddVertex(p3); SetCurVertTexCoord(uv3.xz + vec2(.5f)); SetCurVertTexCoord2(uv3.xz + vec2(.5f)); SetCurVertColor(BD()->Color2()); - AddVertex(p4); SetCurVertTexCoord(uv4.xz + vec2(.5f)); SetCurVertTexCoord2(uv4.xz + vec2(.5f)); SetCurVertColor(BD()->Color2()); + AddVertex(p3); SetCurVertTexCoord(uv3.xz + vec2(.5f)); SetCurVertTexCoord2(uv3.xz + vec2(.5f)); SetCurVertColor(BD()->ColorB()); + AddVertex(p4); SetCurVertTexCoord(uv4.xz + vec2(.5f)); SetCurVertTexCoord2(uv4.xz + vec2(.5f)); SetCurVertColor(BD()->ColorB()); int j = (i + 1) % nbranches; + // AppendQuad(0, 4 * i + 1, 4 * i + 2, 4 * j + 1, vbase); AppendQuad(4 * i + 1, 4 * i + 3, 4 * i + 4, 4 * i + 2, vbase); AppendQuad(4 * j + 1, 4 * i + 2, 4 * i + 4, 4 * j + 3, vbase); @@ -2323,6 +2404,9 @@ void EasyMesh::AppendExpandedStar(int nbranches, float d1, float d2, float extra p3 = rotmat * p3; uv3 = rotmat * uv3; p4 = rotmat * p4; uv4 = rotmat * uv4; } + + //Restore + BD()->Disable(MeshBuildOperation::IgnoreQuadWeighting); } //----------------------------------------------------------------------------- @@ -2350,7 +2434,7 @@ void EasyMesh::AppendDisc(int nsides, float d, bool fade) { AddVertex(p1); SetCurVertTexCoord(uv.xz + vec2(.5f, .5f)); SetCurVertTexCoord2(uv.xz + vec2(.5f, .5f)); if (fade) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); AppendTriangle(0, i + 1, ((i + 1) % nsides) + 1, vbase); p1 = rotmat * p1; uv = rotmat * uv; @@ -2377,11 +2461,11 @@ void EasyMesh::AppendSimpleTriangle(float d, bool fade) p = m * p; AddVertex(p); SetCurVertTexCoord(vec2(0.f, 1.f)); SetCurVertTexCoord2(vec2(0.f, 1.f)); if (fade) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); p = m * p; AddVertex(p); SetCurVertTexCoord(vec2(1.f, 1.f)); SetCurVertTexCoord2(vec2(1.f, 1.f)); if (fade) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); AppendTriangle(0, 1, 2, m_vert.Count() - 3); } @@ -2420,13 +2504,13 @@ void EasyMesh::AppendSimpleQuad(vec2 p1, vec2 p2, float z, bool fade) TexCoordPos tl = TexCoordPos::TL; SetCurVertTexCoord(BD()->TexCoord(mt, tl, mft)); SetCurVertTexCoord2(BD()->TexCoord2(mt, tl, mft)); - if (fade) SetCurVertColor(BD()->Color2()); + if (fade) SetCurVertColor(BD()->ColorB()); //-- AddVertex(vec3(p1.x, z, -p1.y)); TexCoordPos tr = TexCoordPos::TR; SetCurVertTexCoord(BD()->TexCoord(mt, tr, mft)); SetCurVertTexCoord2(BD()->TexCoord2(mt, tr, mft)); - if (fade) SetCurVertColor(BD()->Color2()); + if (fade) SetCurVertColor(BD()->ColorB()); AppendQuad(0, 1, 2, 3, m_vert.Count() - 4); ComputeNormals(m_indices.Count() - 6, 6); @@ -2434,7 +2518,7 @@ void EasyMesh::AppendSimpleQuad(vec2 p1, vec2 p2, float z, bool fade) //----------------------------------------------------------------------------- void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, - float d1, float d2, float d12, float d22, + float d11, float d21, float d12, float d22, float sidemul, bool offset) { if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) @@ -2442,7 +2526,7 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, BD()->CmdStack().AddCmd(EasyMeshCmdType::AppendCog); BD()->CmdStack() << nbsides << h << d10 << d20 - << d1 << d2 + << d11 << d21 << d12 << d22 << sidemul << offset; return; @@ -2451,8 +2535,8 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, //XXX : This operation is done to convert radius to diameter without changing all the code. float r10 = d10 * .5f; float r20 = d20 * .5f; - float r1 = d1 * .5f; - float r2 = d2 * .5f; + float r11 = d11 * .5f; + float r21 = d21 * .5f; float r12 = d12 * .5f; float r22 = d22 * .5f; @@ -2472,17 +2556,17 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, //Upper points p[0] = vec3(r10, h * .5f, 0.f); p[1] = rotmat * p[0]; - p[2] = vec3(r1, h * .5f, 0.f); + p[2] = vec3(r11, h * .5f, 0.f); p[3] = rotmat * p[2]; - p[4] = smat1 * (rotmat * vec3(r1 + r12, h * .5f, 0.f)); + p[4] = smat1 * (rotmat * vec3(r11 + r12, h * .5f, 0.f)); p[5] = smat2 * (rotmat * p[4]); //Lower points p[6] = vec3(r20, h * -.5f, 0.f); p[7] = rotmat * p[6]; - p[8] = vec3(r2, h * -.5f, 0.f); + p[8] = vec3(r21, h * -.5f, 0.f); p[9] = rotmat * p[8]; - p[10] = smat1 * (rotmat * vec3(r2 + r22, h * -.5f, 0.f)); + p[10] = smat1 * (rotmat * vec3(r21 + r22, h * -.5f, 0.f)); p[11] = smat2 * (rotmat * p[10]); if (offset) @@ -2492,7 +2576,7 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, rotmat = rotmat * rotmat; //UV base computation - float maxr = max(max(r1 + r12, r2 + r22), max(r10, r20)); + float maxr = max(max(r11 + r12, r21 + r22), max(r10, r20)); float InLn = length(p[1] - p[0]); float CogLn[8] = { .0f, .0f, .0f, .0f, .0f, .0f, .0f, .0f }; for (int i = 0; i < 3; i++) @@ -2588,60 +2672,64 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, uv[ 9] = vec2(CogSz, 1.f) * CogUV[0] + CogUV[1]; CogSz -= CogLn[0]; uv[ 8] = vec2(0.f, 1.f) * CogUV[0] + CogUV[1]; +#define DEF_J_K_Q \ + int j = 3 * 12 * i, \ + k = 3 * 12 * ((i + 1) % nbsides); \ + int q[] = { \ +/* The top and bottom faces */ \ + j, j, j, j, \ + j, j, j, j, \ + j, j, k, k, \ + k, k, j, j, \ + j, j, j, k, \ + k, j, j, j, \ +/* The inner side quads */ \ + j, j, j, j, \ + j, k, k, j, \ +/* The outer side quads */ \ + j, j, j, j, \ + j, j, j, j, \ + j, j, j, j, \ + k, j, j, k \ + }; + int m[] = { /* The top and bottom faces */ + 0, 2, 3, 1, + 7, 9, 8, 6, + 1, 3, 2, 0, + 6, 8, 9, 7, + 3, 4, 5, 2, + 8, 11, 10, 9, + /* The inner side quads */ + 0, 1, 7, 6, + 1, 0, 6, 7, + /* The outer side quads */ + 3, 2, 8, 9, + 4, 3, 9, 10, + 5, 4, 10, 11, + 2, 5, 11, 8 + }; + int a[] = { /* The top and bottom faces */ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + /* The inner side quads */ + 1, 1, 1, 1, + 2, 2, 2, 2, + /* The outer side quads */ + 1, 1, 1, 1, + 1, 2, 2, 1, + 1, 2, 2, 1, + 2, 2, 2, 2 + }; //Gear generation loop + //Two passes necessary to ensure "weighted quad" compatibility + //First pass : Add vertices for (int i = 0; i < nbsides; i++) { - int j = 3 * 12 * i, - k = 3 * 12 * ((i + 1) % nbsides); - - int q[] = { /* The top and bottom faces */ - j, j, j, j, - j, j, j, j, - j, j, k, k, - k, k, j, j, - j, j, j, k, - k, j, j, j, - /* The inner side quads */ - j, j, j, j, - j, k, k, j, - /* The outer side quads */ - j, j, j, j, - j, j, j, j, - j, j, j, j, - k, j, j, k - }; - int m[] = { /* The top and bottom faces */ - 0, 2, 3, 1, - 7, 9, 8, 6, - 1, 3, 2, 0, - 6, 8, 9, 7, - 3, 4, 5, 2, - 8, 11, 10, 9, - /* The inner side quads */ - 0, 1, 7, 6, - 1, 0, 6, 7, - /* The outer side quads */ - 3, 2, 8, 9, - 4, 3, 9, 10, - 5, 4, 10, 11, - 2, 5, 11, 8 - }; - int a[] = { /* The top and bottom faces */ - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - /* The inner side quads */ - 1, 1, 1, 1, - 2, 2, 2, 2, - /* The outer side quads */ - 1, 1, 1, 1, - 1, 2, 2, 1, - 1, 2, 2, 1, - 2, 2, 2, 2 - }; + DEF_J_K_Q; /* Each vertex will share three faces, so three different * normals, therefore we add each vertex three times. */ @@ -2683,9 +2771,16 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, } } if (d >= 6) - SetCurVertColor(BD()->Color2()); + SetCurVertColor(BD()->ColorB()); } + for (int n = 0; n < 12; n++) + p[n] = rotmat * p[n]; + } + //Second pass : Build quad + for (int i = 0; i < nbsides; i++) + { + DEF_J_K_Q; int l = -4; while ((l += 4) < 48) AppendQuad(q[l + 0] + m[l + 0] * 3 + a[l + 0], @@ -2693,9 +2788,6 @@ void EasyMesh::AppendCog(int nbsides, float h, float d10, float d20, q[l + 2] + m[l + 2] * 3 + a[l + 2], q[l + 3] + m[l + 3] * 3 + a[l + 3], vbase); - - for (int n = 0; n < 12; n++) - p[n] = rotmat * p[n]; } ComputeNormals(ibase, m_indices.Count() - ibase); diff --git a/src/easymesh/easymesh.h b/src/easymesh/easymesh.h index 74164f73..6c849273 100644 --- a/src/easymesh/easymesh.h +++ b/src/easymesh/easymesh.h @@ -201,9 +201,11 @@ struct MeshBuildOperation enum Value { //When this flag is up, negative scaling will not invert faces. - ScaleWinding = (1 << 0), - CommandRecording = (1 << 1), - CommandExecution = (1 << 2), + ScaleWinding = (1 << 0), + CommandRecording = (1 << 1), + CommandExecution = (1 << 2), + QuadWeighting = (1 << 3), + IgnoreQuadWeighting = (1 << 4), All = 0xffffffff } @@ -226,8 +228,9 @@ struct EasyMeshCmdType CloseBrace, ScaleWinding, - SetColor, - SetColor2, + QuadWeighting, + SetColorA, + SetColorB, SetVertColor, Translate, @@ -355,8 +358,8 @@ class EasyMeshBuildData public: EasyMeshBuildData() { - m_color = vec4(0.f, 0.f, 0.f, 1.f); - m_color2 = vec4(0.f, 0.f, 0.f, 1.f); + m_color_a = vec4(0.f, 0.f, 0.f, 1.f); + m_color_b = vec4(0.f, 0.f, 0.f, 1.f); m_texcoord_offset = vec2(0.f); m_texcoord_offset2 = vec2(0.f); m_texcoord_scale = vec2(1.f); @@ -372,8 +375,8 @@ public: inline CommandStack &CmdStack() { return m_stack; } inline int &Cmdi() { return m_cmd_i; } inline Array &LoopStack(){ return m_loop_stack; } - inline vec4 &Color() { return m_color; } - inline vec4 &Color2() { return m_color2; } + inline vec4 &ColorA() { return m_color_a; } + inline vec4 &ColorB() { return m_color_b; } inline vec2 &TexCoordOffset() { return m_texcoord_offset; } inline vec2 &TexCoordScale() { return m_texcoord_scale; } inline vec2 &TexCoordOffset2() { return m_texcoord_offset2; } @@ -561,8 +564,8 @@ public: CommandStack m_stack; int m_cmd_i; Array m_loop_stack; - vec4 m_color; - vec4 m_color2; + vec4 m_color_a; + vec4 m_color_b; vec2 m_texcoord_offset; vec2 m_texcoord_offset2; vec2 m_texcoord_scale; @@ -695,12 +698,16 @@ public: void OpenBrace(); /* [cmd:]] Merge current vertices with previous context */ void CloseBrace(); - /* [cmd:tsw] When activated, on negative-scaling, normal-vector correction will not occur */ + /* [cmd:tsw] When active, on negative-scaling, normal-vector correction will not occur */ void ToggleScaleWinding(); - /* [cmd:sc] Set base color */ + /* [cmd:tqw] When active, quad will have a fifth center vertex */ + void ToggleQuadWeighting(); + /* [cmd:sc] Set both color */ void SetCurColor(vec4 const &color); - /* [cmd:scb] Set base color 2 */ - void SetCurColor2(vec4 const &color); + /* [cmd:sca] Set base color A */ + void SetCurColorA(vec4 const &color); + /* [cmd:scb] Set base color B */ + void SetCurColorB(vec4 const &color); /* [cmd:scv] Sets all vertices in this scope color. */ void SetVertColor(vec4 const &color); @@ -711,6 +718,9 @@ private: void AddVertex(vec3 const &coord); void AddDuplicateVertex(int i); void AddLerpVertex(int i, int j, float alpha); + void AddLerpVertex(VertexData &vi, VertexData &vj, float alpha); + VertexData GetLerpVertex(int i, int j, float alpha); + VertexData GetLerpVertex(VertexData &vi,VertexData &vj, float alpha); void AppendQuad(int i1, int i2, int i3, int i4, int base); void AppendQuadDuplicateVerts(int i1, int i2, int i3, int i4, int base); void AppendTriangle(int i1, int i2, int i3, int base); @@ -917,13 +927,13 @@ public: - nbranches : Number of branches. - d1 : double Length of the branches. - d2 : double Length of the "branch" located between d1-branches. - - fade : if (true) in-between branches use Color2. - - fade2 : if (true) Star branches use Color2. + - fade : if (true) in-between branches use ColorB. + - fade2 : if (true) Star branches use ColorB. */ void AppendStar(int nbranches, float d1, float d2, bool fade=false, bool fade2=false); /* [cmd:aes] Star centered on (0,0,0) contained within a disc of "max(max(d1, d2), max(d1 + extrad, d2 + extrad))" diameter. - Expanded star branches use Color2. + Expanded star branches use ColorB. - nbranches : Number of branches. - d1 : Double Length of the branches. - d2 : Double Length of the "branch" located between r1-branches. @@ -933,17 +943,17 @@ public: /* [cmd:ad] Disc centered on (0,0,0) with d diameter. - nbsides : Number of sides. - d : Diameter. - - fade : if (true) Outer vertices will use Color2 + - fade : if (true) Outer vertices will use ColorB */ void AppendDisc(int nsides, float d, bool fade=false); /* [cmd:at] Triangle centered on (0,0,0) contained within a disc of "d" diameter. - d : diameter of the containing disc.. - - fade : if (true) 2nd & 3rd Vertices will use Color2 + - fade : if (true) 2nd & 3rd Vertices will use ColorB */ void AppendSimpleTriangle(float d, bool fade=false); /* [cmd:aq] Quad centered on (0,0,0) contained within BBox [-size*.5f, 0, -size*.5f][size*.5f, 0, size*.5f] - size : Size of quad. - - fade : if (true) 3rd & 4th Vertices will use Color2 + - fade : if (true) 3rd & 4th Vertices will use ColorB */ void AppendSimpleQuad(float size, bool fade=false); private: @@ -961,8 +971,8 @@ public: - sidemul : multiplier for the size of the cogs. - offset : useless */ - void AppendCog(int nbsides, float h, float d10, float d20, float d1, - float d2, float d12, float d22, float sidemul=1.f, bool offset=false); + void AppendCog(int nbsides, float h, float d10, float d20, float d11, + float d21, float d12, float d22, float sidemul=0.f, bool offset=false); //------------------------------------------------------------------------- //TODO : Mesh Bone operations diff --git a/src/generated/easymesh-parser.cpp b/src/generated/easymesh-parser.cpp index 0a83ea93..7d681fb6 100644 --- a/src/generated/easymesh-parser.cpp +++ b/src/generated/easymesh-parser.cpp @@ -69,7 +69,7 @@ /* User implementation prologue. */ /* Line 316 of lalr1.cc */ -#line 78 "easymesh/easymesh-parser.y" +#line 79 "easymesh/easymesh-parser.y" #include "easymesh/easymesh-compiler.h" @@ -440,91 +440,91 @@ namespace lol { case 14: /* Line 677 of lalr1.cc */ -#line 117 "easymesh/easymesh-parser.y" +#line 118 "easymesh/easymesh-parser.y" { mc.m_mesh.LoopEnd(); } break; case 15: /* Line 677 of lalr1.cc */ -#line 121 "easymesh/easymesh-parser.y" +#line 122 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgUnion(); mc.m_mesh.CloseBrace(); } break; case 16: /* Line 677 of lalr1.cc */ -#line 122 "easymesh/easymesh-parser.y" +#line 123 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgSub(); mc.m_mesh.CloseBrace(); } break; case 17: /* Line 677 of lalr1.cc */ -#line 123 "easymesh/easymesh-parser.y" +#line 124 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgSubL(); mc.m_mesh.CloseBrace(); } break; case 18: /* Line 677 of lalr1.cc */ -#line 124 "easymesh/easymesh-parser.y" +#line 125 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgAnd(); mc.m_mesh.CloseBrace(); } break; case 19: /* Line 677 of lalr1.cc */ -#line 125 "easymesh/easymesh-parser.y" +#line 126 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgXor(); mc.m_mesh.CloseBrace(); } break; case 20: /* Line 677 of lalr1.cc */ -#line 129 "easymesh/easymesh-parser.y" +#line 130 "easymesh/easymesh-parser.y" { mc.m_mesh.LoopStart((yysemantic_stack_[(2) - (2)].ival)); } break; case 21: /* Line 677 of lalr1.cc */ -#line 133 "easymesh/easymesh-parser.y" +#line 134 "easymesh/easymesh-parser.y" { mc.m_mesh.DupAndScale(vec3::one, true); } break; case 22: /* Line 677 of lalr1.cc */ -#line 137 "easymesh/easymesh-parser.y" +#line 138 "easymesh/easymesh-parser.y" { mc.m_mesh.OpenBrace(); } break; case 23: /* Line 677 of lalr1.cc */ -#line 141 "easymesh/easymesh-parser.y" +#line 142 "easymesh/easymesh-parser.y" { mc.m_mesh.CloseBrace(); } break; case 24: /* Line 677 of lalr1.cc */ -#line 145 "easymesh/easymesh-parser.y" +#line 146 "easymesh/easymesh-parser.y" { mc.m_mesh.SetCurColor(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } break; case 25: /* Line 677 of lalr1.cc */ -#line 146 "easymesh/easymesh-parser.y" +#line 147 "easymesh/easymesh-parser.y" { mc.m_mesh.SetCurColor(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } break; case 26: /* Line 677 of lalr1.cc */ -#line 147 "easymesh/easymesh-parser.y" +#line 148 "easymesh/easymesh-parser.y" { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val); ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); mc.m_mesh.SetCurColor(vec4(v) * (1.f / 255.f)); } @@ -533,844 +533,916 @@ namespace lol { case 27: /* Line 677 of lalr1.cc */ -#line 150 "easymesh/easymesh-parser.y" - { mc.m_mesh.SetCurColor2(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } +#line 151 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetCurColorA(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } break; case 28: /* Line 677 of lalr1.cc */ -#line 151 "easymesh/easymesh-parser.y" - { mc.m_mesh.SetCurColor2(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } +#line 152 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetCurColorA(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } break; case 29: /* Line 677 of lalr1.cc */ -#line 152 "easymesh/easymesh-parser.y" +#line 153 "easymesh/easymesh-parser.y" { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val); ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); - mc.m_mesh.SetCurColor2(vec4(v) * (1.f / 255.f)); } + mc.m_mesh.SetCurColorA(vec4(v) * (1.f / 255.f)); } break; case 30: /* Line 677 of lalr1.cc */ -#line 155 "easymesh/easymesh-parser.y" - { mc.m_mesh.SetVertColor(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } +#line 156 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetCurColorB(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } break; case 31: /* Line 677 of lalr1.cc */ -#line 156 "easymesh/easymesh-parser.y" - { mc.m_mesh.SetVertColor(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } +#line 157 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetCurColorB(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } break; case 32: /* Line 677 of lalr1.cc */ -#line 157 "easymesh/easymesh-parser.y" +#line 158 "easymesh/easymesh-parser.y" { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val); ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); - mc.m_mesh.SetVertColor(vec4(v) * (1.f / 255.f)); } + mc.m_mesh.SetCurColorB(vec4(v) * (1.f / 255.f)); } break; case 33: /* Line 677 of lalr1.cc */ -#line 163 "easymesh/easymesh-parser.y" - { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].fval), 0.f, 0.f)); } +#line 161 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetVertColor(vec4((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } break; case 34: /* Line 677 of lalr1.cc */ -#line 164 "easymesh/easymesh-parser.y" - { mc.m_mesh.Translate(vec3(0.f, (yysemantic_stack_[(2) - (2)].fval), 0.f)); } +#line 162 "easymesh/easymesh-parser.y" + { mc.m_mesh.SetVertColor(vec4((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2], (yysemantic_stack_[(2) - (2)].vval)[3])); } break; case 35: /* Line 677 of lalr1.cc */ -#line 165 "easymesh/easymesh-parser.y" - { mc.m_mesh.Translate(vec3(0.f, 0.f, (yysemantic_stack_[(2) - (2)].fval))); } +#line 163 "easymesh/easymesh-parser.y" + { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val); + ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); + mc.m_mesh.SetVertColor(vec4(v) * (1.f / 255.f)); } break; case 36: /* Line 677 of lalr1.cc */ -#line 166 "easymesh/easymesh-parser.y" - { mc.m_mesh.Translate(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } +#line 169 "easymesh/easymesh-parser.y" + { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].fval), 0.f, 0.f)); } break; case 37: /* Line 677 of lalr1.cc */ -#line 167 "easymesh/easymesh-parser.y" - { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } +#line 170 "easymesh/easymesh-parser.y" + { mc.m_mesh.Translate(vec3(0.f, (yysemantic_stack_[(2) - (2)].fval), 0.f)); } break; case 38: /* Line 677 of lalr1.cc */ -#line 168 "easymesh/easymesh-parser.y" - { mc.m_mesh.RotateX((yysemantic_stack_[(2) - (2)].fval)); } +#line 171 "easymesh/easymesh-parser.y" + { mc.m_mesh.Translate(vec3(0.f, 0.f, (yysemantic_stack_[(2) - (2)].fval))); } break; case 39: /* Line 677 of lalr1.cc */ -#line 169 "easymesh/easymesh-parser.y" - { mc.m_mesh.RotateY((yysemantic_stack_[(2) - (2)].fval)); } +#line 172 "easymesh/easymesh-parser.y" + { mc.m_mesh.Translate(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } break; case 40: /* Line 677 of lalr1.cc */ -#line 170 "easymesh/easymesh-parser.y" - { mc.m_mesh.RotateZ((yysemantic_stack_[(2) - (2)].fval)); } +#line 173 "easymesh/easymesh-parser.y" + { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } break; case 41: /* Line 677 of lalr1.cc */ -#line 171 "easymesh/easymesh-parser.y" - { mc.m_mesh.Rotate((yysemantic_stack_[(5) - (2)].fval), vec3((yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } +#line 174 "easymesh/easymesh-parser.y" + { mc.m_mesh.RotateX((yysemantic_stack_[(2) - (2)].fval)); } break; case 42: /* Line 677 of lalr1.cc */ -#line 172 "easymesh/easymesh-parser.y" - { mc.m_mesh.Rotate((yysemantic_stack_[(3) - (2)].fval), vec3((yysemantic_stack_[(3) - (3)].vval)[0], (yysemantic_stack_[(3) - (3)].vval)[1], (yysemantic_stack_[(3) - (3)].vval)[2])); } +#line 175 "easymesh/easymesh-parser.y" + { mc.m_mesh.RotateY((yysemantic_stack_[(2) - (2)].fval)); } break; case 43: /* Line 677 of lalr1.cc */ -#line 173 "easymesh/easymesh-parser.y" - { mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].fval)); } +#line 176 "easymesh/easymesh-parser.y" + { mc.m_mesh.RotateZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 44: /* Line 677 of lalr1.cc */ -#line 174 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperX((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 177 "easymesh/easymesh-parser.y" + { mc.m_mesh.Rotate((yysemantic_stack_[(5) - (2)].fval), vec3((yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval))); } break; case 45: /* Line 677 of lalr1.cc */ -#line 175 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 178 "easymesh/easymesh-parser.y" + { mc.m_mesh.Rotate((yysemantic_stack_[(3) - (2)].fval), vec3((yysemantic_stack_[(3) - (3)].vval)[0], (yysemantic_stack_[(3) - (3)].vval)[1], (yysemantic_stack_[(3) - (3)].vval)[2])); } break; case 46: /* Line 677 of lalr1.cc */ -#line 176 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 179 "easymesh/easymesh-parser.y" + { mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].fval)); } break; case 47: /* Line 677 of lalr1.cc */ -#line 177 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperY((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 180 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperX((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 48: /* Line 677 of lalr1.cc */ -#line 178 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 181 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 49: /* Line 677 of lalr1.cc */ -#line 179 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 182 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 50: /* Line 677 of lalr1.cc */ -#line 180 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperZ((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 183 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperY((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 51: /* Line 677 of lalr1.cc */ -#line 181 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 184 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 52: /* Line 677 of lalr1.cc */ -#line 182 "easymesh/easymesh-parser.y" - { mc.m_mesh.TaperZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 185 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 53: /* Line 677 of lalr1.cc */ -#line 183 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 186 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperZ((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 54: /* Line 677 of lalr1.cc */ -#line 184 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistX((yysemantic_stack_[(2) - (2)].fval)); } +#line 187 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 55: /* Line 677 of lalr1.cc */ -#line 185 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 188 "easymesh/easymesh-parser.y" + { mc.m_mesh.TaperZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 56: /* Line 677 of lalr1.cc */ -#line 186 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistY((yysemantic_stack_[(2) - (2)].fval)); } +#line 189 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 57: /* Line 677 of lalr1.cc */ -#line 187 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 190 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistX((yysemantic_stack_[(2) - (2)].fval)); } break; case 58: /* Line 677 of lalr1.cc */ -#line 188 "easymesh/easymesh-parser.y" - { mc.m_mesh.TwistZ((yysemantic_stack_[(2) - (2)].fval)); } +#line 191 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 59: /* Line 677 of lalr1.cc */ -#line 189 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearX((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 192 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistY((yysemantic_stack_[(2) - (2)].fval)); } break; case 60: /* Line 677 of lalr1.cc */ -#line 190 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 193 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 61: /* Line 677 of lalr1.cc */ -#line 191 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 194 "easymesh/easymesh-parser.y" + { mc.m_mesh.TwistZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 62: /* Line 677 of lalr1.cc */ -#line 192 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearY((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 195 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearX((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 63: /* Line 677 of lalr1.cc */ -#line 193 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 196 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 64: /* Line 677 of lalr1.cc */ -#line 194 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 197 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 65: /* Line 677 of lalr1.cc */ -#line 195 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearZ((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 198 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearY((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 66: /* Line 677 of lalr1.cc */ -#line 196 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 199 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 67: /* Line 677 of lalr1.cc */ -#line 197 "easymesh/easymesh-parser.y" - { mc.m_mesh.ShearZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 200 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 68: /* Line 677 of lalr1.cc */ -#line 198 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 201 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearZ((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 69: /* Line 677 of lalr1.cc */ -#line 199 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 202 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 70: /* Line 677 of lalr1.cc */ -#line 200 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 203 "easymesh/easymesh-parser.y" + { mc.m_mesh.ShearZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 71: /* Line 677 of lalr1.cc */ -#line 201 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 204 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchX((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 72: /* Line 677 of lalr1.cc */ -#line 202 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 205 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 73: /* Line 677 of lalr1.cc */ -#line 203 "easymesh/easymesh-parser.y" - { mc.m_mesh.StretchZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 206 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchY((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 74: /* Line 677 of lalr1.cc */ -#line 204 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendXY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 207 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 75: /* Line 677 of lalr1.cc */ -#line 205 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendXY((yysemantic_stack_[(2) - (2)].fval)); } +#line 208 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchZ((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 76: /* Line 677 of lalr1.cc */ -#line 206 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendXZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 209 "easymesh/easymesh-parser.y" + { mc.m_mesh.StretchZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 77: /* Line 677 of lalr1.cc */ -#line 207 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendXZ((yysemantic_stack_[(2) - (2)].fval)); } +#line 210 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendXY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 78: /* Line 677 of lalr1.cc */ -#line 208 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendYX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 211 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendXY((yysemantic_stack_[(2) - (2)].fval)); } break; case 79: /* Line 677 of lalr1.cc */ -#line 209 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendYX((yysemantic_stack_[(2) - (2)].fval)); } +#line 212 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendXZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 80: /* Line 677 of lalr1.cc */ -#line 210 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendYZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 213 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendXZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 81: /* Line 677 of lalr1.cc */ -#line 211 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendYZ((yysemantic_stack_[(2) - (2)].fval)); } +#line 214 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendYX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 82: /* Line 677 of lalr1.cc */ -#line 212 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendZX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 215 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendYX((yysemantic_stack_[(2) - (2)].fval)); } break; case 83: /* Line 677 of lalr1.cc */ -#line 213 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendZX((yysemantic_stack_[(2) - (2)].fval)); } +#line 216 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendYZ((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 84: /* Line 677 of lalr1.cc */ -#line 214 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendZY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } +#line 217 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendYZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 85: /* Line 677 of lalr1.cc */ -#line 215 "easymesh/easymesh-parser.y" - { mc.m_mesh.BendZY((yysemantic_stack_[(2) - (2)].fval)); } +#line 218 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendZX((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 86: /* Line 677 of lalr1.cc */ -#line 216 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].fval), 1.f, 1.f)); } +#line 219 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendZX((yysemantic_stack_[(2) - (2)].fval)); } break; case 87: /* Line 677 of lalr1.cc */ -#line 217 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3(1.f, (yysemantic_stack_[(2) - (2)].fval), 1.f)); } +#line 220 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendZY((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].fval)); } break; case 88: /* Line 677 of lalr1.cc */ -#line 218 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3(1.f, 1.f, (yysemantic_stack_[(2) - (2)].fval))); } +#line 221 "easymesh/easymesh-parser.y" + { mc.m_mesh.BendZY((yysemantic_stack_[(2) - (2)].fval)); } break; case 89: /* Line 677 of lalr1.cc */ -#line 219 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } +#line 222 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].fval), 1.f, 1.f)); } break; case 90: /* Line 677 of lalr1.cc */ -#line 220 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } +#line 223 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3(1.f, (yysemantic_stack_[(2) - (2)].fval), 1.f)); } break; case 91: /* Line 677 of lalr1.cc */ -#line 221 "easymesh/easymesh-parser.y" - { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval))); } +#line 224 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3(1.f, 1.f, (yysemantic_stack_[(2) - (2)].fval))); } break; case 92: /* Line 677 of lalr1.cc */ -#line 222 "easymesh/easymesh-parser.y" - { mc.m_mesh.MirrorX(); } +#line 225 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } break; case 93: /* Line 677 of lalr1.cc */ -#line 223 "easymesh/easymesh-parser.y" - { mc.m_mesh.MirrorY(); } +#line 226 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } break; case 94: /* Line 677 of lalr1.cc */ -#line 224 "easymesh/easymesh-parser.y" - { mc.m_mesh.MirrorZ(); } +#line 227 "easymesh/easymesh-parser.y" + { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval))); } break; case 95: /* Line 677 of lalr1.cc */ -#line 225 "easymesh/easymesh-parser.y" - { mc.m_mesh.Chamfer((yysemantic_stack_[(2) - (2)].fval)); } +#line 228 "easymesh/easymesh-parser.y" + { mc.m_mesh.MirrorX(); } break; case 96: /* Line 677 of lalr1.cc */ -#line 226 "easymesh/easymesh-parser.y" - { mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].ival)); } +#line 229 "easymesh/easymesh-parser.y" + { mc.m_mesh.MirrorY(); } break; case 97: /* Line 677 of lalr1.cc */ -#line 227 "easymesh/easymesh-parser.y" - { mc.m_mesh.SmoothMesh((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].ival), (yysemantic_stack_[(4) - (4)].ival)); } +#line 230 "easymesh/easymesh-parser.y" + { mc.m_mesh.MirrorZ(); } break; case 98: /* Line 677 of lalr1.cc */ -#line 228 "easymesh/easymesh-parser.y" - { mc.m_mesh.ToggleScaleWinding(); } +#line 231 "easymesh/easymesh-parser.y" + { mc.m_mesh.Chamfer((yysemantic_stack_[(2) - (2)].fval)); } break; case 99: /* Line 677 of lalr1.cc */ #line 232 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCylinder((yysemantic_stack_[(8) - (2)].ival), (yysemantic_stack_[(8) - (3)].fval), (yysemantic_stack_[(8) - (4)].fval), (yysemantic_stack_[(8) - (5)].fval), (yysemantic_stack_[(8) - (6)].bval), (yysemantic_stack_[(8) - (7)].bval), (yysemantic_stack_[(8) - (8)].bval)); } + { mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].ival)); } break; case 100: /* Line 677 of lalr1.cc */ #line 233 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCylinder((yysemantic_stack_[(7) - (2)].ival), (yysemantic_stack_[(7) - (3)].fval), (yysemantic_stack_[(7) - (4)].fval), (yysemantic_stack_[(7) - (5)].fval), (yysemantic_stack_[(7) - (6)].bval), (yysemantic_stack_[(7) - (7)].bval)); } + { mc.m_mesh.SmoothMesh((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].ival), (yysemantic_stack_[(4) - (4)].ival)); } break; case 101: /* Line 677 of lalr1.cc */ #line 234 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCylinder((yysemantic_stack_[(6) - (2)].ival), (yysemantic_stack_[(6) - (3)].fval), (yysemantic_stack_[(6) - (4)].fval), (yysemantic_stack_[(6) - (5)].fval), (yysemantic_stack_[(6) - (6)].bval)); } + { mc.m_mesh.ToggleScaleWinding(); } break; case 102: /* Line 677 of lalr1.cc */ #line 235 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCylinder((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval)); } + { mc.m_mesh.ToggleQuadWeighting(); } break; case 103: /* Line 677 of lalr1.cc */ -#line 236 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSphere((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } +#line 239 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCylinder((yysemantic_stack_[(8) - (2)].ival), (yysemantic_stack_[(8) - (3)].fval), (yysemantic_stack_[(8) - (4)].fval), (yysemantic_stack_[(8) - (5)].fval), (yysemantic_stack_[(8) - (6)].bval), (yysemantic_stack_[(8) - (7)].bval), (yysemantic_stack_[(8) - (8)].bval)); } break; case 104: /* Line 677 of lalr1.cc */ -#line 237 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCapsule((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 240 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCylinder((yysemantic_stack_[(7) - (2)].ival), (yysemantic_stack_[(7) - (3)].fval), (yysemantic_stack_[(7) - (4)].fval), (yysemantic_stack_[(7) - (5)].fval), (yysemantic_stack_[(7) - (6)].bval), (yysemantic_stack_[(7) - (7)].bval)); } break; case 105: /* Line 677 of lalr1.cc */ -#line 238 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendTorus((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 241 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCylinder((yysemantic_stack_[(6) - (2)].ival), (yysemantic_stack_[(6) - (3)].fval), (yysemantic_stack_[(6) - (4)].fval), (yysemantic_stack_[(6) - (5)].fval), (yysemantic_stack_[(6) - (6)].bval)); } break; case 106: /* Line 677 of lalr1.cc */ -#line 239 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } +#line 242 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCylinder((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval)); } break; case 107: /* Line 677 of lalr1.cc */ -#line 240 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } +#line 243 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCylinder((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 108: /* Line 677 of lalr1.cc */ -#line 241 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval))); } +#line 244 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSphere((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } break; case 109: /* Line 677 of lalr1.cc */ -#line 242 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } +#line 245 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCapsule((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 110: /* Line 677 of lalr1.cc */ -#line 243 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } +#line 246 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendTorus((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 111: /* Line 677 of lalr1.cc */ -#line 244 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } +#line 247 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } break; case 112: /* Line 677 of lalr1.cc */ -#line 245 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval)), (yysemantic_stack_[(3) - (3)].fval)); } +#line 248 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(4) - (2)].fval), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval))); } break; case 113: /* Line 677 of lalr1.cc */ -#line 246 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } +#line 249 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval), (yysemantic_stack_[(2) - (2)].fval))); } break; case 114: /* Line 677 of lalr1.cc */ -#line 247 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } +#line 250 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } break; case 115: /* Line 677 of lalr1.cc */ -#line 248 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval)), (yysemantic_stack_[(3) - (3)].fval)); } +#line 251 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].vval)[0], (yysemantic_stack_[(2) - (2)].vval)[1], (yysemantic_stack_[(2) - (2)].vval)[2])); } break; case 116: /* Line 677 of lalr1.cc */ -#line 249 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } +#line 252 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } break; case 117: /* Line 677 of lalr1.cc */ -#line 250 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendStar((yysemantic_stack_[(6) - (2)].ival), (yysemantic_stack_[(6) - (3)].fval), (yysemantic_stack_[(6) - (4)].fval), (yysemantic_stack_[(6) - (5)].bval), (yysemantic_stack_[(6) - (6)].bval)); } +#line 253 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval)), (yysemantic_stack_[(3) - (3)].fval)); } break; case 118: /* Line 677 of lalr1.cc */ -#line 251 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendStar((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } +#line 254 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } break; case 119: /* Line 677 of lalr1.cc */ -#line 252 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendStar((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 255 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(5) - (2)].fval), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval)), (yysemantic_stack_[(5) - (5)].fval)); } break; case 120: /* Line 677 of lalr1.cc */ -#line 253 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendExpandedStar((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval)); } +#line 256 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (2)].fval)), (yysemantic_stack_[(3) - (3)].fval)); } break; case 121: /* Line 677 of lalr1.cc */ -#line 254 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendExpandedStar((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } +#line 257 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(3) - (2)].vval)[0], (yysemantic_stack_[(3) - (2)].vval)[1], (yysemantic_stack_[(3) - (2)].vval)[2]), (yysemantic_stack_[(3) - (3)].fval)); } break; case 122: /* Line 677 of lalr1.cc */ -#line 255 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendDisc((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].bval)); } +#line 258 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendStar((yysemantic_stack_[(6) - (2)].ival), (yysemantic_stack_[(6) - (3)].fval), (yysemantic_stack_[(6) - (4)].fval), (yysemantic_stack_[(6) - (5)].bval), (yysemantic_stack_[(6) - (6)].bval)); } break; case 123: /* Line 677 of lalr1.cc */ -#line 256 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendDisc((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } +#line 259 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendStar((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].bval)); } break; case 124: /* Line 677 of lalr1.cc */ -#line 257 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } +#line 260 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendStar((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 125: /* Line 677 of lalr1.cc */ -#line 258 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].fval)); } +#line 261 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendExpandedStar((yysemantic_stack_[(5) - (2)].ival), (yysemantic_stack_[(5) - (3)].fval), (yysemantic_stack_[(5) - (4)].fval), (yysemantic_stack_[(5) - (5)].fval)); } break; case 126: /* Line 677 of lalr1.cc */ -#line 259 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } +#line 262 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendExpandedStar((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].fval)); } break; case 127: /* Line 677 of lalr1.cc */ -#line 260 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].fval)); } +#line 263 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendDisc((yysemantic_stack_[(4) - (2)].ival), (yysemantic_stack_[(4) - (3)].fval), (yysemantic_stack_[(4) - (4)].bval)); } break; case 128: /* Line 677 of lalr1.cc */ -#line 261 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCog((yysemantic_stack_[(11) - (2)].ival), (yysemantic_stack_[(11) - (3)].fval), (yysemantic_stack_[(11) - (4)].fval), (yysemantic_stack_[(11) - (5)].fval), (yysemantic_stack_[(11) - (6)].fval), (yysemantic_stack_[(11) - (7)].fval), (yysemantic_stack_[(11) - (8)].fval), (yysemantic_stack_[(11) - (9)].fval), (yysemantic_stack_[(11) - (10)].fval), (yysemantic_stack_[(11) - (11)].bval)); } +#line 264 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendDisc((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } break; case 129: /* Line 677 of lalr1.cc */ -#line 262 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCog((yysemantic_stack_[(10) - (2)].ival), (yysemantic_stack_[(10) - (3)].fval), (yysemantic_stack_[(10) - (4)].fval), (yysemantic_stack_[(10) - (5)].fval), (yysemantic_stack_[(10) - (6)].fval), (yysemantic_stack_[(10) - (7)].fval), (yysemantic_stack_[(10) - (8)].fval), (yysemantic_stack_[(10) - (9)].fval), (yysemantic_stack_[(10) - (10)].fval)); } +#line 265 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } break; case 130: /* Line 677 of lalr1.cc */ -#line 263 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendCog((yysemantic_stack_[(9) - (2)].ival), (yysemantic_stack_[(9) - (3)].fval), (yysemantic_stack_[(9) - (4)].fval), (yysemantic_stack_[(9) - (5)].fval), (yysemantic_stack_[(9) - (6)].fval), (yysemantic_stack_[(9) - (7)].fval), (yysemantic_stack_[(9) - (8)].fval), (yysemantic_stack_[(9) - (9)].fval)); } +#line 266 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].fval)); } break; case 131: /* Line 677 of lalr1.cc */ -#line 268 "easymesh/easymesh-parser.y" - { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); } +#line 267 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } break; case 132: /* Line 677 of lalr1.cc */ -#line 269 "easymesh/easymesh-parser.y" - { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); } +#line 268 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].fval)); } break; case 133: /* Line 677 of lalr1.cc */ -#line 270 "easymesh/easymesh-parser.y" - { (yyval.fval) = (float)(yysemantic_stack_[(1) - (1)].ival); } +#line 269 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(11) - (2)].ival), (yysemantic_stack_[(11) - (3)].fval), (yysemantic_stack_[(11) - (4)].fval), (yysemantic_stack_[(11) - (5)].fval), (yysemantic_stack_[(11) - (6)].fval), (yysemantic_stack_[(11) - (7)].fval), (yysemantic_stack_[(11) - (8)].fval), (yysemantic_stack_[(11) - (9)].fval), (yysemantic_stack_[(11) - (10)].fval), (yysemantic_stack_[(11) - (11)].bval)); } break; case 134: /* Line 677 of lalr1.cc */ -#line 271 "easymesh/easymesh-parser.y" - { (yyval.fval) = -(float)(yysemantic_stack_[(2) - (2)].ival); } +#line 270 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(10) - (2)].ival), (yysemantic_stack_[(10) - (3)].fval), (yysemantic_stack_[(10) - (4)].fval), (yysemantic_stack_[(10) - (5)].fval), (yysemantic_stack_[(10) - (6)].fval), (yysemantic_stack_[(10) - (7)].fval), (yysemantic_stack_[(10) - (8)].fval), (yysemantic_stack_[(10) - (9)].fval), (yysemantic_stack_[(10) - (10)].fval)); } break; case 135: /* Line 677 of lalr1.cc */ -#line 275 "easymesh/easymesh-parser.y" - { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); } +#line 271 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(9) - (2)].ival), (yysemantic_stack_[(9) - (3)].fval), (yysemantic_stack_[(9) - (4)].fval), (yysemantic_stack_[(9) - (5)].fval), (yysemantic_stack_[(9) - (6)].fval), (yysemantic_stack_[(9) - (7)].fval), (yysemantic_stack_[(9) - (8)].fval), (yysemantic_stack_[(9) - (9)].fval)); } break; case 136: /* Line 677 of lalr1.cc */ -#line 276 "easymesh/easymesh-parser.y" - { (yyval.ival) = -(yysemantic_stack_[(2) - (2)].ival); } +#line 272 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(8) - (2)].ival), (yysemantic_stack_[(8) - (3)].fval), (yysemantic_stack_[(8) - (4)].vval)[0], (yysemantic_stack_[(8) - (4)].vval)[1], (yysemantic_stack_[(8) - (5)].vval)[0], (yysemantic_stack_[(8) - (5)].vval)[1], (yysemantic_stack_[(8) - (6)].vval)[0], (yysemantic_stack_[(8) - (6)].vval)[1], (yysemantic_stack_[(8) - (7)].fval), (yysemantic_stack_[(8) - (8)].bval)); } break; case 137: /* Line 677 of lalr1.cc */ -#line 277 "easymesh/easymesh-parser.y" - { (yyval.ival) = (int)(yysemantic_stack_[(1) - (1)].fval); } +#line 273 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(7) - (2)].ival), (yysemantic_stack_[(7) - (3)].fval), (yysemantic_stack_[(7) - (4)].vval)[0], (yysemantic_stack_[(7) - (4)].vval)[1], (yysemantic_stack_[(7) - (5)].vval)[0], (yysemantic_stack_[(7) - (5)].vval)[1], (yysemantic_stack_[(7) - (6)].vval)[0], (yysemantic_stack_[(7) - (6)].vval)[1], (yysemantic_stack_[(7) - (7)].fval)); } break; case 138: /* Line 677 of lalr1.cc */ -#line 278 "easymesh/easymesh-parser.y" - { (yyval.ival) = -(int)(yysemantic_stack_[(2) - (2)].fval); } +#line 274 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendCog((yysemantic_stack_[(6) - (2)].ival), (yysemantic_stack_[(6) - (3)].fval), (yysemantic_stack_[(6) - (4)].vval)[0], (yysemantic_stack_[(6) - (4)].vval)[1], (yysemantic_stack_[(6) - (5)].vval)[0], (yysemantic_stack_[(6) - (5)].vval)[1], (yysemantic_stack_[(6) - (6)].vval)[0], (yysemantic_stack_[(6) - (6)].vval)[1]); } break; case 139: /* Line 677 of lalr1.cc */ -#line 283 "easymesh/easymesh-parser.y" - { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[2] = (yysemantic_stack_[(3) - (2)].fval); } +#line 279 "easymesh/easymesh-parser.y" + { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); } break; case 140: /* Line 677 of lalr1.cc */ -#line 284 "easymesh/easymesh-parser.y" - { (yyval.vval)[0] = (yysemantic_stack_[(5) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(5) - (3)].fval); (yyval.vval)[2] = (yysemantic_stack_[(5) - (4)].fval); } +#line 280 "easymesh/easymesh-parser.y" + { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); } break; case 141: /* Line 677 of lalr1.cc */ -#line 288 "easymesh/easymesh-parser.y" - { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[2] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[3] = (yysemantic_stack_[(3) - (2)].fval); } +#line 281 "easymesh/easymesh-parser.y" + { (yyval.fval) = (float)(yysemantic_stack_[(1) - (1)].ival); } break; case 142: /* Line 677 of lalr1.cc */ -#line 289 "easymesh/easymesh-parser.y" - { (yyval.vval)[0] = (yysemantic_stack_[(6) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(6) - (3)].fval); (yyval.vval)[2] = (yysemantic_stack_[(6) - (4)].fval); (yyval.vval)[3] = (yysemantic_stack_[(6) - (5)].fval); } +#line 282 "easymesh/easymesh-parser.y" + { (yyval.fval) = -(float)(yysemantic_stack_[(2) - (2)].ival); } break; case 143: /* Line 677 of lalr1.cc */ -#line 294 "easymesh/easymesh-parser.y" - { (yyval.bval) = (yysemantic_stack_[(1) - (1)].bval); } +#line 286 "easymesh/easymesh-parser.y" + { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); } break; case 144: +/* Line 677 of lalr1.cc */ +#line 287 "easymesh/easymesh-parser.y" + { (yyval.ival) = -(yysemantic_stack_[(2) - (2)].ival); } + break; + + case 145: + +/* Line 677 of lalr1.cc */ +#line 288 "easymesh/easymesh-parser.y" + { (yyval.ival) = (int)(yysemantic_stack_[(1) - (1)].fval); } + break; + + case 146: + +/* Line 677 of lalr1.cc */ +#line 289 "easymesh/easymesh-parser.y" + { (yyval.ival) = -(int)(yysemantic_stack_[(2) - (2)].fval); } + break; + + case 147: + +/* Line 677 of lalr1.cc */ +#line 294 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(3) - (2)].fval); } + break; + + case 148: + /* Line 677 of lalr1.cc */ #line 295 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(4) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(4) - (3)].fval); } + break; + + case 149: + +/* Line 677 of lalr1.cc */ +#line 299 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[2] = (yysemantic_stack_[(3) - (2)].fval); } + break; + + case 150: + +/* Line 677 of lalr1.cc */ +#line 300 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(5) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(5) - (3)].fval); (yyval.vval)[2] = (yysemantic_stack_[(5) - (4)].fval); } + break; + + case 151: + +/* Line 677 of lalr1.cc */ +#line 304 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[2] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[3] = (yysemantic_stack_[(3) - (2)].fval); } + break; + + case 152: + +/* Line 677 of lalr1.cc */ +#line 305 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(6) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(6) - (3)].fval); (yyval.vval)[2] = (yysemantic_stack_[(6) - (4)].fval); (yyval.vval)[3] = (yysemantic_stack_[(6) - (5)].fval); } + break; + + case 153: + +/* Line 677 of lalr1.cc */ +#line 310 "easymesh/easymesh-parser.y" + { (yyval.bval) = (yysemantic_stack_[(1) - (1)].bval); } + break; + + case 154: + +/* Line 677 of lalr1.cc */ +#line 311 "easymesh/easymesh-parser.y" { (yyval.bval) = !!(yysemantic_stack_[(1) - (1)].ival); } break; - case 145: + case 155: /* Line 677 of lalr1.cc */ -#line 296 "easymesh/easymesh-parser.y" +#line 312 "easymesh/easymesh-parser.y" { (yyval.bval) = !!(yysemantic_stack_[(1) - (1)].fval); } break; /* Line 677 of lalr1.cc */ -#line 1374 "generated/easymesh-parser.cpp" +#line 1446 "generated/easymesh-parser.cpp" default: break; } @@ -1575,40 +1647,41 @@ namespace lol { /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ - const short int EasyMeshParser::yypact_ninf_ = -153; + const short int EasyMeshParser::yypact_ninf_ = -253; const short int EasyMeshParser::yypact_[] = { - 426, 104, -5, 5, 86, 125, 125, 125, 125, 125, - 125, 125, 125, 125, -153, 125, 125, 125, 125, 125, - 125, 125, 125, 125, -153, 125, 125, 125, 125, 125, - 125, 125, 125, 125, -153, 78, 125, 78, -153, 125, - 104, 104, -153, -58, -58, -58, -58, -58, 125, 104, - 78, 78, 78, 104, 104, 104, 104, 104, 125, 125, - 104, 104, -153, 21, 35, 426, -153, 493, -153, -38, - -32, 426, -153, -153, -153, -153, -153, 127, -153, -153, - -153, -153, 127, 125, 125, -153, -153, 125, -153, -153, - 125, -153, -153, -153, 125, 125, 125, 125, 125, 125, - -153, -153, -153, 125, 125, 125, 125, 125, 125, -153, - -153, -153, 125, 125, 125, 125, 125, 125, -153, 125, - 125, -153, 78, 125, -153, -153, -153, 104, 426, 426, - 426, 426, 426, -153, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, -25, -25, 125, 125, - -153, -153, -153, -153, 426, 426, -20, -153, -153, 127, - -153, -153, -153, -153, -27, 125, 125, 125, 125, -153, - 125, 125, -153, -153, 125, -153, 125, 125, -153, -153, - 125, -153, 125, 125, -153, -153, -14, 125, 125, -153, - 125, 104, -8, -2, -1, 2, 8, 125, 125, -153, - 125, -153, 125, -153, -153, 125, 125, 125, -25, -153, - -153, -153, -153, -153, 125, 125, 12, -20, -153, -153, - -153, -153, -153, 125, 125, 125, 125, -25, -25, -153, - -25, -25, -153, -25, -25, -153, -153, 125, -153, 125, - -153, -153, -153, -153, -153, -153, -153, 125, 125, 125, - 125, -153, -25, 125, -153, 125, -153, -153, -153, 125, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -30, - -153, -25, -153, -153, -153, -25, -153, 125, 10, -153, - -25, -153, 125, -153, -25, 125, -153, 125, 125, -25, - -153 + 408, 87, 17, 89, 108, 146, 129, 129, 129, 129, + 129, 129, 129, 129, 129, -253, 129, 129, 129, 129, + 129, 129, 129, 129, 129, -253, 129, 129, 129, 129, + 129, 129, 129, 129, 129, -253, 164, 129, 164, -253, + -253, 129, 87, 87, -253, -49, -49, -49, -49, -49, + 129, 87, 164, 164, 164, 87, 87, 87, 87, 87, + 129, 129, 87, 87, -253, 32, 36, 408, -253, 477, + -253, -32, -26, 408, -253, -253, -253, -253, -253, 131, + -253, -253, -253, -253, 131, 129, 129, -253, -253, 129, + -253, -253, 129, -253, -253, 129, -253, -253, -253, 129, + 129, 129, 129, 129, 129, -253, -253, -253, 129, 129, + 129, 129, 129, 129, -253, -253, -253, 129, 129, 129, + 129, 129, 129, -253, 129, 129, -253, 164, 129, -253, + -253, -253, 87, 408, 408, 408, 408, 408, -253, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, -25, -25, 129, 129, -253, -253, -253, -253, 408, + 408, -10, -253, -253, 131, -253, -253, -253, -253, -27, + 129, 129, 129, 129, 129, -253, 129, 129, -253, -253, + 129, -253, 129, 129, -253, -253, 129, -253, 129, 129, + -253, -253, -12, 129, 129, -253, 129, 87, -8, -5, + -4, -2, 6, 129, 129, -253, 129, -253, 129, -253, + -253, 129, 129, 129, -25, -253, -253, -253, -253, -253, + 166, 129, 8, -10, -253, -253, -253, -253, -253, 129, + 129, 129, 129, 129, -25, -25, -253, -25, -25, -253, + -25, -25, -253, -253, 129, -253, 129, -253, -253, -253, + -253, -253, -253, -253, 129, 129, 129, 129, -253, -25, + 129, -253, 129, 129, -9, -253, -253, -253, 129, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -6, + -253, -25, -253, -253, -253, -25, -253, 4, 129, -9, + 13, -253, -25, -253, -253, 18, 129, 129, -253, -25, + -253, 129, -25, -253, 129, -253, 129, -25, -253 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -1618,51 +1691,52 @@ namespace lol { EasyMeshParser::yydefact_[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 0, 0, 0, 98, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 97, 0, 0, 0, 101, + 102, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 3, 5, 7, 12, 0, - 0, 0, 9, 10, 11, 137, 135, 0, 20, 131, - 133, 26, 0, 0, 0, 25, 29, 0, 28, 32, - 0, 31, 33, 38, 0, 54, 0, 0, 75, 77, - 86, 34, 39, 0, 56, 0, 0, 79, 81, 87, - 35, 40, 0, 58, 0, 0, 83, 85, 88, 0, - 0, 37, 0, 91, 90, 43, 96, 0, 0, 0, - 0, 0, 0, 95, 0, 108, 110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 125, 127, 0, 0, - 1, 2, 4, 8, 0, 0, 0, 131, 133, 0, - 138, 136, 132, 134, 0, 0, 0, 0, 46, 53, - 61, 69, 74, 76, 49, 55, 64, 71, 78, 80, - 52, 57, 67, 73, 82, 84, 0, 0, 0, 42, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, - 112, 113, 115, 116, 103, 0, 0, 0, 123, 145, - 144, 143, 124, 126, 0, 0, 0, 0, 23, 6, - 132, 134, 141, 0, 0, 0, 0, 45, 60, 68, - 48, 63, 70, 51, 66, 72, 139, 0, 36, 0, - 89, 97, 15, 16, 17, 18, 19, 0, 107, 0, - 0, 104, 119, 121, 122, 0, 105, 14, 13, 0, - 24, 27, 30, 44, 59, 47, 62, 50, 65, 0, - 41, 102, 106, 111, 114, 118, 120, 0, 0, 140, - 101, 117, 0, 142, 100, 0, 99, 0, 130, 129, - 128 + 0, 0, 0, 0, 22, 0, 0, 3, 5, 7, + 12, 0, 0, 0, 9, 10, 11, 145, 143, 0, + 20, 139, 141, 26, 0, 0, 0, 25, 29, 0, + 28, 32, 0, 31, 35, 0, 34, 36, 41, 0, + 57, 0, 0, 78, 80, 89, 37, 42, 0, 59, + 0, 0, 82, 84, 90, 38, 43, 0, 61, 0, + 0, 86, 88, 91, 0, 0, 40, 0, 94, 93, + 46, 99, 0, 0, 0, 0, 0, 0, 98, 0, + 113, 115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 132, 0, 0, 1, 2, 4, 8, 0, + 0, 0, 139, 141, 0, 146, 144, 140, 142, 0, + 0, 0, 0, 0, 49, 56, 64, 72, 77, 79, + 52, 58, 67, 74, 81, 83, 55, 60, 70, 76, + 85, 87, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, 117, 118, 120, 121, + 108, 0, 0, 0, 128, 155, 154, 153, 129, 131, + 0, 0, 0, 0, 23, 6, 140, 142, 151, 0, + 0, 0, 0, 0, 48, 63, 71, 51, 66, 73, + 54, 69, 75, 149, 0, 39, 0, 92, 100, 15, + 16, 17, 18, 19, 107, 112, 0, 0, 109, 124, + 126, 127, 0, 0, 0, 110, 14, 13, 0, 24, + 27, 30, 33, 47, 62, 50, 65, 53, 68, 0, + 44, 106, 111, 116, 119, 123, 125, 0, 0, 0, + 0, 150, 105, 122, 147, 0, 0, 138, 152, 104, + 148, 0, 137, 103, 0, 136, 135, 134, 133 }; /* YYPGOTO[NTERM-NUM]. */ const short int EasyMeshParser::yypgoto_[] = { - -153, -153, -7, -153, 18, -153, -153, -153, -153, 83, - -152, -153, -153, -153, -3, 237, 38, 50, 31 + -253, -253, -7, -253, 25, -253, -253, -253, -253, 86, + -128, -253, -253, -253, -3, 213, -252, 21, 49, 72 }; /* YYDEFGOTO[NTERM-NUM]. */ const short int EasyMeshParser::yydefgoto_[] = { - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 219, 72, 73, 74, 84, 78, 121, 85, 212 + -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 225, 74, 75, 76, 86, 80, 264, 126, 87, 218 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1672,62 +1746,61 @@ namespace lol { const unsigned short int EasyMeshParser::yytable_[] = { - 87, 90, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 62, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 150, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 154, 120, 122, 123, 151, 125, 155, 79, 80, - 209, 210, 211, 279, 82, 133, 222, 135, 137, 139, - 218, 79, 80, 88, 91, 146, 147, 82, 152, 236, - 79, 80, 242, 81, 156, 258, 82, 83, 243, 244, - 79, 80, 245, 86, 160, 124, 82, 83, 246, 162, - 164, 165, 257, 283, 166, 153, 0, 167, 136, 138, - 140, 168, 169, 170, 171, 172, 173, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 0, 0, 0, 180, - 181, 182, 183, 184, 185, 0, 186, 187, 0, 188, - 190, 192, 193, 194, 195, 196, 128, 129, 130, 131, - 132, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 79, 80, 214, 215, 216, 217, 82, - 119, 79, 80, 0, 89, 0, 220, 82, 83, 0, - 189, 223, 224, 225, 226, 227, 0, 228, 229, 75, - 76, 230, 0, 231, 232, 77, 0, 233, 213, 234, - 235, 0, 0, 237, 238, 239, 0, 240, 0, 0, - 79, 80, 157, 158, 247, 248, 82, 249, 159, 250, - 0, 0, 251, 252, 253, 0, 0, 0, 0, 0, - 0, 255, 256, 0, 0, 0, 0, 0, 0, 0, - 259, 260, 261, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 269, 0, 270, 0, 0, 254, - 0, 0, 0, 0, 271, 272, 273, 274, 0, 0, - 276, 0, 277, 0, 0, 0, 278, 0, 263, 264, - 0, 265, 266, 0, 267, 268, 0, 0, 0, 0, - 0, 0, 0, 0, 282, 0, 0, 126, 127, 285, - 0, 0, 287, 275, 288, 289, 134, 0, 0, 0, - 141, 142, 143, 144, 145, 0, 0, 148, 149, 0, - 0, 0, 280, 0, 0, 0, 281, 0, 0, 0, - 0, 284, 0, 0, 161, 286, 0, 0, 0, 163, - 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, + 89, 92, 95, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 289, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 64, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 155, 125, 127, 128, 156, 297, 130, 159, + 81, 82, 215, 216, 217, 160, 84, 138, 228, 140, + 142, 144, 90, 93, 96, 81, 82, 151, 152, 129, + 157, 84, 224, 243, 249, 262, 161, 250, 251, 291, + 252, 81, 82, 141, 143, 145, 165, 84, 253, 294, + 266, 167, 169, 170, 81, 82, 171, 83, 298, 172, + 84, 85, 173, 300, 158, 267, 174, 175, 176, 177, + 178, 179, 0, 0, 0, 180, 181, 182, 183, 184, + 185, 0, 0, 0, 186, 187, 188, 189, 190, 191, + 0, 192, 193, 0, 194, 196, 198, 199, 200, 201, + 202, 133, 134, 135, 136, 137, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 195, 0, + 220, 221, 222, 223, 77, 78, 81, 82, 0, 88, + 79, 226, 84, 85, 0, 0, 229, 230, 231, 232, + 233, 234, 0, 235, 236, 81, 82, 237, 91, 238, + 239, 84, 85, 240, 0, 241, 242, 0, 0, 244, + 245, 246, 0, 247, 0, 0, 81, 82, 162, 163, + 254, 255, 84, 256, 164, 257, 0, 0, 258, 259, + 260, 0, 0, 81, 82, 0, 94, 263, 265, 84, + 85, 0, 0, 0, 219, 0, 268, 269, 270, 271, + 272, 81, 82, 81, 82, 0, 0, 84, 124, 84, + 262, 279, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 131, 132, 286, 0, 287, + 288, 0, 0, 0, 139, 290, 0, 0, 146, 147, + 148, 149, 150, 0, 0, 153, 154, 0, 0, 0, + 0, 0, 0, 0, 295, 296, 261, 0, 0, 0, + 0, 0, 166, 301, 302, 0, 0, 168, 304, 0, + 0, 306, 0, 307, 0, 0, 273, 274, 0, 275, + 276, 0, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, + 0, 0, 0, 292, 0, 0, 0, 293, 0, 0, + 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 305, 0, 0, 227, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 0, 0, 0, 0, 0, 62, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61 + 248, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 0, 0, 0, 0, 0, 64, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63 }; /* YYCHECK. */ @@ -1735,61 +1808,60 @@ namespace lol { EasyMeshParser::yycheck_[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 69, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 69, 35, 36, 37, 0, 39, 69, 65, 66, - 65, 66, 67, 73, 71, 48, 73, 50, 51, 52, - 70, 65, 66, 3, 4, 58, 59, 71, 65, 73, - 65, 66, 70, 68, 71, 217, 71, 72, 70, 70, - 65, 66, 70, 68, 77, 37, 71, 72, 70, 82, - 83, 84, 70, 73, 87, 67, -1, 90, 50, 51, - 52, 94, 95, 96, 97, 98, 99, -1, -1, -1, - 103, 104, 105, 106, 107, 108, -1, -1, -1, 112, - 113, 114, 115, 116, 117, -1, 119, 120, -1, 122, - 123, 128, 129, 130, 131, 132, 43, 44, 45, 46, - 47, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 65, 66, 148, 149, 154, 155, 71, - 72, 65, 66, -1, 68, -1, 159, 71, 72, -1, - 122, 164, 165, 166, 167, 168, -1, 170, 171, 65, - 66, 174, -1, 176, 177, 71, -1, 180, 147, 182, - 183, -1, -1, 186, 187, 188, -1, 190, -1, -1, - 65, 66, 65, 66, 197, 198, 71, 200, 71, 202, - -1, -1, 205, 206, 207, -1, -1, -1, -1, -1, - -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, - 223, 224, 225, 226, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 237, -1, 239, -1, -1, 208, - -1, -1, -1, -1, 247, 248, 249, 250, -1, -1, - 253, -1, 255, -1, -1, -1, 259, -1, 227, 228, - -1, 230, 231, -1, 233, 234, -1, -1, -1, -1, - -1, -1, -1, -1, 277, -1, -1, 40, 41, 282, - -1, -1, 285, 252, 287, 288, 49, -1, -1, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, -1, - -1, -1, 271, -1, -1, -1, 275, -1, -1, -1, - -1, 280, -1, -1, 77, 284, -1, -1, -1, 82, - 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 13, 14, 264, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 71, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 0, 36, 37, 38, 0, 289, 41, 71, + 67, 68, 67, 68, 69, 71, 73, 50, 75, 52, + 53, 54, 3, 4, 5, 67, 68, 60, 61, 38, + 67, 73, 72, 75, 72, 74, 73, 72, 72, 75, + 72, 67, 68, 52, 53, 54, 79, 73, 72, 75, + 72, 84, 85, 86, 67, 68, 89, 70, 75, 92, + 73, 74, 95, 75, 69, 223, 99, 100, 101, 102, + 103, 104, -1, -1, -1, 108, 109, 110, 111, 112, + 113, -1, -1, -1, 117, 118, 119, 120, 121, 122, + -1, 124, 125, -1, 127, 128, 133, 134, 135, 136, + 137, 45, 46, 47, 48, 49, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 127, -1, + 153, 154, 159, 160, 67, 68, 67, 68, -1, 70, + 73, 164, 73, 74, -1, -1, 169, 170, 171, 172, + 173, 174, -1, 176, 177, 67, 68, 180, 70, 182, + 183, 73, 74, 186, -1, 188, 189, -1, -1, 192, + 193, 194, -1, 196, -1, -1, 67, 68, 67, 68, + 203, 204, 73, 206, 73, 208, -1, -1, 211, 212, + 213, -1, -1, 67, 68, -1, 70, 220, 221, 73, + 74, -1, -1, -1, 152, -1, 229, 230, 231, 232, + 233, 67, 68, 67, 68, -1, -1, 73, 74, 73, + 74, 244, -1, 246, -1, -1, -1, -1, -1, -1, + -1, 254, 255, 256, 257, 42, 43, 260, -1, 262, + 263, -1, -1, -1, 51, 268, -1, -1, 55, 56, + 57, 58, 59, -1, -1, 62, 63, -1, -1, -1, + -1, -1, -1, -1, 287, 288, 214, -1, -1, -1, + -1, -1, 79, 296, 297, -1, -1, 84, 301, -1, + -1, 304, -1, 306, -1, -1, 234, 235, -1, 237, + 238, -1, 240, 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, + -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, + -1, -1, -1, 281, -1, -1, -1, 285, -1, -1, + -1, -1, -1, -1, 292, -1, -1, -1, -1, -1, + -1, 299, -1, -1, 302, -1, -1, 164, -1, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 191, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, 69, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63 + 197, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65 }; /* STOS_[STATE-NUM] -- The (internal number of the) accessing @@ -1803,30 +1875,31 @@ namespace lol { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 69, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 85, 86, 87, 65, 66, 71, 89, 65, - 66, 68, 71, 72, 88, 91, 68, 88, 91, 68, - 88, 91, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 72, - 88, 90, 88, 88, 90, 88, 89, 89, 83, 83, - 83, 83, 83, 88, 89, 88, 90, 88, 90, 88, - 90, 89, 89, 89, 89, 89, 88, 88, 89, 89, - 0, 0, 76, 78, 69, 69, 76, 65, 66, 71, - 88, 89, 88, 89, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 90, - 88, 89, 76, 76, 76, 76, 76, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 65, - 66, 67, 92, 92, 88, 88, 76, 76, 70, 84, - 88, 89, 73, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 73, 88, 88, 88, - 88, 89, 70, 70, 70, 70, 70, 88, 88, 88, - 88, 88, 88, 88, 92, 88, 88, 70, 84, 88, - 88, 88, 88, 92, 92, 92, 92, 92, 92, 88, - 88, 88, 88, 88, 88, 92, 88, 88, 88, 73, - 92, 92, 88, 73, 92, 88, 92, 88, 88, 88, - 92 + 62, 63, 64, 65, 71, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 87, 88, 89, 67, 68, 73, + 91, 67, 68, 70, 73, 74, 90, 94, 70, 90, + 94, 70, 90, 94, 70, 90, 94, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 74, 90, 93, 90, 90, 93, + 90, 91, 91, 85, 85, 85, 85, 85, 90, 91, + 90, 93, 90, 93, 90, 93, 91, 91, 91, 91, + 91, 90, 90, 91, 91, 0, 0, 78, 80, 71, + 71, 78, 67, 68, 73, 90, 91, 90, 91, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 93, 90, 91, 78, 78, + 78, 78, 78, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 67, 68, 69, 95, 95, + 90, 90, 78, 78, 72, 86, 90, 91, 75, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 75, 90, 90, 90, 90, 91, 72, + 72, 72, 72, 72, 90, 90, 90, 90, 90, 90, + 90, 95, 74, 90, 92, 90, 72, 86, 90, 90, + 90, 90, 90, 95, 95, 95, 95, 95, 95, 90, + 90, 90, 90, 90, 90, 95, 90, 90, 90, 92, + 90, 75, 95, 95, 75, 90, 90, 92, 75, 95, + 75, 90, 90, 95, 90, 95, 90, 90, 95 }; #if YYDEBUG @@ -1841,8 +1914,8 @@ namespace lol { 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 91, - 93, 45, 40, 41 + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 91, 93, 45, 40, 41 }; #endif @@ -1850,21 +1923,22 @@ namespace lol { const unsigned char EasyMeshParser::yyr1_[] = { - 0, 74, 75, 76, 76, 77, 77, 78, 78, 79, - 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, - 81, 82, 83, 84, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 88, 88, 88, 88, 89, 89, 89, 89, 90, - 90, 91, 91, 92, 92, 92 + 0, 76, 77, 78, 78, 79, 79, 80, 80, 81, + 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, + 83, 84, 85, 86, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, + 90, 90, 90, 91, 91, 91, 91, 92, 92, 93, + 93, 94, 94, 95, 95, 95 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1874,17 +1948,18 @@ namespace lol { 0, 2, 2, 1, 2, 1, 3, 1, 2, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 2, 1, 1, 1, 5, 2, 2, 5, 2, 2, - 5, 2, 2, 2, 2, 2, 4, 2, 2, 2, - 2, 5, 3, 2, 5, 4, 3, 5, 4, 3, - 5, 4, 3, 3, 2, 3, 2, 3, 2, 5, - 4, 3, 5, 4, 3, 5, 4, 3, 4, 3, - 4, 3, 4, 3, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 2, 2, 2, 4, - 2, 2, 1, 1, 1, 2, 2, 4, 1, 8, - 7, 6, 5, 3, 4, 4, 5, 4, 2, 3, - 2, 5, 3, 3, 5, 3, 3, 6, 5, 4, - 5, 4, 4, 3, 3, 2, 3, 2, 11, 10, - 9, 1, 2, 1, 2, 1, 2, 1, 2, 3, + 5, 2, 2, 5, 2, 2, 2, 2, 2, 4, + 2, 2, 2, 2, 5, 3, 2, 5, 4, 3, + 5, 4, 3, 5, 4, 3, 3, 2, 3, 2, + 3, 2, 5, 4, 3, 5, 4, 3, 5, 4, + 3, 4, 3, 4, 3, 4, 3, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, + 2, 2, 4, 2, 2, 1, 1, 1, 2, 2, + 4, 1, 1, 8, 7, 6, 5, 4, 3, 4, + 4, 5, 4, 2, 3, 2, 5, 3, 3, 5, + 3, 3, 6, 5, 4, 5, 4, 4, 3, 3, + 2, 3, 2, 11, 10, 9, 8, 7, 6, 1, + 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 5, 3, 6, 1, 1, 1 }; @@ -1894,25 +1969,26 @@ namespace lol { const char* const EasyMeshParser::yytname_[] = { - "T_END", "error", "$undefined", "T_LOOP", "T_COLOR", "T_BCOLOR", - "T_VCOLOR", "T_TRANSLATEX", "T_ROTATEX", "T_TAPERX", "T_TWISTX", - "T_SHEARX", "T_STRETCHX", "T_BENDXY", "T_BENDXZ", "T_SCALEX", + "T_END", "error", "$undefined", "T_LOOP", "T_COLOR", "T_ACOLOR", + "T_BCOLOR", "T_VCOLOR", "T_TRANSLATEX", "T_ROTATEX", "T_TAPERX", + "T_TWISTX", "T_SHEARX", "T_STRETCHX", "T_BENDXY", "T_BENDXZ", "T_SCALEX", "T_MIRRORX", "T_TRANSLATEY", "T_ROTATEY", "T_TAPERY", "T_TWISTY", "T_SHEARY", "T_STRETCHY", "T_BENDYX", "T_BENDYZ", "T_SCALEY", "T_MIRRORY", "T_TRANSLATEZ", "T_ROTATEZ", "T_TAPERZ", "T_TWISTZ", "T_SHEARZ", "T_STRETCHZ", "T_BENDZX", "T_BENDZY", "T_SCALEZ", "T_MIRRORZ", "T_TRANSLATE", "T_ROTATE", "T_SCALE", - "T_TOGGLESCALEWINDING", "T_RADIALJITTER", "T_SPLITTRIANGLE", - "T_SMOOTHMESH", "T_DUPLICATE", "T_CSGUNION", "T_CSGSUBSTRACT", - "T_CSGSUBSTRACTLOSS", "T_CSGAND", "T_CSGXOR", "T_CHAMFER", "T_CYLINDER", - "T_BOX", "T_SMOOTHCHAMFBOX", "T_FLATCHAMFBOX", "T_SPHERE", "T_CAPSULE", - "T_STAR", "T_EXPANDEDSTAR", "T_DISC", "T_TRIANGLE", "T_QUAD", "T_COG", - "T_TORUS", "T_ERROR", "F_NUMBER", "I_NUMBER", "BOOLEAN", "COLOR", "'['", - "']'", "'-'", "'('", "')'", "$accept", "mesh_description", - "mesh_expression_list", "mesh_expression", "mesh_command_list", - "mesh_command", "post_brace_command", "doloop", "pre_brace_command", - "mesh_open", "mesh_close", "color_command", "transform_command", - "primitive_command", "fv", "iv", "v3", "v4", "bv", 0 + "T_TOGGLESCALEWINDING", "T_TOGGLEQUADWEIGHTING", "T_RADIALJITTER", + "T_SPLITTRIANGLE", "T_SMOOTHMESH", "T_DUPLICATE", "T_CSGUNION", + "T_CSGSUBSTRACT", "T_CSGSUBSTRACTLOSS", "T_CSGAND", "T_CSGXOR", + "T_CHAMFER", "T_CYLINDER", "T_BOX", "T_SMOOTHCHAMFBOX", "T_FLATCHAMFBOX", + "T_SPHERE", "T_CAPSULE", "T_STAR", "T_EXPANDEDSTAR", "T_DISC", + "T_TRIANGLE", "T_QUAD", "T_COG", "T_TORUS", "T_ERROR", "F_NUMBER", + "I_NUMBER", "BOOLEAN", "COLOR", "'['", "']'", "'-'", "'('", "')'", + "$accept", "mesh_description", "mesh_expression_list", "mesh_expression", + "mesh_command_list", "mesh_command", "post_brace_command", "doloop", + "pre_brace_command", "mesh_open", "mesh_close", "color_command", + "transform_command", "primitive_command", "fv", "iv", "v2", "v3", "v4", + "bv", 0 }; #endif @@ -1921,66 +1997,71 @@ namespace lol { const EasyMeshParser::rhs_number_type EasyMeshParser::yyrhs_[] = { - 75, 0, -1, 76, 0, -1, 77, -1, 77, 76, - -1, 78, -1, 83, 76, 84, -1, 79, -1, 79, - 78, -1, 85, -1, 86, -1, 87, -1, 80, -1, - 82, 69, 76, 84, -1, 81, 69, 76, 70, -1, - 45, 83, 76, 70, -1, 46, 83, 76, 70, -1, - 47, 83, 76, 70, -1, 48, 83, 76, 70, -1, - 49, 83, 76, 70, -1, 3, 89, -1, 44, -1, - 69, -1, 70, -1, 4, 88, 88, 88, 88, -1, - 4, 91, -1, 4, 68, -1, 5, 88, 88, 88, - 88, -1, 5, 91, -1, 5, 68, -1, 6, 88, - 88, 88, 88, -1, 6, 91, -1, 6, 68, -1, - 7, 88, -1, 17, 88, -1, 27, 88, -1, 37, - 88, 88, 88, -1, 37, 90, -1, 8, 88, -1, - 18, 88, -1, 28, 88, -1, 38, 88, 88, 88, - 88, -1, 38, 88, 90, -1, 41, 88, -1, 9, - 88, 88, 88, 92, -1, 9, 88, 88, 88, -1, - 9, 88, 88, -1, 19, 88, 88, 88, 92, -1, - 19, 88, 88, 88, -1, 19, 88, 88, -1, 29, - 88, 88, 88, 92, -1, 29, 88, 88, 88, -1, - 29, 88, 88, -1, 10, 88, 88, -1, 10, 88, - -1, 20, 88, 88, -1, 20, 88, -1, 30, 88, - 88, -1, 30, 88, -1, 11, 88, 88, 88, 92, - -1, 11, 88, 88, 88, -1, 11, 88, 88, -1, - 21, 88, 88, 88, 92, -1, 21, 88, 88, 88, - -1, 21, 88, 88, -1, 31, 88, 88, 88, 92, - -1, 31, 88, 88, 88, -1, 31, 88, 88, -1, - 12, 88, 88, 88, -1, 12, 88, 88, -1, 22, - 88, 88, 88, -1, 22, 88, 88, -1, 32, 88, - 88, 88, -1, 32, 88, 88, -1, 13, 88, 88, - -1, 13, 88, -1, 14, 88, 88, -1, 14, 88, - -1, 23, 88, 88, -1, 23, 88, -1, 24, 88, - 88, -1, 24, 88, -1, 33, 88, 88, -1, 33, - 88, -1, 34, 88, 88, -1, 34, 88, -1, 15, - 88, -1, 25, 88, -1, 35, 88, -1, 39, 88, - 88, 88, -1, 39, 90, -1, 39, 88, -1, 16, - -1, 26, -1, 36, -1, 50, 88, -1, 42, 89, - -1, 43, 89, 89, 89, -1, 40, -1, 51, 89, - 88, 88, 88, 92, 92, 92, -1, 51, 89, 88, - 88, 88, 92, 92, -1, 51, 89, 88, 88, 88, - 92, -1, 51, 89, 88, 88, 88, -1, 55, 89, - 88, -1, 56, 89, 88, 88, -1, 63, 89, 88, - 88, -1, 52, 88, 88, 88, 88, -1, 52, 88, - 88, 88, -1, 52, 88, -1, 52, 90, 88, -1, - 52, 90, -1, 53, 88, 88, 88, 88, -1, 53, - 88, 88, -1, 53, 90, 88, -1, 54, 88, 88, - 88, 88, -1, 54, 88, 88, -1, 54, 90, 88, - -1, 57, 89, 88, 88, 92, 92, -1, 57, 89, - 88, 88, 92, -1, 57, 89, 88, 88, -1, 58, - 89, 88, 88, 88, -1, 58, 89, 88, 88, -1, - 59, 89, 88, 92, -1, 59, 89, 88, -1, 60, - 88, 92, -1, 60, 88, -1, 61, 88, 92, -1, - 61, 88, -1, 62, 89, 88, 88, 88, 88, 88, - 88, 88, 88, 92, -1, 62, 89, 88, 88, 88, - 88, 88, 88, 88, 88, -1, 62, 89, 88, 88, - 88, 88, 88, 88, 88, -1, 65, -1, 71, 88, - -1, 66, -1, 71, 89, -1, 66, -1, 71, 89, - -1, 65, -1, 71, 88, -1, 72, 88, 73, -1, - 72, 88, 88, 88, 73, -1, 72, 88, 73, -1, - 72, 88, 88, 88, 88, 73, -1, 67, -1, 66, - -1, 65, -1 + 77, 0, -1, 78, 0, -1, 79, -1, 79, 78, + -1, 80, -1, 85, 78, 86, -1, 81, -1, 81, + 80, -1, 87, -1, 88, -1, 89, -1, 82, -1, + 84, 71, 78, 86, -1, 83, 71, 78, 72, -1, + 47, 85, 78, 72, -1, 48, 85, 78, 72, -1, + 49, 85, 78, 72, -1, 50, 85, 78, 72, -1, + 51, 85, 78, 72, -1, 3, 91, -1, 46, -1, + 71, -1, 72, -1, 4, 90, 90, 90, 90, -1, + 4, 94, -1, 4, 70, -1, 5, 90, 90, 90, + 90, -1, 5, 94, -1, 5, 70, -1, 6, 90, + 90, 90, 90, -1, 6, 94, -1, 6, 70, -1, + 7, 90, 90, 90, 90, -1, 7, 94, -1, 7, + 70, -1, 8, 90, -1, 18, 90, -1, 28, 90, + -1, 38, 90, 90, 90, -1, 38, 93, -1, 9, + 90, -1, 19, 90, -1, 29, 90, -1, 39, 90, + 90, 90, 90, -1, 39, 90, 93, -1, 43, 90, + -1, 10, 90, 90, 90, 95, -1, 10, 90, 90, + 90, -1, 10, 90, 90, -1, 20, 90, 90, 90, + 95, -1, 20, 90, 90, 90, -1, 20, 90, 90, + -1, 30, 90, 90, 90, 95, -1, 30, 90, 90, + 90, -1, 30, 90, 90, -1, 11, 90, 90, -1, + 11, 90, -1, 21, 90, 90, -1, 21, 90, -1, + 31, 90, 90, -1, 31, 90, -1, 12, 90, 90, + 90, 95, -1, 12, 90, 90, 90, -1, 12, 90, + 90, -1, 22, 90, 90, 90, 95, -1, 22, 90, + 90, 90, -1, 22, 90, 90, -1, 32, 90, 90, + 90, 95, -1, 32, 90, 90, 90, -1, 32, 90, + 90, -1, 13, 90, 90, 90, -1, 13, 90, 90, + -1, 23, 90, 90, 90, -1, 23, 90, 90, -1, + 33, 90, 90, 90, -1, 33, 90, 90, -1, 14, + 90, 90, -1, 14, 90, -1, 15, 90, 90, -1, + 15, 90, -1, 24, 90, 90, -1, 24, 90, -1, + 25, 90, 90, -1, 25, 90, -1, 34, 90, 90, + -1, 34, 90, -1, 35, 90, 90, -1, 35, 90, + -1, 16, 90, -1, 26, 90, -1, 36, 90, -1, + 40, 90, 90, 90, -1, 40, 93, -1, 40, 90, + -1, 17, -1, 27, -1, 37, -1, 52, 90, -1, + 44, 91, -1, 45, 91, 91, 91, -1, 41, -1, + 42, -1, 53, 91, 90, 90, 90, 95, 95, 95, + -1, 53, 91, 90, 90, 90, 95, 95, -1, 53, + 91, 90, 90, 90, 95, -1, 53, 91, 90, 90, + 90, -1, 53, 91, 90, 90, -1, 57, 91, 90, + -1, 58, 91, 90, 90, -1, 65, 91, 90, 90, + -1, 54, 90, 90, 90, 90, -1, 54, 90, 90, + 90, -1, 54, 90, -1, 54, 93, 90, -1, 54, + 93, -1, 55, 90, 90, 90, 90, -1, 55, 90, + 90, -1, 55, 93, 90, -1, 56, 90, 90, 90, + 90, -1, 56, 90, 90, -1, 56, 93, 90, -1, + 59, 91, 90, 90, 95, 95, -1, 59, 91, 90, + 90, 95, -1, 59, 91, 90, 90, -1, 60, 91, + 90, 90, 90, -1, 60, 91, 90, 90, -1, 61, + 91, 90, 95, -1, 61, 91, 90, -1, 62, 90, + 95, -1, 62, 90, -1, 63, 90, 95, -1, 63, + 90, -1, 64, 91, 90, 90, 90, 90, 90, 90, + 90, 90, 95, -1, 64, 91, 90, 90, 90, 90, + 90, 90, 90, 90, -1, 64, 91, 90, 90, 90, + 90, 90, 90, 90, -1, 64, 91, 90, 92, 92, + 92, 90, 95, -1, 64, 91, 90, 92, 92, 92, + 90, -1, 64, 91, 90, 92, 92, 92, -1, 67, + -1, 73, 90, -1, 68, -1, 73, 91, -1, 68, + -1, 73, 91, -1, 67, -1, 73, 90, -1, 74, + 90, 75, -1, 74, 90, 90, 75, -1, 74, 90, + 75, -1, 74, 90, 90, 90, 75, -1, 74, 90, + 75, -1, 74, 90, 90, 90, 90, 75, -1, 69, + -1, 68, -1, 67, -1 }; /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in @@ -1991,39 +2072,41 @@ namespace lol { 0, 0, 3, 6, 8, 11, 13, 17, 19, 22, 24, 26, 28, 30, 35, 40, 45, 50, 55, 60, 65, 68, 70, 72, 74, 80, 83, 86, 92, 95, - 98, 104, 107, 110, 113, 116, 119, 124, 127, 130, - 133, 136, 142, 146, 149, 155, 160, 164, 170, 175, - 179, 185, 190, 194, 198, 201, 205, 208, 212, 215, - 221, 226, 230, 236, 241, 245, 251, 256, 260, 265, - 269, 274, 278, 283, 287, 291, 294, 298, 301, 305, - 308, 312, 315, 319, 322, 326, 329, 332, 335, 338, - 343, 346, 349, 351, 353, 355, 358, 361, 366, 368, - 377, 385, 392, 398, 402, 407, 412, 418, 423, 426, - 430, 433, 439, 443, 447, 453, 457, 461, 468, 474, - 479, 485, 490, 495, 499, 503, 506, 510, 513, 525, - 536, 546, 548, 551, 553, 556, 558, 561, 563, 566, - 570, 576, 580, 587, 589, 591 + 98, 104, 107, 110, 116, 119, 122, 125, 128, 131, + 136, 139, 142, 145, 148, 154, 158, 161, 167, 172, + 176, 182, 187, 191, 197, 202, 206, 210, 213, 217, + 220, 224, 227, 233, 238, 242, 248, 253, 257, 263, + 268, 272, 277, 281, 286, 290, 295, 299, 303, 306, + 310, 313, 317, 320, 324, 327, 331, 334, 338, 341, + 344, 347, 350, 355, 358, 361, 363, 365, 367, 370, + 373, 378, 380, 382, 391, 399, 406, 412, 417, 421, + 426, 431, 437, 442, 445, 449, 452, 458, 462, 466, + 472, 476, 480, 487, 493, 498, 504, 509, 514, 518, + 522, 525, 529, 532, 544, 555, 565, 574, 582, 589, + 591, 594, 596, 599, 601, 604, 606, 609, 613, 618, + 622, 628, 632, 639, 641, 643 }; /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ const unsigned short int EasyMeshParser::yyrline_[] = { - 0, 93, 93, 97, 98, 102, 103, 107, 108, 112, - 113, 114, 115, 116, 117, 121, 122, 123, 124, 125, - 129, 133, 137, 141, 145, 146, 147, 150, 151, 152, - 155, 156, 157, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 268, 269, 270, 271, 275, 276, 277, 278, 283, - 284, 288, 289, 294, 295, 296 + 0, 94, 94, 98, 99, 103, 104, 108, 109, 113, + 114, 115, 116, 117, 118, 122, 123, 124, 125, 126, + 130, 134, 138, 142, 146, 147, 148, 151, 152, 153, + 156, 157, 158, 161, 162, 163, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 279, + 280, 281, 282, 286, 287, 288, 289, 294, 295, 299, + 300, 304, 305, 310, 311, 312 }; // Print the state stack on the debug stream. @@ -2067,12 +2150,12 @@ namespace lol { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 72, 73, 2, 2, 2, 71, 2, 2, 2, 2, + 74, 75, 2, 2, 2, 73, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 69, 2, 70, 2, 2, 2, 2, 2, 2, + 2, 71, 2, 72, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2095,7 +2178,7 @@ namespace lol { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68 + 65, 66, 67, 68, 69, 70 }; if ((unsigned int) t <= yyuser_token_number_max_) return translate_table[t]; @@ -2104,26 +2187,26 @@ namespace lol { } const int EasyMeshParser::yyeof_ = 0; - const int EasyMeshParser::yylast_ = 556; - const int EasyMeshParser::yynnts_ = 19; + const int EasyMeshParser::yylast_ = 542; + const int EasyMeshParser::yynnts_ = 20; const int EasyMeshParser::yyempty_ = -2; - const int EasyMeshParser::yyfinal_ = 150; + const int EasyMeshParser::yyfinal_ = 155; const int EasyMeshParser::yyterror_ = 1; const int EasyMeshParser::yyerrcode_ = 256; - const int EasyMeshParser::yyntokens_ = 74; + const int EasyMeshParser::yyntokens_ = 76; - const unsigned int EasyMeshParser::yyuser_token_number_max_ = 323; + const unsigned int EasyMeshParser::yyuser_token_number_max_ = 325; const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2; } // lol /* Line 1053 of lalr1.cc */ -#line 2123 "generated/easymesh-parser.cpp" +#line 2206 "generated/easymesh-parser.cpp" /* Line 1055 of lalr1.cc */ -#line 299 "easymesh/easymesh-parser.y" +#line 315 "easymesh/easymesh-parser.y" void lol::EasyMeshParser::error(const EasyMeshParser::location_type& l, diff --git a/src/generated/easymesh-parser.h b/src/generated/easymesh-parser.h index 01df44ae..de6fff94 100644 --- a/src/generated/easymesh-parser.h +++ b/src/generated/easymesh-parser.h @@ -138,70 +138,72 @@ namespace lol { T_END = 0, T_LOOP = 258, T_COLOR = 259, - T_BCOLOR = 260, - T_VCOLOR = 261, - T_TRANSLATEX = 262, - T_ROTATEX = 263, - T_TAPERX = 264, - T_TWISTX = 265, - T_SHEARX = 266, - T_STRETCHX = 267, - T_BENDXY = 268, - T_BENDXZ = 269, - T_SCALEX = 270, - T_MIRRORX = 271, - T_TRANSLATEY = 272, - T_ROTATEY = 273, - T_TAPERY = 274, - T_TWISTY = 275, - T_SHEARY = 276, - T_STRETCHY = 277, - T_BENDYX = 278, - T_BENDYZ = 279, - T_SCALEY = 280, - T_MIRRORY = 281, - T_TRANSLATEZ = 282, - T_ROTATEZ = 283, - T_TAPERZ = 284, - T_TWISTZ = 285, - T_SHEARZ = 286, - T_STRETCHZ = 287, - T_BENDZX = 288, - T_BENDZY = 289, - T_SCALEZ = 290, - T_MIRRORZ = 291, - T_TRANSLATE = 292, - T_ROTATE = 293, - T_SCALE = 294, - T_TOGGLESCALEWINDING = 295, - T_RADIALJITTER = 296, - T_SPLITTRIANGLE = 297, - T_SMOOTHMESH = 298, - T_DUPLICATE = 299, - T_CSGUNION = 300, - T_CSGSUBSTRACT = 301, - T_CSGSUBSTRACTLOSS = 302, - T_CSGAND = 303, - T_CSGXOR = 304, - T_CHAMFER = 305, - T_CYLINDER = 306, - T_BOX = 307, - T_SMOOTHCHAMFBOX = 308, - T_FLATCHAMFBOX = 309, - T_SPHERE = 310, - T_CAPSULE = 311, - T_STAR = 312, - T_EXPANDEDSTAR = 313, - T_DISC = 314, - T_TRIANGLE = 315, - T_QUAD = 316, - T_COG = 317, - T_TORUS = 318, - T_ERROR = 319, - F_NUMBER = 320, - I_NUMBER = 321, - BOOLEAN = 322, - COLOR = 323 + T_ACOLOR = 260, + T_BCOLOR = 261, + T_VCOLOR = 262, + T_TRANSLATEX = 263, + T_ROTATEX = 264, + T_TAPERX = 265, + T_TWISTX = 266, + T_SHEARX = 267, + T_STRETCHX = 268, + T_BENDXY = 269, + T_BENDXZ = 270, + T_SCALEX = 271, + T_MIRRORX = 272, + T_TRANSLATEY = 273, + T_ROTATEY = 274, + T_TAPERY = 275, + T_TWISTY = 276, + T_SHEARY = 277, + T_STRETCHY = 278, + T_BENDYX = 279, + T_BENDYZ = 280, + T_SCALEY = 281, + T_MIRRORY = 282, + T_TRANSLATEZ = 283, + T_ROTATEZ = 284, + T_TAPERZ = 285, + T_TWISTZ = 286, + T_SHEARZ = 287, + T_STRETCHZ = 288, + T_BENDZX = 289, + T_BENDZY = 290, + T_SCALEZ = 291, + T_MIRRORZ = 292, + T_TRANSLATE = 293, + T_ROTATE = 294, + T_SCALE = 295, + T_TOGGLESCALEWINDING = 296, + T_TOGGLEQUADWEIGHTING = 297, + T_RADIALJITTER = 298, + T_SPLITTRIANGLE = 299, + T_SMOOTHMESH = 300, + T_DUPLICATE = 301, + T_CSGUNION = 302, + T_CSGSUBSTRACT = 303, + T_CSGSUBSTRACTLOSS = 304, + T_CSGAND = 305, + T_CSGXOR = 306, + T_CHAMFER = 307, + T_CYLINDER = 308, + T_BOX = 309, + T_SMOOTHCHAMFBOX = 310, + T_FLATCHAMFBOX = 311, + T_SPHERE = 312, + T_CAPSULE = 313, + T_STAR = 314, + T_EXPANDEDSTAR = 315, + T_DISC = 316, + T_TRIANGLE = 317, + T_QUAD = 318, + T_COG = 319, + T_TORUS = 320, + T_ERROR = 321, + F_NUMBER = 322, + I_NUMBER = 323, + BOOLEAN = 324, + COLOR = 325 }; }; @@ -375,7 +377,7 @@ namespace lol { } // lol /* Line 34 of lalr1.cc */ -#line 379 "generated/easymesh-parser.h" +#line 381 "generated/easymesh-parser.h" diff --git a/src/generated/easymesh-scanner.cpp b/src/generated/easymesh-scanner.cpp index 554ef155..8178bce7 100644 --- a/src/generated/easymesh-scanner.cpp +++ b/src/generated/easymesh-scanner.cpp @@ -330,8 +330,8 @@ typedef unsigned char YY_CHAR; *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 81 -#define YY_END_OF_BUFFER 82 +#define YY_NUM_RULES 83 +#define YY_END_OF_BUFFER 84 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -339,43 +339,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[320] = +static yyconst flex_int16_t yy_accept[328] = { 0, - 0, 0, 82, 80, 79, 78, 80, 72, 73, 80, - 71, 80, 80, 69, 80, 76, 77, 80, 80, 80, - 80, 80, 80, 80, 18, 41, 14, 74, 75, 0, - 0, 69, 68, 70, 0, 53, 49, 58, 0, 0, - 60, 56, 59, 0, 0, 45, 0, 0, 0, 0, - 6, 0, 42, 43, 44, 0, 19, 0, 15, 16, - 17, 8, 0, 0, 0, 0, 0, 38, 39, 40, - 0, 0, 0, 0, 11, 12, 13, 0, 0, 70, - 0, 0, 61, 0, 57, 0, 0, 0, 52, 0, - 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, - - 0, 0, 9, 10, 0, 0, 26, 27, 28, 0, - 0, 0, 0, 29, 30, 31, 0, 20, 21, 22, - 0, 0, 7, 0, 23, 24, 25, 62, 0, 68, - 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 55, 54, 50, 32, 33, 34, 35, 36, 37, 0, - 0, 4, 2, 1, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 47, 0, 46, 0, 0, - 0, 66, 0, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 82, 81, 80, 82, 74, 75, 82, + 73, 82, 82, 71, 82, 78, 79, 82, 82, 82, + 82, 82, 82, 82, 20, 43, 16, 76, 77, 0, + 0, 71, 70, 72, 0, 55, 51, 60, 0, 0, + 62, 58, 61, 0, 0, 47, 0, 0, 0, 0, + 6, 0, 44, 45, 46, 0, 21, 0, 17, 18, + 19, 9, 0, 0, 0, 0, 0, 40, 41, 42, + 0, 0, 0, 0, 0, 0, 13, 14, 15, 0, + 0, 72, 0, 0, 63, 0, 59, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 50, 0, 0, + + 0, 0, 0, 10, 11, 12, 0, 0, 28, 29, + 30, 0, 0, 0, 0, 31, 32, 33, 0, 22, + 23, 24, 0, 8, 0, 0, 7, 0, 25, 26, + 27, 64, 0, 70, 0, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 56, 52, 34, 35, 36, + 37, 38, 39, 0, 0, 4, 2, 1, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 48, 0, 0, 0, 0, 0, 68, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 64, 0, - 0, 58, 0, 0, 0, 0, 56, 0, 0, 45, + 0, 0, 69, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 8, 0, 0, 65, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, + 0, 4, 0, 5, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 66, 0, 0, 60, 0, 0, + 0, 0, 58, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 9, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, 50, 0, + 10, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 51, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -419,87 +420,89 @@ static yyconst flex_int32_t yy_meta[46] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[329] = +static yyconst flex_int16_t yy_base[337] = { 0, - 0, 0, 395, 396, 396, 396, 0, 396, 396, 37, - 38, 383, 383, 41, 356, 396, 396, 33, 36, 25, - 353, 371, 30, 33, 45, 68, 93, 396, 396, 0, - 378, 57, 67, 0, 363, 396, 46, 365, 350, 364, - 396, 51, 352, 54, 352, 363, 356, 347, 350, 346, - 396, 342, 396, 396, 396, 354, 396, 338, 396, 396, - 396, 60, 337, 77, 70, 344, 73, 396, 396, 396, - 80, 66, 332, 97, 396, 396, 396, 0, 119, 0, - 355, 337, 396, 121, 396, 349, 348, 341, 396, 40, - 105, 51, 344, 335, 113, 335, 327, 329, 326, 333, - - 340, 329, 396, 396, 132, 338, 396, 396, 396, 324, - 329, 110, 331, 396, 396, 396, 330, 396, 396, 396, - 321, 328, 396, 314, 396, 396, 396, 0, 338, 337, - 309, 396, 314, 131, 318, 303, 314, 304, 129, 71, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 126, - 317, 309, 310, 307, 305, 309, 312, 302, 314, 295, - 308, 309, 297, 293, 290, 396, 289, 396, 288, 289, - 287, 396, 285, 0, 301, 279, 286, 293, 288, 280, - 282, 295, 294, 280, 285, 291, 274, 281, 118, 129, - 123, 284, 284, 396, 278, 269, 282, 396, 267, 272, - - 277, 134, 267, 269, 137, 271, 259, 274, 140, 265, - 143, 0, 278, 256, 264, 269, 270, 251, 265, 254, - 262, 249, 245, 263, 246, 396, 248, 396, 260, 146, - 250, 149, 250, 247, 243, 239, 247, 253, 0, 233, - 239, 396, 238, 247, 230, 231, 396, 229, 233, 396, - 232, 225, 234, 229, 227, 223, 230, 152, 219, 0, - 226, 232, 231, 226, 225, 227, 224, 396, 225, 210, - 224, 210, 205, 224, 219, 396, 218, 217, 216, 219, - 216, 207, 396, 198, 207, 210, 201, 155, 196, 208, - 199, 202, 204, 203, 194, 189, 198, 396, 186, 197, - - 201, 396, 184, 193, 180, 187, 178, 194, 183, 189, - 192, 178, 185, 173, 166, 186, 173, 163, 396, 200, - 199, 198, 197, 168, 153, 128, 122, 114 + 0, 0, 404, 405, 405, 405, 0, 405, 405, 37, + 38, 392, 392, 41, 365, 405, 405, 33, 36, 25, + 362, 380, 30, 33, 45, 68, 93, 405, 405, 0, + 387, 57, 67, 0, 372, 405, 46, 374, 359, 373, + 405, 51, 361, 54, 361, 372, 365, 356, 359, 355, + 405, 351, 405, 405, 405, 363, 405, 347, 405, 405, + 405, 60, 346, 79, 71, 353, 72, 405, 405, 405, + 83, 352, 340, 66, 339, 96, 405, 405, 405, 0, + 133, 0, 362, 344, 405, 125, 405, 356, 355, 348, + 405, 40, 76, 51, 351, 342, 131, 342, 334, 336, + + 333, 340, 347, 336, 405, 405, 343, 344, 405, 405, + 405, 330, 335, 105, 337, 405, 405, 405, 336, 405, + 405, 405, 117, 405, 327, 334, 405, 320, 405, 405, + 405, 0, 344, 343, 315, 405, 320, 124, 324, 309, + 320, 310, 127, 120, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 132, 323, 315, 316, 313, 311, 315, + 318, 308, 320, 301, 314, 304, 300, 297, 405, 296, + 405, 295, 296, 292, 308, 292, 405, 290, 0, 306, + 284, 291, 298, 293, 285, 287, 300, 299, 285, 290, + 296, 279, 286, 88, 122, 129, 289, 289, 405, 283, + + 274, 287, 405, 272, 277, 282, 135, 275, 138, 277, + 265, 280, 141, 281, 280, 269, 144, 0, 282, 260, + 268, 273, 274, 255, 269, 258, 266, 253, 249, 267, + 250, 405, 252, 405, 264, 147, 254, 150, 249, 245, + 253, 256, 248, 257, 0, 237, 243, 405, 242, 251, + 234, 235, 405, 233, 237, 405, 236, 229, 238, 229, + 236, 153, 222, 238, 223, 0, 230, 236, 235, 230, + 229, 231, 228, 405, 229, 214, 178, 231, 226, 208, + 224, 405, 223, 222, 221, 224, 221, 212, 405, 203, + 405, 208, 211, 210, 158, 201, 213, 204, 207, 209, + + 208, 205, 204, 197, 405, 191, 202, 206, 405, 189, + 194, 196, 199, 182, 196, 185, 191, 176, 193, 179, + 186, 174, 167, 187, 174, 164, 405, 201, 200, 217, + 199, 165, 155, 151, 103, 97 } ; -static yyconst flex_int16_t yy_def[329] = +static yyconst flex_int16_t yy_def[337] = { 0, - 319, 1, 319, 319, 319, 319, 320, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 321, - 319, 319, 319, 322, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 323, 319, 322, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 324, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 325, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 326, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 327, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 328, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 0, 319, - 319, 319, 319, 319, 319, 319, 319, 319 + 327, 1, 327, 327, 327, 327, 328, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 329, + 327, 327, 327, 330, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 331, + 327, 330, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 332, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 333, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 334, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 335, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 336, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 0, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; -static yyconst flex_int16_t yy_nxt[442] = +static yyconst flex_int16_t yy_nxt[451] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4, 15, 4, 4, 4, 16, 17, 18, 19, @@ -507,52 +510,52 @@ static yyconst flex_int16_t yy_nxt[442] = 4, 4, 4, 4, 25, 26, 27, 4, 4, 4, 4, 4, 4, 28, 29, 31, 31, 32, 32, 31, 46, 32, 36, 37, 38, 39, 40, 44, 45, 52, - 47, 50, 51, 56, 82, 31, 41, 32, 42, 43, - 83, 87, 57, 53, 54, 55, 58, 33, 102, 103, - 79, 144, 145, 88, 121, 59, 60, 61, 62, 79, - 63, 148, 149, 64, 90, 91, 92, 65, 104, 106, - - 66, 110, 187, 122, 67, 188, 111, 113, 68, 69, - 70, 71, 117, 114, 115, 116, 276, 107, 108, 109, - 118, 119, 120, 124, 260, 129, 129, 72, 73, 130, - 239, 152, 74, 75, 76, 77, 167, 125, 126, 127, - 133, 134, 135, 136, 137, 146, 168, 147, 153, 177, - 154, 162, 163, 155, 138, 212, 139, 140, 184, 144, - 145, 185, 178, 148, 149, 186, 189, 190, 191, 146, - 174, 147, 179, 233, 68, 69, 70, 107, 108, 109, - 118, 119, 120, 125, 126, 127, 53, 54, 55, 59, - 60, 61, 114, 115, 116, 75, 76, 77, 80, 128, - - 80, 78, 30, 142, 318, 317, 141, 85, 316, 315, - 314, 168, 313, 312, 311, 310, 104, 123, 57, 309, - 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, - 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, - 132, 288, 287, 286, 103, 285, 284, 283, 282, 143, - 281, 280, 279, 278, 277, 275, 274, 273, 272, 271, - 270, 269, 268, 267, 89, 266, 265, 264, 263, 262, - 261, 259, 258, 257, 256, 255, 254, 253, 252, 251, - 250, 249, 248, 247, 246, 245, 41, 244, 243, 242, - 241, 240, 194, 238, 237, 236, 166, 235, 234, 232, - - 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, - 221, 220, 219, 218, 217, 216, 215, 83, 214, 36, - 213, 211, 210, 209, 208, 207, 206, 205, 204, 203, - 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, - 192, 183, 182, 181, 180, 176, 175, 130, 130, 173, - 172, 171, 170, 169, 166, 165, 164, 161, 160, 159, - 158, 51, 157, 156, 151, 150, 143, 142, 141, 132, - 131, 123, 112, 105, 101, 100, 99, 98, 97, 96, - 95, 94, 93, 89, 86, 85, 84, 81, 33, 49, - 48, 35, 34, 33, 319, 3, 319, 319, 319, 319, - - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319 + 47, 50, 51, 56, 84, 31, 41, 32, 42, 43, + 85, 89, 57, 53, 54, 55, 58, 33, 104, 105, + 81, 148, 149, 90, 125, 59, 60, 61, 62, 81, + 63, 152, 153, 64, 92, 93, 94, 65, 106, 282, + + 66, 108, 112, 126, 67, 266, 115, 113, 68, 69, + 70, 71, 116, 117, 118, 119, 150, 72, 151, 109, + 110, 111, 128, 120, 121, 122, 73, 74, 75, 148, + 149, 170, 76, 77, 78, 79, 129, 130, 131, 133, + 133, 171, 182, 134, 137, 138, 139, 140, 141, 156, + 174, 192, 175, 245, 193, 183, 189, 218, 142, 190, + 143, 144, 150, 191, 151, 184, 157, 179, 158, 152, + 153, 159, 194, 195, 196, 68, 69, 70, 109, 110, + 111, 120, 121, 122, 129, 130, 131, 53, 54, 55, + 59, 60, 61, 116, 117, 118, 291, 105, 77, 78, + + 79, 132, 80, 30, 146, 326, 325, 145, 87, 324, + 323, 322, 124, 171, 321, 320, 106, 82, 319, 82, + 127, 318, 317, 57, 316, 315, 314, 313, 312, 311, + 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, + 300, 299, 298, 297, 296, 136, 295, 294, 293, 292, + 290, 289, 288, 147, 287, 286, 285, 284, 283, 281, + 280, 279, 278, 277, 276, 275, 274, 273, 91, 272, + 271, 270, 269, 268, 267, 265, 264, 263, 262, 261, + 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, + 41, 250, 249, 248, 247, 246, 199, 244, 243, 242, + + 241, 240, 169, 239, 238, 237, 236, 235, 234, 233, + 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, + 222, 221, 85, 220, 36, 219, 217, 216, 215, 214, + 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, + 203, 202, 201, 200, 199, 198, 197, 188, 187, 186, + 185, 181, 180, 134, 134, 178, 177, 176, 173, 172, + 169, 168, 167, 166, 165, 164, 163, 162, 51, 161, + 160, 155, 154, 147, 146, 145, 136, 135, 127, 124, + 123, 114, 107, 103, 102, 101, 100, 99, 98, 97, + 96, 95, 91, 88, 87, 86, 83, 33, 49, 48, + + 35, 34, 33, 327, 3, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327 } ; -static yyconst flex_int16_t yy_chk[442] = +static yyconst flex_int16_t yy_chk[451] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -562,47 +565,47 @@ static yyconst flex_int16_t yy_chk[442] = 20, 14, 18, 18, 18, 18, 18, 19, 19, 24, 20, 23, 23, 25, 37, 32, 18, 32, 18, 18, 37, 42, 25, 24, 24, 24, 25, 33, 62, 62, - 33, 90, 90, 42, 72, 25, 25, 25, 26, 33, - 26, 92, 92, 26, 44, 44, 44, 26, 62, 64, - - 26, 65, 140, 72, 26, 140, 65, 67, 26, 26, - 26, 27, 71, 67, 67, 67, 328, 64, 64, 64, - 71, 71, 71, 74, 327, 79, 79, 27, 27, 79, - 326, 95, 27, 27, 27, 27, 112, 74, 74, 74, - 84, 84, 84, 84, 84, 91, 112, 91, 95, 134, - 95, 105, 105, 95, 84, 325, 84, 84, 139, 189, - 189, 139, 134, 191, 191, 139, 150, 150, 150, 190, - 324, 190, 134, 202, 202, 202, 202, 205, 205, 205, - 209, 209, 209, 211, 211, 211, 230, 230, 230, 232, - 232, 232, 258, 258, 258, 288, 288, 288, 322, 323, - - 322, 321, 320, 318, 317, 316, 315, 314, 313, 312, - 311, 310, 309, 308, 307, 306, 305, 304, 303, 301, - 300, 299, 297, 296, 295, 294, 293, 292, 291, 290, - 289, 287, 286, 285, 284, 282, 281, 280, 279, 278, - 277, 275, 274, 273, 272, 271, 270, 269, 267, 266, - 265, 264, 263, 262, 261, 259, 257, 256, 255, 254, - 253, 252, 251, 249, 248, 246, 245, 244, 243, 241, - 240, 238, 237, 236, 235, 234, 233, 231, 229, 227, - 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, - 215, 214, 213, 210, 208, 207, 206, 204, 203, 201, - - 200, 199, 197, 196, 195, 193, 192, 188, 187, 186, - 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, - 175, 173, 171, 170, 169, 167, 165, 164, 163, 162, - 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, - 151, 138, 137, 136, 135, 133, 131, 130, 129, 124, - 122, 121, 117, 113, 111, 110, 106, 102, 101, 100, - 99, 98, 97, 96, 94, 93, 88, 87, 86, 82, - 81, 73, 66, 63, 58, 56, 52, 50, 49, 48, - 47, 46, 45, 43, 40, 39, 38, 35, 31, 22, - 21, 15, 13, 12, 3, 319, 319, 319, 319, 319, - - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319 + 33, 92, 92, 42, 74, 25, 25, 25, 26, 33, + 26, 94, 94, 26, 44, 44, 44, 26, 62, 336, + + 26, 64, 65, 74, 26, 335, 67, 65, 26, 26, + 26, 27, 67, 67, 67, 71, 93, 27, 93, 64, + 64, 64, 76, 71, 71, 71, 27, 27, 27, 194, + 194, 114, 27, 27, 27, 27, 76, 76, 76, 81, + 81, 114, 138, 81, 86, 86, 86, 86, 86, 97, + 123, 144, 123, 334, 144, 138, 143, 333, 86, 143, + 86, 86, 195, 143, 195, 138, 97, 332, 97, 196, + 196, 97, 154, 154, 154, 207, 207, 207, 209, 209, + 209, 213, 213, 213, 217, 217, 217, 236, 236, 236, + 238, 238, 238, 262, 262, 262, 277, 277, 295, 295, + + 295, 331, 329, 328, 326, 325, 324, 323, 322, 321, + 320, 319, 318, 317, 316, 315, 277, 330, 314, 330, + 313, 312, 311, 310, 308, 307, 306, 304, 303, 302, + 301, 300, 299, 298, 297, 296, 294, 293, 292, 290, + 288, 287, 286, 285, 284, 283, 281, 280, 279, 278, + 276, 275, 273, 272, 271, 270, 269, 268, 267, 265, + 264, 263, 261, 260, 259, 258, 257, 255, 254, 252, + 251, 250, 249, 247, 246, 244, 243, 242, 241, 240, + 239, 237, 235, 233, 231, 230, 229, 228, 227, 226, + 225, 224, 223, 222, 221, 220, 219, 216, 215, 214, + + 212, 211, 210, 208, 206, 205, 204, 202, 201, 200, + 198, 197, 193, 192, 191, 190, 189, 188, 187, 186, + 185, 184, 183, 182, 181, 180, 178, 176, 175, 174, + 173, 172, 170, 168, 167, 166, 165, 164, 163, 162, + 161, 160, 159, 158, 157, 156, 155, 142, 141, 140, + 139, 137, 135, 134, 133, 128, 126, 125, 119, 115, + 113, 112, 108, 107, 104, 103, 102, 101, 100, 99, + 98, 96, 95, 90, 89, 88, 84, 83, 75, 73, + 72, 66, 63, 58, 56, 52, 50, 49, 48, 47, + 46, 45, 43, 40, 39, 38, 35, 31, 22, 21, + + 15, 13, 12, 3, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327 } ; /* The intent behind this definition is that it'll catch @@ -651,7 +654,7 @@ typedef lol::EasyMeshParser::token_type token_type; #define yyterminate() return token::T_END #define YY_NO_UNISTD_H #define YY_USER_ACTION yylloc->columns(yyleng); -#line 655 "generated/easymesh-scanner.cpp" +#line 658 "generated/easymesh-scanner.cpp" #define INITIAL 0 @@ -763,7 +766,7 @@ YY_DECL yylloc->step(); -#line 767 "generated/easymesh-scanner.cpp" +#line 770 "generated/easymesh-scanner.cpp" if ( !(yy_init) ) { @@ -816,13 +819,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 320 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 319 ); + while ( yy_current_state != 327 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -880,278 +883,288 @@ YY_RULE_SETUP case 8: YY_RULE_SETUP #line 58 "easymesh/easymesh-scanner.l" -{ return token::T_COLOR; } +{ return token::T_TOGGLEQUADWEIGHTING; } YY_BREAK case 9: YY_RULE_SETUP #line 59 "easymesh/easymesh-scanner.l" -{ return token::T_BCOLOR; } +{ return token::T_COLOR; } YY_BREAK case 10: YY_RULE_SETUP #line 60 "easymesh/easymesh-scanner.l" -{ return token::T_VCOLOR; } +{ return token::T_ACOLOR; } YY_BREAK case 11: YY_RULE_SETUP -#line 62 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEX; } +#line 61 "easymesh/easymesh-scanner.l" +{ return token::T_BCOLOR; } YY_BREAK case 12: YY_RULE_SETUP -#line 63 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEY; } +#line 62 "easymesh/easymesh-scanner.l" +{ return token::T_VCOLOR; } YY_BREAK case 13: YY_RULE_SETUP #line 64 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEZ; } +{ return token::T_TRANSLATEX; } YY_BREAK case 14: YY_RULE_SETUP #line 65 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATE; } +{ return token::T_TRANSLATEY; } YY_BREAK case 15: YY_RULE_SETUP #line 66 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEX; } +{ return token::T_TRANSLATEZ; } YY_BREAK case 16: YY_RULE_SETUP #line 67 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEY; } +{ return token::T_TRANSLATE; } YY_BREAK case 17: YY_RULE_SETUP #line 68 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEZ; } +{ return token::T_ROTATEX; } YY_BREAK case 18: YY_RULE_SETUP #line 69 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATE; } +{ return token::T_ROTATEY; } YY_BREAK case 19: YY_RULE_SETUP #line 70 "easymesh/easymesh-scanner.l" -{ return token::T_RADIALJITTER; } +{ return token::T_ROTATEZ; } YY_BREAK case 20: YY_RULE_SETUP #line 71 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERX; } +{ return token::T_ROTATE; } YY_BREAK case 21: YY_RULE_SETUP #line 72 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERY; } +{ return token::T_RADIALJITTER; } YY_BREAK case 22: YY_RULE_SETUP #line 73 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERZ; } +{ return token::T_TAPERX; } YY_BREAK case 23: YY_RULE_SETUP #line 74 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTX; } +{ return token::T_TAPERY; } YY_BREAK case 24: YY_RULE_SETUP #line 75 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTY; } +{ return token::T_TAPERZ; } YY_BREAK case 25: YY_RULE_SETUP #line 76 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTZ; } +{ return token::T_TWISTX; } YY_BREAK case 26: YY_RULE_SETUP #line 77 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARX; } +{ return token::T_TWISTY; } YY_BREAK case 27: YY_RULE_SETUP #line 78 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARY; } +{ return token::T_TWISTZ; } YY_BREAK case 28: YY_RULE_SETUP #line 79 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARZ; } +{ return token::T_SHEARX; } YY_BREAK case 29: YY_RULE_SETUP #line 80 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHX; } +{ return token::T_SHEARY; } YY_BREAK case 30: YY_RULE_SETUP #line 81 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHY; } +{ return token::T_SHEARZ; } YY_BREAK case 31: YY_RULE_SETUP #line 82 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHZ; } +{ return token::T_STRETCHX; } YY_BREAK case 32: YY_RULE_SETUP #line 83 "easymesh/easymesh-scanner.l" -{ return token::T_BENDXY; } +{ return token::T_STRETCHY; } YY_BREAK case 33: YY_RULE_SETUP #line 84 "easymesh/easymesh-scanner.l" -{ return token::T_BENDXZ; } +{ return token::T_STRETCHZ; } YY_BREAK case 34: YY_RULE_SETUP #line 85 "easymesh/easymesh-scanner.l" -{ return token::T_BENDYX; } +{ return token::T_BENDXY; } YY_BREAK case 35: YY_RULE_SETUP #line 86 "easymesh/easymesh-scanner.l" -{ return token::T_BENDYZ; } +{ return token::T_BENDXZ; } YY_BREAK case 36: YY_RULE_SETUP #line 87 "easymesh/easymesh-scanner.l" -{ return token::T_BENDZX; } +{ return token::T_BENDYX; } YY_BREAK case 37: YY_RULE_SETUP #line 88 "easymesh/easymesh-scanner.l" -{ return token::T_BENDZY; } +{ return token::T_BENDYZ; } YY_BREAK case 38: YY_RULE_SETUP #line 89 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEX; } +{ return token::T_BENDZX; } YY_BREAK case 39: YY_RULE_SETUP #line 90 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEY; } +{ return token::T_BENDZY; } YY_BREAK case 40: YY_RULE_SETUP #line 91 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEZ; } +{ return token::T_SCALEX; } YY_BREAK case 41: YY_RULE_SETUP #line 92 "easymesh/easymesh-scanner.l" -{ return token::T_SCALE; } +{ return token::T_SCALEY; } YY_BREAK case 42: YY_RULE_SETUP #line 93 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORX; } +{ return token::T_SCALEZ; } YY_BREAK case 43: YY_RULE_SETUP #line 94 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORY; } +{ return token::T_SCALE; } YY_BREAK case 44: YY_RULE_SETUP #line 95 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORZ; } +{ return token::T_MIRRORX; } YY_BREAK case 45: YY_RULE_SETUP #line 96 "easymesh/easymesh-scanner.l" -{ return token::T_CHAMFER; } +{ return token::T_MIRRORY; } YY_BREAK case 46: YY_RULE_SETUP #line 97 "easymesh/easymesh-scanner.l" -{ return token::T_SPLITTRIANGLE; } +{ return token::T_MIRRORZ; } YY_BREAK case 47: YY_RULE_SETUP #line 98 "easymesh/easymesh-scanner.l" -{ return token::T_SMOOTHMESH; } +{ return token::T_CHAMFER; } YY_BREAK case 48: YY_RULE_SETUP #line 99 "easymesh/easymesh-scanner.l" -{ return token::T_DUPLICATE; } +{ return token::T_SPLITTRIANGLE; } YY_BREAK case 49: YY_RULE_SETUP -#line 101 "easymesh/easymesh-scanner.l" -{ return token::T_CYLINDER; } +#line 100 "easymesh/easymesh-scanner.l" +{ return token::T_SMOOTHMESH; } YY_BREAK case 50: YY_RULE_SETUP -#line 102 "easymesh/easymesh-scanner.l" -{ return token::T_SPHERE; } +#line 101 "easymesh/easymesh-scanner.l" +{ return token::T_DUPLICATE; } YY_BREAK case 51: YY_RULE_SETUP #line 103 "easymesh/easymesh-scanner.l" -{ return token::T_CAPSULE; } +{ return token::T_CYLINDER; } YY_BREAK case 52: YY_RULE_SETUP #line 104 "easymesh/easymesh-scanner.l" -{ return token::T_TORUS; } +{ return token::T_SPHERE; } YY_BREAK case 53: YY_RULE_SETUP #line 105 "easymesh/easymesh-scanner.l" -{ return token::T_BOX; } +{ return token::T_CAPSULE; } YY_BREAK case 54: YY_RULE_SETUP #line 106 "easymesh/easymesh-scanner.l" -{ return token::T_SMOOTHCHAMFBOX; } +{ return token::T_TORUS; } YY_BREAK case 55: YY_RULE_SETUP #line 107 "easymesh/easymesh-scanner.l" -{ return token::T_FLATCHAMFBOX; } +{ return token::T_BOX; } YY_BREAK case 56: YY_RULE_SETUP #line 108 "easymesh/easymesh-scanner.l" -{ return token::T_STAR; } +{ return token::T_SMOOTHCHAMFBOX; } YY_BREAK case 57: YY_RULE_SETUP #line 109 "easymesh/easymesh-scanner.l" -{ return token::T_EXPANDEDSTAR; } +{ return token::T_FLATCHAMFBOX; } YY_BREAK case 58: YY_RULE_SETUP #line 110 "easymesh/easymesh-scanner.l" -{ return token::T_DISC; } +{ return token::T_STAR; } YY_BREAK case 59: YY_RULE_SETUP #line 111 "easymesh/easymesh-scanner.l" -{ return token::T_TRIANGLE; } +{ return token::T_EXPANDEDSTAR; } YY_BREAK case 60: YY_RULE_SETUP #line 112 "easymesh/easymesh-scanner.l" -{ return token::T_QUAD; } +{ return token::T_DISC; } YY_BREAK case 61: YY_RULE_SETUP #line 113 "easymesh/easymesh-scanner.l" +{ return token::T_TRIANGLE; } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 114 "easymesh/easymesh-scanner.l" +{ return token::T_QUAD; } + YY_BREAK +case 63: +YY_RULE_SETUP +#line 115 "easymesh/easymesh-scanner.l" { return token::T_COG; } YY_BREAK /* ======= BASE COLOR TYPES ========================================= */ /* COLOR */ -case 62: +case 64: YY_RULE_SETUP -#line 117 "easymesh/easymesh-scanner.l" +#line 119 "easymesh/easymesh-scanner.l" { uint32_t tmp = std::strtol(yytext + 1, nullptr, 16); yylval->u32val = 0x11000000u * (tmp >> 8) @@ -1160,9 +1173,9 @@ YY_RULE_SETUP | 0x000000ffu; return token::COLOR; } YY_BREAK -case 63: +case 65: YY_RULE_SETUP -#line 124 "easymesh/easymesh-scanner.l" +#line 126 "easymesh/easymesh-scanner.l" { uint32_t tmp = std::strtol(yytext + 1, nullptr, 16); yylval->u32val = 0x11000000u * (tmp >> 12) @@ -1171,111 +1184,111 @@ YY_RULE_SETUP | 0x00000011u * (tmp & 0xf); return token::COLOR; } YY_BREAK -case 64: +case 66: YY_RULE_SETUP -#line 131 "easymesh/easymesh-scanner.l" +#line 133 "easymesh/easymesh-scanner.l" { yylval->u32val = 0xffu | 0x100u * (uint32_t)std::strtol(yytext + 1, nullptr, 16); return token::COLOR; } YY_BREAK -case 65: +case 67: YY_RULE_SETUP -#line 135 "easymesh/easymesh-scanner.l" +#line 137 "easymesh/easymesh-scanner.l" { yylval->u32val = (uint32_t)std::strtol(yytext + 1, nullptr, 16); return token::COLOR; } YY_BREAK /* ======= BASE DATA TYPES ========================================= */ /* BOOL */ -case 66: +case 68: YY_RULE_SETUP -#line 141 "easymesh/easymesh-scanner.l" +#line 143 "easymesh/easymesh-scanner.l" { yylval->bval = true; return token::BOOLEAN; } YY_BREAK -case 67: +case 69: YY_RULE_SETUP -#line 142 "easymesh/easymesh-scanner.l" +#line 144 "easymesh/easymesh-scanner.l" { yylval->bval = false; return token::BOOLEAN; } YY_BREAK /* FLOAT */ -case 68: +case 70: YY_RULE_SETUP -#line 144 "easymesh/easymesh-scanner.l" +#line 146 "easymesh/easymesh-scanner.l" { yylval->fval = (float)std::atof(yytext); return token::F_NUMBER; } YY_BREAK /* INT */ -case 69: +case 71: YY_RULE_SETUP -#line 147 "easymesh/easymesh-scanner.l" +#line 149 "easymesh/easymesh-scanner.l" { yylval->ival = std::atoi(yytext); return token::I_NUMBER; } YY_BREAK /* ======= COMMENTS ======= */ -case 70: +case 72: YY_RULE_SETUP -#line 151 "easymesh/easymesh-scanner.l" +#line 153 "easymesh/easymesh-scanner.l" { /* ignore this */ } YY_BREAK /* Semantics tokens */ -case 71: -YY_RULE_SETUP -#line 154 "easymesh/easymesh-scanner.l" -{ return token_type('-'); } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 155 "easymesh/easymesh-scanner.l" -{ return token_type('('); } - YY_BREAK case 73: YY_RULE_SETUP #line 156 "easymesh/easymesh-scanner.l" -{ return token_type(')'); } +{ return token_type('-'); } YY_BREAK case 74: YY_RULE_SETUP #line 157 "easymesh/easymesh-scanner.l" -{ return token_type('{'); } +{ return token_type('('); } YY_BREAK case 75: YY_RULE_SETUP #line 158 "easymesh/easymesh-scanner.l" -{ return token_type('}'); } +{ return token_type(')'); } YY_BREAK case 76: YY_RULE_SETUP #line 159 "easymesh/easymesh-scanner.l" -{ return token_type('['); } +{ return token_type('{'); } YY_BREAK case 77: YY_RULE_SETUP #line 160 "easymesh/easymesh-scanner.l" -{ return token_type(']'); } +{ return token_type('}'); } YY_BREAK case 78: YY_RULE_SETUP #line 161 "easymesh/easymesh-scanner.l" -{ /* ignore this */ } +{ return token_type('['); } YY_BREAK case 79: -/* rule 79 can match eol */ YY_RULE_SETUP #line 162 "easymesh/easymesh-scanner.l" -{ /* ignore this */ } +{ return token_type(']'); } YY_BREAK case 80: YY_RULE_SETUP #line 163 "easymesh/easymesh-scanner.l" -{ return token::T_ERROR; } +{ /* ignore this */ } YY_BREAK case 81: +/* rule 81 can match eol */ +YY_RULE_SETUP +#line 164 "easymesh/easymesh-scanner.l" +{ /* ignore this */ } + YY_BREAK +case 82: YY_RULE_SETUP #line 165 "easymesh/easymesh-scanner.l" +{ return token::T_ERROR; } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 167 "easymesh/easymesh-scanner.l" ECHO; YY_BREAK -#line 1279 "generated/easymesh-scanner.cpp" +#line 1292 "generated/easymesh-scanner.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1657,7 +1670,7 @@ int yyFlexLexer::yy_get_next_buffer() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 320 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1685,11 +1698,11 @@ int yyFlexLexer::yy_get_next_buffer() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 320 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 319); + yy_is_jam = (yy_current_state == 327); return yy_is_jam ? 0 : yy_current_state; } @@ -2176,7 +2189,7 @@ void EasyMeshfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 165 "easymesh/easymesh-scanner.l" +#line 167 "easymesh/easymesh-scanner.l" diff --git a/test/data/mesh-buffer.txt b/test/data/mesh-buffer.txt index 048a013f..2272845d 100644 --- a/test/data/mesh-buffer.txt +++ b/test/data/mesh-buffer.txt @@ -8,7 +8,25 @@ clearcolor #000 custom setmesh " -[sc#0f0 scb#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 ty .5 dup [ rz 90 ry 90 scv#00f dup [ ry 90 scv#f00 ] ] ] +tqw +//CMD TEST +//sc#0f0 ab 1 +//sc#0f0 afcb 1 -.2 +//sc#0f0 acg 8 1 1 1 2 2 1.5 1.5 -.4 +//sc#0f0 as 6 1 2 +//sc#0f0 scb#f00 aes 6 1 2 2 +//sc#0f0 ac 6 1 1 +//sc#0f0 aq 1 +//splt 2 smth 4 0 1 + +//[sc#0f0 ac 3 .5 .4 0 false false true ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 false false true ty .5 dup [ rz 90 ry 90 scv#00f dup [ ry 90 scv#f00 ] ] ] +//[sc#fff ab 1 tx 2] + +//[sc#fff ab 1 tx .5 ty .5] +//[sc#fff ab 1 tx -.5 ty -.5] + + +//smth 3 1 1 smth 8 0 1 //[sc#fff loop 4 [ [loop 4 [ab 1 tx 2]] tz 2]] diff --git a/test/easymeshdictionnary.js b/test/easymeshdictionnary.js index 0dd080e8..000551f7 100644 --- a/test/easymeshdictionnary.js +++ b/test/easymeshdictionnary.js @@ -9,6 +9,7 @@ CmdVar("color", ["Red/Green/Blue/{Alpha}", "HEXA: #ABC{D}", "      #AABBCC{DD}", "FLOAT: f f f f", "      (f f f f)", "      (f)"]); CmdVar("vec3", ["X/Y/Z as float", " f f f", "(f f f)", "(f)"]); +CmdVar("vec2", ["X/Y/Z as float", " f f", "(f f)", "(f)"]); //------------------------------------------------------------------------- //Mesh CSG operations @@ -22,8 +23,10 @@ CmdType(["csgx", "csgxor"], "Performs a Xor operation as :\n(current_scope_Outs //------------------------------------------------------------------------- //Mesh Base operations //------------------------------------------------------------------------- -CmdType(["tsw", "scalewinding"], "When activated, on negative-scaling,\nnormal-vector correction will not occur"); -CmdType(["sc", "setcolor"], "Set A color", [CmdArg("color", "color")]); +CmdType(["tsw", "tglscalewind"], "When active, on negative-scaling,\nnormal-vector correction will not occur\nDefault : Inactive"); +CmdType(["tqw", "tglquadweight"], "When active, quad will have a fifth center vertex\nDefault : Inactive"); +CmdType(["sc", "setcolor"], "Set A & B color", [CmdArg("color", "color")]); +CmdType(["sca", "setcolora"], "Set A color", [CmdArg("color", "color")]); CmdType(["scb", "setcolorb"], "Set B color", [CmdArg("color", "color")]); CmdType(["scv", "setcolorv"], "Set the color of all vertices in this scope", [CmdArg("color", "color")]); CmdType(["lp", "loop"], "Performs a loop with the code in the braces.\nDoesn't open a new scope.", [CmdArg("int", "loopnb"), CmdArg("[ ]", "Loop command")]); @@ -91,5 +94,5 @@ CmdType(["ad", "adddisc"], "Disc centered on (0,0,0) with d diameter.", [CmdArg( CmdType(["at", "addtriangle"], "Triangle centered on (0,0,0)\nContained in a disc of d diameter.", [CmdArg("float", "d"), CmdArg("bool", "fade", "false")]); CmdType(["aq", "addquad"], "Quad centered on (0,0,0) with BBox:\nMin: [-size * .5f, 0,-size * .5f]\nMax: [ size * .5f, 0, size * .5f]", [CmdArg("float", "size"), CmdArg("bool", "fade", "false")]); CmdType(["acg", "addcog"], "Gear centered on (0,0,0) with BBox:\nMin: [-.5 * max(d1, d2),-.5 * h,-.5 * max(d1, d2)]\nMax: [ .5 * max(d1, d2), .5 * h, .5 * max(d1, d2)]", - [CmdArg("float", "h"), CmdArg("float", "d10"), CmdArg("float", "d20"), CmdArg("float", "d1"), CmdArg("float", "d2"), CmdArg("float", "d12"), CmdArg("float", "d22"), - CmdArg("float", "sidemul", "1.0"), CmdArg("bool", "offset", "false")]); + [CmdArg("float", "h"), CmdArg("vec2", "d10d20"), CmdArg("vec2", "d11d21"), CmdArg("vec2", "d12d22"), + CmdArg("float", "sidemul", "0.0"), CmdArg("bool", "offset", "false")]);