diff --git a/src/easymesh/easymesh-parser.y b/src/easymesh/easymesh-parser.y index 6a7adeff..0a9c5658 100644 --- a/src/easymesh/easymesh-parser.y +++ b/src/easymesh/easymesh-parser.y @@ -46,11 +46,13 @@ %start mesh_description %token T_LOOP T_COLOR T_ACOLOR T_BCOLOR T_VCOLOR +%token T_TOGGLESCALEWINDING T_TOGGLEQUADWEIGHTING T_TOGGLEPOSTBUILDNORMAL T_TOGGLEVERTNOCLEANUP +%token T_VERTMERGE T_VERTSEPARATE %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_TOGGLEQUADWEIGHTING T_RADIALJITTER T_SPLITTRIANGLE T_SMOOTHMESH +%token T_TRANSLATE T_ROTATE T_SCALE T_RADIALJITTER T_SPLITTRIANGLE T_SMOOTHMESH %token T_DUPLICATE %token T_CSGUNION T_CSGSUBSTRACT T_CSGSUBSTRACTLOSS T_CSGAND T_CSGXOR %token T_CHAMFER @@ -233,6 +235,10 @@ transform_command: | T_SMOOTHMESH iv iv iv { mc.m_mesh.SmoothMesh($2, $3, $4); } | T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); } | T_TOGGLEQUADWEIGHTING { mc.m_mesh.ToggleQuadWeighting(); } + | T_TOGGLEPOSTBUILDNORMAL { mc.m_mesh.TogglePostBuildNormal(); } + | T_TOGGLEVERTNOCLEANUP { mc.m_mesh.ToggleVerticeNoCleanup(); } + | T_VERTMERGE { mc.m_mesh.VerticesMerge(); } + | T_VERTSEPARATE { mc.m_mesh.VerticesSeparate(); } ; primitive_command: diff --git a/src/easymesh/easymesh-scanner.l b/src/easymesh/easymesh-scanner.l index 018d52a4..04020d66 100644 --- a/src/easymesh/easymesh-scanner.l +++ b/src/easymesh/easymesh-scanner.l @@ -54,13 +54,19 @@ typedef lol::EasyMeshParser::token_type token_type; (csgx|csgxor) { return token::T_CSGXOR; } (lp|loop) { return token::T_LOOP; } -(tsw|tglscalewind) { return token::T_TOGGLESCALEWINDING; } -(tqw|tglquadweight) { return token::T_TOGGLEQUADWEIGHTING; } (sc|setcolor) { return token::T_COLOR; } (sca|setcolora) { return token::T_ACOLOR; } (scb|setcolorb) { return token::T_BCOLOR; } (scv|setcolorv) { return token::T_VCOLOR; } +(tsw|tglscalewind) { return token::T_TOGGLESCALEWINDING; } +(tqw|tglquadweight) { return token::T_TOGGLEQUADWEIGHTING; } +(tpbn|tglpstbuildnormal) { return token::T_TOGGLEPOSTBUILDNORMAL; } +(tvnc|tglvertnocleanup) { return token::T_TOGGLEVERTNOCLEANUP; } + +(vm|vertmerge) { return token::T_VERTMERGE; } +(vs|vertseparate) { return token::T_VERTSEPARATE; } + (tx|translatex) { return token::T_TRANSLATEX; } (ty|translatey) { return token::T_TRANSLATEY; } (tz|translatez) { return token::T_TRANSLATEZ; } diff --git a/src/easymesh/easymesh.cpp b/src/easymesh/easymesh.cpp index c0748424..da41fd89 100644 --- a/src/easymesh/easymesh.cpp +++ b/src/easymesh/easymesh.cpp @@ -453,6 +453,15 @@ bool EasyMesh::Compile(char const *command) BD()->Enable(MeshBuildOperation::CommandExecution); ExecuteCmdStack(); BD()->Disable(MeshBuildOperation::CommandExecution); + + if (!BD()->IsEnabled(MeshBuildOperation::PreventVertCleanup)) + VerticesCleanup(); + + if (BD()->IsEnabled(MeshBuildOperation::PostBuildComputeNormals)) + ComputeNormals(0, m_indices.Count()); + + BD()->Disable(MeshBuildOperation::PostBuildComputeNormals); + BD()->Disable(MeshBuildOperation::PreventVertCleanup); } return res; } @@ -490,155 +499,47 @@ bool EasyMesh::Compile(char const *command) //----------------------------------------------------------------------------- void EasyMesh::ExecuteCmdStack() { +#define DO_EXEC_CMD(MESH_CMD, FUNC_PARAMS) \ + case EasyMeshCmdType::MESH_CMD: \ + { EZM_CALL_FUNC FUNC_PARAMS; break; } + for (BD()->Cmdi() = 0; BD()->Cmdi() < BD()->CmdStack().GetCmdNb(); ++BD()->Cmdi()) { switch (BD()->CmdStack().GetCmd(BD()->Cmdi())) { - case EasyMeshCmdType::MeshCsg: - { - EZM_CALL_FUNC(MeshCsg, CSGUsage); - break; - } - case EasyMeshCmdType::LoopStart: - { - EZM_CALL_FUNC(LoopStart, int); - break; - } - case EasyMeshCmdType::LoopEnd: - { - EZM_CALL_FUNC(LoopEnd); - break; - } - case EasyMeshCmdType::OpenBrace: - { - EZM_CALL_FUNC(OpenBrace); - break; - } - case EasyMeshCmdType::CloseBrace: - { - EZM_CALL_FUNC(CloseBrace); - break; - } - case EasyMeshCmdType::ScaleWinding: - { - EZM_CALL_FUNC(ToggleScaleWinding); - break; - } - case EasyMeshCmdType::QuadWeighting: - { - EZM_CALL_FUNC(ToggleQuadWeighting); - break; - } - case EasyMeshCmdType::SetColorA: - { - EZM_CALL_FUNC(SetCurColorA, vec4); - break; - } - case EasyMeshCmdType::SetColorB: - { - EZM_CALL_FUNC(SetCurColorB, vec4); - break; - } - case EasyMeshCmdType::SetVertColor: - { - EZM_CALL_FUNC(SetVertColor, vec4); - break; - } - case EasyMeshCmdType::Translate: - { - EZM_CALL_FUNC(Translate, vec3); - break; - } - case EasyMeshCmdType::Rotate: - { - EZM_CALL_FUNC(Rotate, float, vec3); - break; - } - case EasyMeshCmdType::RadialJitter: - { - EZM_CALL_FUNC(RadialJitter, float); - break; - } - case EasyMeshCmdType::MeshTranform: - { - EZM_CALL_FUNC(DoMeshTransform, MeshTransform, Axis, Axis, float, float, float, bool); - break; - } - case EasyMeshCmdType::Scale: - { - EZM_CALL_FUNC(Scale, vec3); - break; - } - case EasyMeshCmdType::DupAndScale: - { - EZM_CALL_FUNC(DupAndScale, vec3, bool); - break; - } - case EasyMeshCmdType::Chamfer: - { - EZM_CALL_FUNC(Chamfer, float); - break; - } - case EasyMeshCmdType::SplitTriangles: - { - EZM_CALL_FUNC(SplitTriangles, int); - break; - } - case EasyMeshCmdType::SmoothMesh: - { - EZM_CALL_FUNC(SmoothMesh, int, int, int); - break; - } - case EasyMeshCmdType::AppendCylinder: - { - EZM_CALL_FUNC(AppendCylinder, int, float, float, float, bool, bool, bool); - break; - } - case EasyMeshCmdType::AppendCapsule: - { - EZM_CALL_FUNC(AppendCapsule, int, float, float); - break; - } - case EasyMeshCmdType::AppendTorus: - { - EZM_CALL_FUNC(AppendTorus, int, float, float); - break; - } - case EasyMeshCmdType::AppendBox: - { - EZM_CALL_FUNC(AppendBox, vec3, float, bool); - break; - } - case EasyMeshCmdType::AppendStar: - { - EZM_CALL_FUNC(AppendStar, int, float, float, bool, bool); - break; - } - case EasyMeshCmdType::AppendExpandedStar: - { - EZM_CALL_FUNC(AppendExpandedStar, int, float, float, float); - break; - } - case EasyMeshCmdType::AppendDisc: - { - EZM_CALL_FUNC(AppendDisc, int, float, bool); - break; - } - case EasyMeshCmdType::AppendSimpleTriangle: - { - EZM_CALL_FUNC(AppendSimpleTriangle, float, bool); - break; - } - case EasyMeshCmdType::AppendSimpleQuad: - { - EZM_CALL_FUNC(AppendSimpleQuad, vec2, vec2, float, bool); - break; - } - case EasyMeshCmdType::AppendCog: - { - EZM_CALL_FUNC(AppendCog, int, float, float, float, float, float, float, float, float, bool); - break; - } + DO_EXEC_CMD(MeshCsg, (MeshCsg, CSGUsage)) + DO_EXEC_CMD(LoopStart, (LoopStart, int)) + DO_EXEC_CMD(LoopEnd, (LoopEnd)) + DO_EXEC_CMD(OpenBrace, (OpenBrace)) + DO_EXEC_CMD(CloseBrace, (CloseBrace)) + DO_EXEC_CMD(ScaleWinding, (ToggleScaleWinding)) + DO_EXEC_CMD(QuadWeighting, (ToggleQuadWeighting)) + DO_EXEC_CMD(PostBuildNormal, (TogglePostBuildNormal)) + DO_EXEC_CMD(PreventVertCleanup, (ToggleVerticeNoCleanup)) + DO_EXEC_CMD(VerticesMerge, (VerticesMerge)) + DO_EXEC_CMD(VerticesSeparate, (VerticesSeparate)) + DO_EXEC_CMD(SetColorA, (SetCurColorA, vec4)) + DO_EXEC_CMD(SetColorB, (SetCurColorB, vec4)) + DO_EXEC_CMD(SetVertColor, (SetVertColor, vec4)) + DO_EXEC_CMD(Translate, (Translate, vec3)) + DO_EXEC_CMD(Rotate, (Rotate, float, vec3)) + DO_EXEC_CMD(RadialJitter, (RadialJitter, float)) + DO_EXEC_CMD(MeshTranform, (DoMeshTransform, MeshTransform, Axis, Axis, float, float, float, bool)) + DO_EXEC_CMD(Scale, (Scale, vec3)) + DO_EXEC_CMD(DupAndScale, (DupAndScale, vec3, bool)) + DO_EXEC_CMD(Chamfer, (Chamfer, float)) + DO_EXEC_CMD(SplitTriangles, (SplitTriangles, int)) + DO_EXEC_CMD(SmoothMesh, (SmoothMesh, int, int, int)) + DO_EXEC_CMD(AppendCylinder, (AppendCylinder, int, float, float, float, bool, bool, bool)) + DO_EXEC_CMD(AppendCapsule, (AppendCapsule, int, float, float)) + DO_EXEC_CMD(AppendTorus, (AppendTorus, int, float, float)) + DO_EXEC_CMD(AppendBox, (AppendBox, vec3, float, bool)) + DO_EXEC_CMD(AppendStar, (AppendStar, int, float, float, bool, bool)) + DO_EXEC_CMD(AppendExpandedStar, (AppendExpandedStar, int, float, float, float)) + DO_EXEC_CMD(AppendDisc, (AppendDisc, int, float, bool)) + DO_EXEC_CMD(AppendSimpleTriangle, (AppendSimpleTriangle, float, bool)) + DO_EXEC_CMD(AppendSimpleQuad, (AppendSimpleQuad, vec2, vec2, float, bool)) + DO_EXEC_CMD(AppendCog, (AppendCog, int, float, float, float, float, float, float, float, float, bool)) default: ASSERT(0, "Unknown command pseudo bytecode"); } @@ -775,8 +676,6 @@ bool EasyMesh::SetRender(bool should_render) //------------------- // "Collisions" functions //------------------- -#define VX_ALONE -2 -#define VX_MASTER -1 //----------------------------------------------------------------------------- //helpers func to retrieve a vertex. @@ -1121,6 +1020,7 @@ void EasyMesh::MeshCsg(CSGUsage csg_operation) m_cursors.Last().m1 = m_vert.Count(); m_cursors.Last().m2 = m_indices.Count(); + VerticesCleanup(); //DONE for the splitting ! } @@ -1148,6 +1048,30 @@ void EasyMesh::ToggleQuadWeighting() BD()->Toggle(MeshBuildOperation::QuadWeighting); } +//----------------------------------------------------------------------------- +void EasyMesh::TogglePostBuildNormal() +{ + if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) + { + BD()->CmdStack().AddCmd(EasyMeshCmdType::PostBuildNormal); + return; + } + + BD()->Toggle(MeshBuildOperation::PostBuildComputeNormals); +} + +//----------------------------------------------------------------------------- +void EasyMesh::ToggleVerticeNoCleanup() +{ + if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) + { + BD()->CmdStack().AddCmd(EasyMeshCmdType::PreventVertCleanup); + return; + } + + BD()->Toggle(MeshBuildOperation::PreventVertCleanup); +} + //----------------------------------------------------------------------------- void EasyMesh::SetCurColor(vec4 const &color) { @@ -1308,6 +1232,13 @@ void EasyMesh::AppendTriangleDuplicateVerts(int i1, int i2, int i3, int base) //----------------------------------------------------------------------------- void EasyMesh::ComputeNormals(int start, int vcount) { + + if (BD()->IsEnabled(MeshBuildOperation::CommandExecution) && + BD()->IsEnabled(MeshBuildOperation::PostBuildComputeNormals)) + return; + + Array< Array > normals; + normals.Resize(m_vert.Count()); for (int i = 0; i < vcount; i += 3) { vec3 v0 = m_vert[m_indices[start + i + 2]].m_coord @@ -1317,8 +1248,143 @@ void EasyMesh::ComputeNormals(int start, int vcount) vec3 n = normalize(cross(v1, v0)); for (int j = 0; j < 3; j++) - m_vert[m_indices[start + i + j]].m_normal = n; + normals[m_indices[start + i + j]] << n; + } + + for (int i = 0; i < normals.Count(); i++) + { + if (normals[i].Count() > 0) + { + //remove doubles + for (int j = 0; j < normals[i].Count(); ++j) + for (int k = j + 1; k < normals[i].Count(); ++k) + if (1.f - dot(normals[i][k], normals[i][j]) < .00001f) + normals[i].Remove(k--); + + vec3 newv = vec3::zero; + for (int j = 0; j < normals[i].Count(); ++j) + newv += normals[i][j]; + m_vert[i].m_normal = normalize(newv / (float)normals[i].Count()); + } + } +} + +//----------------------------------------------------------------------------- +void EasyMesh::VerticesCleanup() +{ + Array vert_ids; + vert_ids.Resize(m_vert.Count(), 0); + + //1: Remove triangles with two vertices on each other + for (int i = 0; i < m_indices.Count(); i += 3) + { + bool remove = false; + for (int j = 0; !remove && j < 3; ++j) + if (length(m_vert[m_indices[i + j]].m_coord - m_vert[m_indices[i + (j + 1) % 3]].m_coord) < .00001f) + remove = true; + if (remove) + { + m_indices.RemoveSwap(i, 3); + i -= 3; + } + else + { + //1.5: Mark all used vertices + for (int j = 0; j < 3; ++j) + vert_ids[m_indices[i + j]] = 1; + } } + + //2: Remove all unused vertices + Array old_vert = m_vert; + int shift = 0; + m_vert.Empty(); + for (int i = 0; i < vert_ids.Count(); ++i) + { + //Unused vertex, update the shift quantity instead of keeping it. + if (vert_ids[i] == 0) + shift++; + else + m_vert << old_vert[i]; + //Always mark it with the shift quantity + vert_ids[i] = shift; + } + + //3: Update the indices + for (int i = 0; i < m_indices.Count(); ++i) + m_indices[i] -= vert_ids[m_indices[i]]; +} + +//----------------------------------------------------------------------------- +void EasyMesh::VerticesMerge() +{ + if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) + { + BD()->CmdStack().AddCmd(EasyMeshCmdType::VerticesMerge); + return; + } + + //1: Crunch all vertices in the dictionnary + VertexDictionnary vert_dict; + for (int i = m_cursors.Last().m1; i < m_vert.Count(); i++) + vert_dict.AddVertex(i, m_vert[i].m_coord); + + //2: Update the indices + for (int i = 0; i < m_indices.Count(); ++i) + { + int master = vert_dict.FindVertexMaster(m_indices[i]); + if (master >= 0) + m_indices[i] = master; + } + + //2: Cleanup + VerticesCleanup(); +} + +//----------------------------------------------------------------------------- +void EasyMesh::VerticesSeparate() +{ + if (BD()->IsEnabled(MeshBuildOperation::CommandRecording)) + { + BD()->CmdStack().AddCmd(EasyMeshCmdType::VerticesSeparate); + return; + } + + Array< Array > new_ids; + Array vert_ids; + vert_ids.Resize(m_vert.Count(), 0); + + //1: Mark all used vertices + for (int i = 0; i < m_indices.Count(); ++i) + vert_ids[m_indices[i]]++; + + //2: Update the vertices + int vbase = m_cursors.Last().m1; + int vcount = m_vert.Count(); + new_ids.Resize(vcount); + for (int i = vbase; i < vcount; i++) + { + while (vert_ids[i] > 1) + { + //Add duplicate + new_ids[i] << m_vert.Count(); + AddDuplicateVertex(i); + vert_ids[i]--; + } + } + + //3: Update the indices + for (int i = 0; i < m_indices.Count(); ++i) + { + if (new_ids[m_indices[i]].Count()) + { + int j = new_ids[m_indices[i]].Pop(); + m_indices[i] = j; + } + } + + //4: Cleanup + VerticesCleanup(); } //----------------------------------------------------------------------------- diff --git a/src/easymesh/easymesh.h b/src/easymesh/easymesh.h index 375a2723..0c722f2d 100644 --- a/src/easymesh/easymesh.h +++ b/src/easymesh/easymesh.h @@ -201,11 +201,13 @@ struct MeshBuildOperation enum Value { //When this flag is up, negative scaling will not invert faces. - ScaleWinding = (1 << 0), - CommandRecording = (1 << 1), - CommandExecution = (1 << 2), - QuadWeighting = (1 << 3), - IgnoreQuadWeighting = (1 << 4), + ScaleWinding = (1 << 0), + CommandRecording = (1 << 1), + CommandExecution = (1 << 2), + QuadWeighting = (1 << 3), + IgnoreQuadWeighting = (1 << 4), + PostBuildComputeNormals = (1 << 5), + PreventVertCleanup = (1 << 6), All = 0xffffffff } @@ -229,10 +231,15 @@ struct EasyMeshCmdType ScaleWinding, QuadWeighting, + PostBuildNormal, + PreventVertCleanup, SetColorA, SetColorB, SetVertColor, + VerticesMerge, + VerticesSeparate, + Translate, Rotate, RadialJitter, @@ -702,6 +709,10 @@ public: void ToggleScaleWinding(); /* [cmd:tqw] When active, quad will have a fifth center vertex */ void ToggleQuadWeighting(); + /* [cmd:tpbn] When active, normal will be computed after the build */ + void TogglePostBuildNormal(); + /* [cmd:tpbn] When active, normal will be computed after the build */ + void ToggleVerticeNoCleanup(); /* [cmd:sc] Set both color */ void SetCurColor(vec4 const &color); /* [cmd:sca] Set base color A */ @@ -726,6 +737,13 @@ private: void AppendTriangle(int i1, int i2, int i3, int base); void AppendTriangleDuplicateVerts(int i1, int i2, int i3, int base); void ComputeNormals(int start, int vcount); +public: + /* Remove all unused */ + void VerticesCleanup(); + /* Merge vertices AKA: smooth */ + void VerticesMerge(); + /* Merge vertices AKA: Flat */ + void VerticesSeparate(); public: //DEBUG void ComputeTexCoord(float uv_scale, int uv_offset); @@ -984,7 +1002,7 @@ public: int GetVertexCount() { return m_vert.Count(); } vec3 const &GetVertexLocation(int i) { return m_vert[i].m_coord; } -private: +//private: Array m_indices; Array m_vert; diff --git a/src/generated/easymesh-parser.cpp b/src/generated/easymesh-parser.cpp index 7d681fb6..ba564fa4 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 79 "easymesh/easymesh-parser.y" +#line 81 "easymesh/easymesh-parser.y" #include "easymesh/easymesh-compiler.h" @@ -440,91 +440,91 @@ namespace lol { case 14: /* Line 677 of lalr1.cc */ -#line 118 "easymesh/easymesh-parser.y" +#line 120 "easymesh/easymesh-parser.y" { mc.m_mesh.LoopEnd(); } break; case 15: /* Line 677 of lalr1.cc */ -#line 122 "easymesh/easymesh-parser.y" +#line 124 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgUnion(); mc.m_mesh.CloseBrace(); } break; case 16: /* Line 677 of lalr1.cc */ -#line 123 "easymesh/easymesh-parser.y" +#line 125 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgSub(); mc.m_mesh.CloseBrace(); } break; case 17: /* Line 677 of lalr1.cc */ -#line 124 "easymesh/easymesh-parser.y" +#line 126 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgSubL(); mc.m_mesh.CloseBrace(); } break; case 18: /* Line 677 of lalr1.cc */ -#line 125 "easymesh/easymesh-parser.y" +#line 127 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgAnd(); mc.m_mesh.CloseBrace(); } break; case 19: /* Line 677 of lalr1.cc */ -#line 126 "easymesh/easymesh-parser.y" +#line 128 "easymesh/easymesh-parser.y" { mc.m_mesh.CsgXor(); mc.m_mesh.CloseBrace(); } break; case 20: /* Line 677 of lalr1.cc */ -#line 130 "easymesh/easymesh-parser.y" +#line 132 "easymesh/easymesh-parser.y" { mc.m_mesh.LoopStart((yysemantic_stack_[(2) - (2)].ival)); } break; case 21: /* Line 677 of lalr1.cc */ -#line 134 "easymesh/easymesh-parser.y" +#line 136 "easymesh/easymesh-parser.y" { mc.m_mesh.DupAndScale(vec3::one, true); } break; case 22: /* Line 677 of lalr1.cc */ -#line 138 "easymesh/easymesh-parser.y" +#line 140 "easymesh/easymesh-parser.y" { mc.m_mesh.OpenBrace(); } break; case 23: /* Line 677 of lalr1.cc */ -#line 142 "easymesh/easymesh-parser.y" +#line 144 "easymesh/easymesh-parser.y" { mc.m_mesh.CloseBrace(); } break; case 24: /* Line 677 of lalr1.cc */ -#line 146 "easymesh/easymesh-parser.y" +#line 148 "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 147 "easymesh/easymesh-parser.y" +#line 149 "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 148 "easymesh/easymesh-parser.y" +#line 150 "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,21 +533,21 @@ namespace lol { case 27: /* Line 677 of lalr1.cc */ -#line 151 "easymesh/easymesh-parser.y" +#line 153 "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 152 "easymesh/easymesh-parser.y" +#line 154 "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 153 "easymesh/easymesh-parser.y" +#line 155 "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.SetCurColorA(vec4(v) * (1.f / 255.f)); } @@ -556,21 +556,21 @@ namespace lol { case 30: /* Line 677 of lalr1.cc */ -#line 156 "easymesh/easymesh-parser.y" +#line 158 "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 157 "easymesh/easymesh-parser.y" +#line 159 "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 158 "easymesh/easymesh-parser.y" +#line 160 "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.SetCurColorB(vec4(v) * (1.f / 255.f)); } @@ -579,21 +579,21 @@ namespace lol { case 33: /* Line 677 of lalr1.cc */ -#line 161 "easymesh/easymesh-parser.y" +#line 163 "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 162 "easymesh/easymesh-parser.y" +#line 164 "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 163 "easymesh/easymesh-parser.y" +#line 165 "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)); } @@ -602,847 +602,875 @@ namespace lol { case 36: /* Line 677 of lalr1.cc */ -#line 169 "easymesh/easymesh-parser.y" +#line 171 "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 170 "easymesh/easymesh-parser.y" +#line 172 "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 171 "easymesh/easymesh-parser.y" +#line 173 "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 172 "easymesh/easymesh-parser.y" +#line 174 "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 173 "easymesh/easymesh-parser.y" +#line 175 "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 174 "easymesh/easymesh-parser.y" +#line 176 "easymesh/easymesh-parser.y" { mc.m_mesh.RotateX((yysemantic_stack_[(2) - (2)].fval)); } break; case 42: /* Line 677 of lalr1.cc */ -#line 175 "easymesh/easymesh-parser.y" +#line 177 "easymesh/easymesh-parser.y" { mc.m_mesh.RotateY((yysemantic_stack_[(2) - (2)].fval)); } break; case 43: /* Line 677 of lalr1.cc */ -#line 176 "easymesh/easymesh-parser.y" +#line 178 "easymesh/easymesh-parser.y" { mc.m_mesh.RotateZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 44: /* Line 677 of lalr1.cc */ -#line 177 "easymesh/easymesh-parser.y" +#line 179 "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 178 "easymesh/easymesh-parser.y" +#line 180 "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 179 "easymesh/easymesh-parser.y" +#line 181 "easymesh/easymesh-parser.y" { mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].fval)); } break; case 47: /* Line 677 of lalr1.cc */ -#line 180 "easymesh/easymesh-parser.y" +#line 182 "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 181 "easymesh/easymesh-parser.y" +#line 183 "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 182 "easymesh/easymesh-parser.y" +#line 184 "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 183 "easymesh/easymesh-parser.y" +#line 185 "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 184 "easymesh/easymesh-parser.y" +#line 186 "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 185 "easymesh/easymesh-parser.y" +#line 187 "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 186 "easymesh/easymesh-parser.y" +#line 188 "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 187 "easymesh/easymesh-parser.y" +#line 189 "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 188 "easymesh/easymesh-parser.y" +#line 190 "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 189 "easymesh/easymesh-parser.y" +#line 191 "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 190 "easymesh/easymesh-parser.y" +#line 192 "easymesh/easymesh-parser.y" { mc.m_mesh.TwistX((yysemantic_stack_[(2) - (2)].fval)); } break; case 58: /* Line 677 of lalr1.cc */ -#line 191 "easymesh/easymesh-parser.y" +#line 193 "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 192 "easymesh/easymesh-parser.y" +#line 194 "easymesh/easymesh-parser.y" { mc.m_mesh.TwistY((yysemantic_stack_[(2) - (2)].fval)); } break; case 60: /* Line 677 of lalr1.cc */ -#line 193 "easymesh/easymesh-parser.y" +#line 195 "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 194 "easymesh/easymesh-parser.y" +#line 196 "easymesh/easymesh-parser.y" { mc.m_mesh.TwistZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 62: /* Line 677 of lalr1.cc */ -#line 195 "easymesh/easymesh-parser.y" +#line 197 "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 196 "easymesh/easymesh-parser.y" +#line 198 "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 197 "easymesh/easymesh-parser.y" +#line 199 "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 198 "easymesh/easymesh-parser.y" +#line 200 "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 199 "easymesh/easymesh-parser.y" +#line 201 "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 200 "easymesh/easymesh-parser.y" +#line 202 "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 201 "easymesh/easymesh-parser.y" +#line 203 "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 202 "easymesh/easymesh-parser.y" +#line 204 "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 203 "easymesh/easymesh-parser.y" +#line 205 "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 204 "easymesh/easymesh-parser.y" +#line 206 "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 205 "easymesh/easymesh-parser.y" +#line 207 "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 206 "easymesh/easymesh-parser.y" +#line 208 "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 207 "easymesh/easymesh-parser.y" +#line 209 "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 208 "easymesh/easymesh-parser.y" +#line 210 "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 209 "easymesh/easymesh-parser.y" +#line 211 "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 210 "easymesh/easymesh-parser.y" +#line 212 "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 211 "easymesh/easymesh-parser.y" +#line 213 "easymesh/easymesh-parser.y" { mc.m_mesh.BendXY((yysemantic_stack_[(2) - (2)].fval)); } break; case 79: /* Line 677 of lalr1.cc */ -#line 212 "easymesh/easymesh-parser.y" +#line 214 "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 213 "easymesh/easymesh-parser.y" +#line 215 "easymesh/easymesh-parser.y" { mc.m_mesh.BendXZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 81: /* Line 677 of lalr1.cc */ -#line 214 "easymesh/easymesh-parser.y" +#line 216 "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 215 "easymesh/easymesh-parser.y" +#line 217 "easymesh/easymesh-parser.y" { mc.m_mesh.BendYX((yysemantic_stack_[(2) - (2)].fval)); } break; case 83: /* Line 677 of lalr1.cc */ -#line 216 "easymesh/easymesh-parser.y" +#line 218 "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 217 "easymesh/easymesh-parser.y" +#line 219 "easymesh/easymesh-parser.y" { mc.m_mesh.BendYZ((yysemantic_stack_[(2) - (2)].fval)); } break; case 85: /* Line 677 of lalr1.cc */ -#line 218 "easymesh/easymesh-parser.y" +#line 220 "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 219 "easymesh/easymesh-parser.y" +#line 221 "easymesh/easymesh-parser.y" { mc.m_mesh.BendZX((yysemantic_stack_[(2) - (2)].fval)); } break; case 87: /* Line 677 of lalr1.cc */ -#line 220 "easymesh/easymesh-parser.y" +#line 222 "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 221 "easymesh/easymesh-parser.y" +#line 223 "easymesh/easymesh-parser.y" { mc.m_mesh.BendZY((yysemantic_stack_[(2) - (2)].fval)); } break; case 89: /* Line 677 of lalr1.cc */ -#line 222 "easymesh/easymesh-parser.y" +#line 224 "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 223 "easymesh/easymesh-parser.y" +#line 225 "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 224 "easymesh/easymesh-parser.y" +#line 226 "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 225 "easymesh/easymesh-parser.y" +#line 227 "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 226 "easymesh/easymesh-parser.y" +#line 228 "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 227 "easymesh/easymesh-parser.y" +#line 229 "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 228 "easymesh/easymesh-parser.y" +#line 230 "easymesh/easymesh-parser.y" { mc.m_mesh.MirrorX(); } break; case 96: /* Line 677 of lalr1.cc */ -#line 229 "easymesh/easymesh-parser.y" +#line 231 "easymesh/easymesh-parser.y" { mc.m_mesh.MirrorY(); } break; case 97: /* Line 677 of lalr1.cc */ -#line 230 "easymesh/easymesh-parser.y" +#line 232 "easymesh/easymesh-parser.y" { mc.m_mesh.MirrorZ(); } break; case 98: /* Line 677 of lalr1.cc */ -#line 231 "easymesh/easymesh-parser.y" +#line 233 "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" +#line 234 "easymesh/easymesh-parser.y" { mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].ival)); } break; case 100: /* Line 677 of lalr1.cc */ -#line 233 "easymesh/easymesh-parser.y" +#line 235 "easymesh/easymesh-parser.y" { 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" +#line 236 "easymesh/easymesh-parser.y" { mc.m_mesh.ToggleScaleWinding(); } break; case 102: /* Line 677 of lalr1.cc */ -#line 235 "easymesh/easymesh-parser.y" +#line 237 "easymesh/easymesh-parser.y" { mc.m_mesh.ToggleQuadWeighting(); } break; case 103: /* Line 677 of lalr1.cc */ -#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)); } +#line 238 "easymesh/easymesh-parser.y" + { mc.m_mesh.TogglePostBuildNormal(); } break; case 104: /* Line 677 of lalr1.cc */ -#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)); } +#line 239 "easymesh/easymesh-parser.y" + { mc.m_mesh.ToggleVerticeNoCleanup(); } break; case 105: /* Line 677 of lalr1.cc */ -#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)); } +#line 240 "easymesh/easymesh-parser.y" + { mc.m_mesh.VerticesMerge(); } break; case 106: /* Line 677 of lalr1.cc */ -#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)); } +#line 241 "easymesh/easymesh-parser.y" + { mc.m_mesh.VerticesSeparate(); } break; case 107: /* Line 677 of lalr1.cc */ -#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)); } +#line 245 "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 108: /* Line 677 of lalr1.cc */ -#line 244 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSphere((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } +#line 246 "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 109: /* Line 677 of lalr1.cc */ -#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)); } +#line 247 "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 110: /* Line 677 of lalr1.cc */ -#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)); } +#line 248 "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 111: /* Line 677 of lalr1.cc */ -#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)); } +#line 249 "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 112: /* Line 677 of lalr1.cc */ -#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))); } +#line 250 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSphere((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } break; case 113: /* Line 677 of lalr1.cc */ -#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))); } +#line 251 "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 114: /* Line 677 of lalr1.cc */ -#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)); } +#line 252 "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 115: /* Line 677 of lalr1.cc */ -#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])); } +#line 253 "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 116: /* Line 677 of lalr1.cc */ -#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)); } +#line 254 "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 117: /* Line 677 of lalr1.cc */ -#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)); } +#line 255 "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 118: /* Line 677 of lalr1.cc */ -#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)); } +#line 256 "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 119: /* Line 677 of lalr1.cc */ -#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)); } +#line 257 "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 120: /* Line 677 of lalr1.cc */ -#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)); } +#line 258 "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 121: /* Line 677 of lalr1.cc */ -#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)); } +#line 259 "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 122: /* Line 677 of lalr1.cc */ -#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)); } +#line 260 "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 123: /* Line 677 of lalr1.cc */ -#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)); } +#line 261 "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 124: /* Line 677 of lalr1.cc */ -#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)); } +#line 262 "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 125: /* Line 677 of lalr1.cc */ -#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)); } +#line 263 "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 126: /* Line 677 of lalr1.cc */ -#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)); } +#line 264 "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 127: /* Line 677 of lalr1.cc */ -#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)); } +#line 265 "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 128: /* Line 677 of lalr1.cc */ -#line 264 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendDisc((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } +#line 266 "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 129: /* Line 677 of lalr1.cc */ -#line 265 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } +#line 267 "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 130: /* Line 677 of lalr1.cc */ -#line 266 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].fval)); } +#line 268 "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 131: /* Line 677 of lalr1.cc */ -#line 267 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } +#line 269 "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 132: /* Line 677 of lalr1.cc */ -#line 268 "easymesh/easymesh-parser.y" - { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].fval)); } +#line 270 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendDisc((yysemantic_stack_[(3) - (2)].ival), (yysemantic_stack_[(3) - (3)].fval)); } break; case 133: /* Line 677 of lalr1.cc */ -#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)); } +#line 271 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } break; case 134: /* Line 677 of lalr1.cc */ -#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)); } +#line 272 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].fval)); } break; case 135: /* Line 677 of lalr1.cc */ -#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)); } +#line 273 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(3) - (2)].fval), (yysemantic_stack_[(3) - (3)].bval)); } break; case 136: /* Line 677 of lalr1.cc */ -#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)); } +#line 274 "easymesh/easymesh-parser.y" + { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].fval)); } break; case 137: /* Line 677 of lalr1.cc */ -#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)); } +#line 275 "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 138: /* Line 677 of lalr1.cc */ -#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]); } +#line 276 "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 139: /* Line 677 of lalr1.cc */ -#line 279 "easymesh/easymesh-parser.y" - { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); } +#line 277 "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 140: /* Line 677 of lalr1.cc */ -#line 280 "easymesh/easymesh-parser.y" - { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); } +#line 278 "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 141: /* Line 677 of lalr1.cc */ -#line 281 "easymesh/easymesh-parser.y" - { (yyval.fval) = (float)(yysemantic_stack_[(1) - (1)].ival); } +#line 279 "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 142: /* Line 677 of lalr1.cc */ -#line 282 "easymesh/easymesh-parser.y" - { (yyval.fval) = -(float)(yysemantic_stack_[(2) - (2)].ival); } +#line 280 "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 143: /* Line 677 of lalr1.cc */ -#line 286 "easymesh/easymesh-parser.y" - { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); } +#line 285 "easymesh/easymesh-parser.y" + { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); } break; case 144: /* Line 677 of lalr1.cc */ -#line 287 "easymesh/easymesh-parser.y" - { (yyval.ival) = -(yysemantic_stack_[(2) - (2)].ival); } +#line 286 "easymesh/easymesh-parser.y" + { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); } break; case 145: /* Line 677 of lalr1.cc */ -#line 288 "easymesh/easymesh-parser.y" - { (yyval.ival) = (int)(yysemantic_stack_[(1) - (1)].fval); } +#line 287 "easymesh/easymesh-parser.y" + { (yyval.fval) = (float)(yysemantic_stack_[(1) - (1)].ival); } break; case 146: /* Line 677 of lalr1.cc */ -#line 289 "easymesh/easymesh-parser.y" - { (yyval.ival) = -(int)(yysemantic_stack_[(2) - (2)].fval); } +#line 288 "easymesh/easymesh-parser.y" + { (yyval.fval) = -(float)(yysemantic_stack_[(2) - (2)].ival); } 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); } +#line 292 "easymesh/easymesh-parser.y" + { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); } 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); } +#line 293 "easymesh/easymesh-parser.y" + { (yyval.ival) = -(yysemantic_stack_[(2) - (2)].ival); } 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); } +#line 294 "easymesh/easymesh-parser.y" + { (yyval.ival) = (int)(yysemantic_stack_[(1) - (1)].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); } +#line 295 "easymesh/easymesh-parser.y" + { (yyval.ival) = -(int)(yysemantic_stack_[(2) - (2)].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); } +#line 300 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(3) - (2)].fval); (yyval.vval)[1] = (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); } +#line 301 "easymesh/easymesh-parser.y" + { (yyval.vval)[0] = (yysemantic_stack_[(4) - (2)].fval); (yyval.vval)[1] = (yysemantic_stack_[(4) - (3)].fval); } break; case 153: /* Line 677 of lalr1.cc */ -#line 310 "easymesh/easymesh-parser.y" - { (yyval.bval) = (yysemantic_stack_[(1) - (1)].bval); } +#line 305 "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 154: +/* Line 677 of lalr1.cc */ +#line 306 "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 155: + +/* Line 677 of lalr1.cc */ +#line 310 "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 156: + /* Line 677 of lalr1.cc */ #line 311 "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 157: + +/* Line 677 of lalr1.cc */ +#line 316 "easymesh/easymesh-parser.y" + { (yyval.bval) = (yysemantic_stack_[(1) - (1)].bval); } + break; + + case 158: + +/* Line 677 of lalr1.cc */ +#line 317 "easymesh/easymesh-parser.y" { (yyval.bval) = !!(yysemantic_stack_[(1) - (1)].ival); } break; - case 155: + case 159: /* Line 677 of lalr1.cc */ -#line 312 "easymesh/easymesh-parser.y" +#line 318 "easymesh/easymesh-parser.y" { (yyval.bval) = !!(yysemantic_stack_[(1) - (1)].fval); } break; /* Line 677 of lalr1.cc */ -#line 1446 "generated/easymesh-parser.cpp" +#line 1474 "generated/easymesh-parser.cpp" default: break; } @@ -1647,41 +1675,42 @@ namespace lol { /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ - const short int EasyMeshParser::yypact_ninf_ = -253; + const short int EasyMeshParser::yypact_ninf_ = -266; const short int EasyMeshParser::yypact_[] = { - 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 + 412, -14, 17, 89, 108, 146, -266, -266, -266, -266, + -266, -266, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -266, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -266, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -266, 164, 87, 164, 87, -14, -14, -266, -57, + -57, -57, -57, -57, 87, -14, 164, 164, 164, -14, + -14, -14, -14, -14, 87, 87, -14, -14, -266, 38, + 43, 412, -266, 485, -266, -26, -19, 412, -266, -266, + -266, -266, -266, 129, -266, -266, -266, -266, 129, 87, + 87, -266, -266, 87, -266, -266, 87, -266, -266, 87, + -266, -266, -266, 87, 87, 87, 87, 87, 87, -266, + -266, -266, 87, 87, 87, 87, 87, 87, -266, -266, + -266, 87, 87, 87, 87, 87, 87, -266, 87, 87, + -266, 164, 87, -266, -266, -266, -14, 412, 412, 412, + 412, 412, -266, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, -25, -25, 87, 87, -266, + -266, -266, -266, 412, 412, -17, -266, -266, 129, -266, + -266, -266, -266, -27, 87, 87, 87, 87, 87, -266, + 87, 87, -266, -266, 87, -266, 87, 87, -266, -266, + 87, -266, 87, 87, -266, -266, -5, 87, 87, -266, + 87, -14, -16, -8, 6, 8, 16, 87, 87, -266, + 87, -266, 87, -266, -266, 87, 87, 87, -25, -266, + -266, -266, -266, -266, 166, 87, 30, -17, -266, -266, + -266, -266, -266, 87, 87, 87, 87, 87, -25, -25, + -266, -25, -25, -266, -25, -25, -266, -266, 87, -266, + 87, -266, -266, -266, -266, -266, -266, -266, 87, 87, + 87, 87, -266, -25, 87, -266, 87, 87, -9, -266, + -266, -266, 87, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -6, -266, -25, -266, -266, -266, -25, + -266, 4, 87, -9, 28, -266, -25, -266, -266, 29, + 87, 87, -266, -25, -266, 87, -25, -266, 87, -266, + 87, -25, -266 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -1690,53 +1719,54 @@ namespace lol { const unsigned char EasyMeshParser::yydefact_[] = { - 0, 0, 0, 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, 101, 102, 103, 104, + 105, 106, 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, 0, 0, 0, 21, 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, 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 + 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 3, 5, 7, 12, 0, 0, 0, 9, 10, + 11, 149, 147, 0, 20, 143, 145, 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, 117, 119, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 136, 0, 0, 1, + 2, 4, 8, 0, 0, 0, 143, 145, 0, 150, + 148, 144, 146, 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, 118, + 121, 122, 124, 125, 112, 0, 0, 0, 132, 159, + 158, 157, 133, 135, 0, 0, 0, 0, 23, 6, + 144, 146, 155, 0, 0, 0, 0, 0, 48, 63, + 71, 51, 66, 73, 54, 69, 75, 153, 0, 39, + 0, 92, 100, 15, 16, 17, 18, 19, 111, 116, + 0, 0, 113, 128, 130, 131, 0, 0, 0, 114, + 14, 13, 0, 24, 27, 30, 33, 47, 62, 50, + 65, 53, 68, 0, 44, 110, 115, 120, 123, 127, + 129, 0, 0, 0, 0, 154, 109, 126, 151, 0, + 0, 142, 156, 108, 152, 0, 141, 107, 0, 140, + 139, 138, 137 }; /* YYPGOTO[NTERM-NUM]. */ const short int EasyMeshParser::yypgoto_[] = { - -253, -253, -7, -253, 25, -253, -253, -253, -253, 86, - -128, -253, -253, -253, -3, 213, -252, 21, 49, 72 + -266, -266, -7, -266, -2, -266, -266, -266, -266, -45, + -112, -266, -266, -266, -3, 213, -265, 21, 94, 72 }; /* YYDEFGOTO[NTERM-NUM]. */ const short int EasyMeshParser::yydefgoto_[] = { - -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 225, 74, 75, 76, 86, 80, 264, 126, 87, 218 + -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 229, 78, 79, 80, 90, 84, 268, 130, 91, 222 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1746,122 +1776,124 @@ namespace lol { const unsigned short int EasyMeshParser::yytable_[] = { - 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, + 93, 96, 99, 293, 137, 138, 139, 140, 141, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 68, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 301, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 159, 129, + 131, 132, 134, 160, 85, 86, 219, 220, 221, 163, + 88, 142, 232, 144, 146, 148, 164, 81, 82, 228, + 253, 155, 156, 83, 161, 133, 85, 86, 254, 266, + 165, 162, 88, 295, 247, 85, 86, 145, 147, 149, + 169, 88, 255, 298, 256, 171, 173, 174, 85, 86, + 175, 87, 257, 176, 88, 89, 177, 94, 97, 100, + 178, 179, 180, 181, 182, 183, 270, 302, 304, 184, + 185, 186, 187, 188, 189, 271, 0, 0, 190, 191, + 192, 193, 194, 195, 0, 196, 197, 0, 198, 200, + 202, 203, 204, 205, 206, 0, 0, 0, 0, 0, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 199, 0, 224, 225, 226, 227, 85, 86, + 85, 86, 0, 92, 88, 230, 88, 89, 0, 0, + 233, 234, 235, 236, 237, 238, 0, 239, 240, 85, + 86, 241, 95, 242, 243, 88, 89, 244, 0, 245, + 246, 0, 0, 248, 249, 250, 0, 251, 0, 0, + 166, 167, 0, 0, 258, 259, 168, 260, 0, 261, + 0, 0, 262, 263, 264, 0, 0, 85, 86, 0, + 98, 267, 269, 88, 89, 0, 0, 0, 223, 0, + 272, 273, 274, 275, 276, 85, 86, 85, 86, 0, + 0, 88, 128, 88, 266, 283, 0, 284, 0, 0, + 0, 0, 0, 0, 0, 285, 286, 287, 288, 135, + 136, 290, 0, 291, 292, 0, 0, 0, 143, 294, + 0, 0, 150, 151, 152, 153, 154, 0, 0, 157, + 158, 0, 0, 0, 0, 0, 0, 0, 299, 300, + 265, 0, 0, 0, 0, 0, 170, 305, 306, 0, + 0, 172, 308, 0, 0, 310, 0, 311, 0, 0, + 277, 278, 0, 279, 280, 0, 281, 282, 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, 289, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, + 0, 0, 0, 0, 0, 0, 0, 296, 0, 0, + 0, 297, 0, 0, 0, 0, 0, 0, 303, 0, + 0, 0, 0, 0, 0, 307, 0, 0, 309, 0, + 0, 231, 0, 312, 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, - 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 + 0, 0, 0, 0, 252, 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, 64, 65, + 66, 67, 0, 0, 0, 0, 0, 68, 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, 64, 65, 66, 67 }; /* YYCHECK. */ const short int EasyMeshParser::yycheck_[] = { - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 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, 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, + 3, 4, 5, 268, 49, 50, 51, 52, 53, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 75, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 293, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 0, 42, + 43, 44, 45, 0, 71, 72, 71, 72, 73, 75, + 77, 54, 79, 56, 57, 58, 75, 71, 72, 76, + 76, 64, 65, 77, 71, 44, 71, 72, 76, 78, + 77, 73, 77, 79, 79, 71, 72, 56, 57, 58, + 83, 77, 76, 79, 76, 88, 89, 90, 71, 72, + 93, 74, 76, 96, 77, 78, 99, 3, 4, 5, + 103, 104, 105, 106, 107, 108, 76, 79, 79, 112, + 113, 114, 115, 116, 117, 227, -1, -1, 121, 122, + 123, 124, 125, 126, -1, 128, 129, -1, 131, 132, + 137, 138, 139, 140, 141, -1, -1, -1, -1, -1, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 131, -1, 157, 158, 163, 164, 71, 72, + 71, 72, -1, 74, 77, 168, 77, 78, -1, -1, + 173, 174, 175, 176, 177, 178, -1, 180, 181, 71, + 72, 184, 74, 186, 187, 77, 78, 190, -1, 192, + 193, -1, -1, 196, 197, 198, -1, 200, -1, -1, + 71, 72, -1, -1, 207, 208, 77, 210, -1, 212, + -1, -1, 215, 216, 217, -1, -1, 71, 72, -1, + 74, 224, 225, 77, 78, -1, -1, -1, 156, -1, + 233, 234, 235, 236, 237, 71, 72, 71, 72, -1, + -1, 77, 78, 77, 78, 248, -1, 250, -1, -1, + -1, -1, -1, -1, -1, 258, 259, 260, 261, 46, + 47, 264, -1, 266, 267, -1, -1, -1, 55, 272, + -1, -1, 59, 60, 61, 62, 63, -1, -1, 66, + 67, -1, -1, -1, -1, -1, -1, -1, 291, 292, + 218, -1, -1, -1, -1, -1, 83, 300, 301, -1, + -1, 88, 305, -1, -1, 308, -1, 310, -1, -1, + 238, 239, -1, 241, 242, -1, 244, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, + -1, -1, -1, -1, -1, -1, -1, 285, -1, -1, + -1, 289, -1, -1, -1, -1, -1, -1, 296, -1, + -1, -1, -1, -1, -1, 303, -1, -1, 306, -1, + -1, 168, -1, 311, -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, - 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 + -1, -1, -1, -1, 201, 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, 66, 67, + 68, 69, -1, -1, -1, -1, -1, 75, 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, 66, 67, 68, 69 }; /* STOS_[STATE-NUM] -- The (internal number of the) accessing @@ -1875,31 +1907,32 @@ 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, 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 + 62, 63, 64, 65, 66, 67, 68, 69, 75, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, + 93, 71, 72, 77, 95, 71, 72, 74, 77, 78, + 94, 98, 74, 94, 98, 74, 94, 98, 74, 94, + 98, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 78, 94, + 97, 94, 94, 97, 94, 95, 95, 89, 89, 89, + 89, 89, 94, 95, 94, 97, 94, 97, 94, 97, + 95, 95, 95, 95, 95, 94, 94, 95, 95, 0, + 0, 82, 84, 75, 75, 82, 71, 72, 77, 94, + 95, 94, 95, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 97, + 94, 95, 82, 82, 82, 82, 82, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 71, + 72, 73, 99, 99, 94, 94, 82, 82, 76, 90, + 94, 95, 79, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 79, 94, 94, + 94, 94, 95, 76, 76, 76, 76, 76, 94, 94, + 94, 94, 94, 94, 94, 99, 78, 94, 96, 94, + 76, 90, 94, 94, 94, 94, 94, 99, 99, 99, + 99, 99, 99, 94, 94, 94, 94, 94, 94, 99, + 94, 94, 94, 96, 94, 79, 99, 99, 79, 94, + 94, 96, 79, 99, 79, 94, 94, 99, 94, 99, + 94, 94, 99 }; #if YYDEBUG @@ -1915,7 +1948,7 @@ namespace lol { 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, 324, - 325, 91, 93, 45, 40, 41 + 325, 326, 327, 328, 329, 91, 93, 45, 40, 41 }; #endif @@ -1923,22 +1956,22 @@ namespace lol { const unsigned char EasyMeshParser::yyr1_[] = { - 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 + 0, 80, 81, 82, 82, 83, 83, 84, 84, 85, + 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, + 87, 88, 89, 90, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 94, 94, 94, 94, 95, 95, 95, + 95, 96, 96, 97, 97, 98, 98, 99, 99, 99 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1955,12 +1988,12 @@ namespace lol { 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 + 4, 1, 1, 1, 1, 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 }; #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE @@ -1970,14 +2003,15 @@ namespace lol { const EasyMeshParser::yytname_[] = { "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_BCOLOR", "T_VCOLOR", "T_TOGGLESCALEWINDING", "T_TOGGLEQUADWEIGHTING", + "T_TOGGLEPOSTBUILDNORMAL", "T_TOGGLEVERTNOCLEANUP", "T_VERTMERGE", + "T_VERTSEPARATE", "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_TOGGLEQUADWEIGHTING", "T_RADIALJITTER", + "T_MIRRORZ", "T_TRANSLATE", "T_ROTATE", "T_SCALE", "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", @@ -1997,71 +2031,72 @@ namespace lol { const EasyMeshParser::rhs_number_type EasyMeshParser::yyrhs_[] = { - 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 + 81, 0, -1, 82, 0, -1, 83, -1, 83, 82, + -1, 84, -1, 89, 82, 90, -1, 85, -1, 85, + 84, -1, 91, -1, 92, -1, 93, -1, 86, -1, + 88, 75, 82, 90, -1, 87, 75, 82, 76, -1, + 51, 89, 82, 76, -1, 52, 89, 82, 76, -1, + 53, 89, 82, 76, -1, 54, 89, 82, 76, -1, + 55, 89, 82, 76, -1, 3, 95, -1, 50, -1, + 75, -1, 76, -1, 4, 94, 94, 94, 94, -1, + 4, 98, -1, 4, 74, -1, 5, 94, 94, 94, + 94, -1, 5, 98, -1, 5, 74, -1, 6, 94, + 94, 94, 94, -1, 6, 98, -1, 6, 74, -1, + 7, 94, 94, 94, 94, -1, 7, 98, -1, 7, + 74, -1, 14, 94, -1, 24, 94, -1, 34, 94, + -1, 44, 94, 94, 94, -1, 44, 97, -1, 15, + 94, -1, 25, 94, -1, 35, 94, -1, 45, 94, + 94, 94, 94, -1, 45, 94, 97, -1, 47, 94, + -1, 16, 94, 94, 94, 99, -1, 16, 94, 94, + 94, -1, 16, 94, 94, -1, 26, 94, 94, 94, + 99, -1, 26, 94, 94, 94, -1, 26, 94, 94, + -1, 36, 94, 94, 94, 99, -1, 36, 94, 94, + 94, -1, 36, 94, 94, -1, 17, 94, 94, -1, + 17, 94, -1, 27, 94, 94, -1, 27, 94, -1, + 37, 94, 94, -1, 37, 94, -1, 18, 94, 94, + 94, 99, -1, 18, 94, 94, 94, -1, 18, 94, + 94, -1, 28, 94, 94, 94, 99, -1, 28, 94, + 94, 94, -1, 28, 94, 94, -1, 38, 94, 94, + 94, 99, -1, 38, 94, 94, 94, -1, 38, 94, + 94, -1, 19, 94, 94, 94, -1, 19, 94, 94, + -1, 29, 94, 94, 94, -1, 29, 94, 94, -1, + 39, 94, 94, 94, -1, 39, 94, 94, -1, 20, + 94, 94, -1, 20, 94, -1, 21, 94, 94, -1, + 21, 94, -1, 30, 94, 94, -1, 30, 94, -1, + 31, 94, 94, -1, 31, 94, -1, 40, 94, 94, + -1, 40, 94, -1, 41, 94, 94, -1, 41, 94, + -1, 22, 94, -1, 32, 94, -1, 42, 94, -1, + 46, 94, 94, 94, -1, 46, 97, -1, 46, 94, + -1, 23, -1, 33, -1, 43, -1, 56, 94, -1, + 48, 95, -1, 49, 95, 95, 95, -1, 8, -1, + 9, -1, 10, -1, 11, -1, 12, -1, 13, -1, + 57, 95, 94, 94, 94, 99, 99, 99, -1, 57, + 95, 94, 94, 94, 99, 99, -1, 57, 95, 94, + 94, 94, 99, -1, 57, 95, 94, 94, 94, -1, + 57, 95, 94, 94, -1, 61, 95, 94, -1, 62, + 95, 94, 94, -1, 69, 95, 94, 94, -1, 58, + 94, 94, 94, 94, -1, 58, 94, 94, 94, -1, + 58, 94, -1, 58, 97, 94, -1, 58, 97, -1, + 59, 94, 94, 94, 94, -1, 59, 94, 94, -1, + 59, 97, 94, -1, 60, 94, 94, 94, 94, -1, + 60, 94, 94, -1, 60, 97, 94, -1, 63, 95, + 94, 94, 99, 99, -1, 63, 95, 94, 94, 99, + -1, 63, 95, 94, 94, -1, 64, 95, 94, 94, + 94, -1, 64, 95, 94, 94, -1, 65, 95, 94, + 99, -1, 65, 95, 94, -1, 66, 94, 99, -1, + 66, 94, -1, 67, 94, 99, -1, 67, 94, -1, + 68, 95, 94, 94, 94, 94, 94, 94, 94, 94, + 99, -1, 68, 95, 94, 94, 94, 94, 94, 94, + 94, 94, -1, 68, 95, 94, 94, 94, 94, 94, + 94, 94, -1, 68, 95, 94, 96, 96, 96, 94, + 99, -1, 68, 95, 94, 96, 96, 96, 94, -1, + 68, 95, 94, 96, 96, 96, -1, 71, -1, 77, + 94, -1, 72, -1, 77, 95, -1, 72, -1, 77, + 95, -1, 71, -1, 77, 94, -1, 78, 94, 79, + -1, 78, 94, 94, 79, -1, 78, 94, 79, -1, + 78, 94, 94, 94, 79, -1, 78, 94, 79, -1, + 78, 94, 94, 94, 94, 79, -1, 73, -1, 72, + -1, 71, -1 }; /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in @@ -2079,34 +2114,34 @@ namespace lol { 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 + 373, 378, 380, 382, 384, 386, 388, 390, 399, 407, + 414, 420, 425, 429, 434, 439, 445, 450, 453, 457, + 460, 466, 470, 474, 480, 484, 488, 495, 501, 506, + 512, 517, 522, 526, 530, 533, 537, 540, 552, 563, + 573, 582, 590, 597, 599, 602, 604, 607, 609, 612, + 614, 617, 621, 626, 630, 636, 640, 647, 649, 651 }; /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ const unsigned short int EasyMeshParser::yyrline_[] = { - 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 + 0, 96, 96, 100, 101, 105, 106, 110, 111, 115, + 116, 117, 118, 119, 120, 124, 125, 126, 127, 128, + 132, 136, 140, 144, 148, 149, 150, 153, 154, 155, + 158, 159, 160, 163, 164, 165, 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, 236, 237, 238, 239, 240, 241, 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, 275, 276, 277, + 278, 279, 280, 285, 286, 287, 288, 292, 293, 294, + 295, 300, 301, 305, 306, 310, 311, 316, 317, 318 }; // Print the state stack on the debug stream. @@ -2150,12 +2185,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, - 74, 75, 2, 2, 2, 73, 2, 2, 2, 2, + 78, 79, 2, 2, 2, 77, 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, 71, 2, 72, 2, 2, 2, 2, 2, 2, + 2, 75, 2, 76, 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, @@ -2178,7 +2213,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, 69, 70 + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 }; if ((unsigned int) t <= yyuser_token_number_max_) return translate_table[t]; @@ -2187,26 +2222,26 @@ namespace lol { } const int EasyMeshParser::yyeof_ = 0; - const int EasyMeshParser::yylast_ = 542; + const int EasyMeshParser::yylast_ = 554; const int EasyMeshParser::yynnts_ = 20; const int EasyMeshParser::yyempty_ = -2; - const int EasyMeshParser::yyfinal_ = 155; + const int EasyMeshParser::yyfinal_ = 159; const int EasyMeshParser::yyterror_ = 1; const int EasyMeshParser::yyerrcode_ = 256; - const int EasyMeshParser::yyntokens_ = 76; + const int EasyMeshParser::yyntokens_ = 80; - const unsigned int EasyMeshParser::yyuser_token_number_max_ = 325; + const unsigned int EasyMeshParser::yyuser_token_number_max_ = 329; const EasyMeshParser::token_number_type EasyMeshParser::yyundef_token_ = 2; } // lol /* Line 1053 of lalr1.cc */ -#line 2206 "generated/easymesh-parser.cpp" +#line 2241 "generated/easymesh-parser.cpp" /* Line 1055 of lalr1.cc */ -#line 315 "easymesh/easymesh-parser.y" +#line 321 "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 de6fff94..8143348a 100644 --- a/src/generated/easymesh-parser.h +++ b/src/generated/easymesh-parser.h @@ -141,69 +141,73 @@ namespace lol { 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 + T_TOGGLESCALEWINDING = 263, + T_TOGGLEQUADWEIGHTING = 264, + T_TOGGLEPOSTBUILDNORMAL = 265, + T_TOGGLEVERTNOCLEANUP = 266, + T_VERTMERGE = 267, + T_VERTSEPARATE = 268, + T_TRANSLATEX = 269, + T_ROTATEX = 270, + T_TAPERX = 271, + T_TWISTX = 272, + T_SHEARX = 273, + T_STRETCHX = 274, + T_BENDXY = 275, + T_BENDXZ = 276, + T_SCALEX = 277, + T_MIRRORX = 278, + T_TRANSLATEY = 279, + T_ROTATEY = 280, + T_TAPERY = 281, + T_TWISTY = 282, + T_SHEARY = 283, + T_STRETCHY = 284, + T_BENDYX = 285, + T_BENDYZ = 286, + T_SCALEY = 287, + T_MIRRORY = 288, + T_TRANSLATEZ = 289, + T_ROTATEZ = 290, + T_TAPERZ = 291, + T_TWISTZ = 292, + T_SHEARZ = 293, + T_STRETCHZ = 294, + T_BENDZX = 295, + T_BENDZY = 296, + T_SCALEZ = 297, + T_MIRRORZ = 298, + T_TRANSLATE = 299, + T_ROTATE = 300, + T_SCALE = 301, + T_RADIALJITTER = 302, + T_SPLITTRIANGLE = 303, + T_SMOOTHMESH = 304, + T_DUPLICATE = 305, + T_CSGUNION = 306, + T_CSGSUBSTRACT = 307, + T_CSGSUBSTRACTLOSS = 308, + T_CSGAND = 309, + T_CSGXOR = 310, + T_CHAMFER = 311, + T_CYLINDER = 312, + T_BOX = 313, + T_SMOOTHCHAMFBOX = 314, + T_FLATCHAMFBOX = 315, + T_SPHERE = 316, + T_CAPSULE = 317, + T_STAR = 318, + T_EXPANDEDSTAR = 319, + T_DISC = 320, + T_TRIANGLE = 321, + T_QUAD = 322, + T_COG = 323, + T_TORUS = 324, + T_ERROR = 325, + F_NUMBER = 326, + I_NUMBER = 327, + BOOLEAN = 328, + COLOR = 329 }; }; @@ -377,7 +381,7 @@ namespace lol { } // lol /* Line 34 of lalr1.cc */ -#line 381 "generated/easymesh-parser.h" +#line 385 "generated/easymesh-parser.h" diff --git a/src/generated/easymesh-scanner.cpp b/src/generated/easymesh-scanner.cpp index 8178bce7..0045c98f 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 83 -#define YY_END_OF_BUFFER 84 +#define YY_NUM_RULES 87 +#define YY_END_OF_BUFFER 88 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -339,44 +339,49 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[328] = +static yyconst flex_int16_t yy_accept[376] = { 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, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 88, 86, 85, 84, 86, 78, 79, 86, + 77, 86, 86, 75, 86, 82, 83, 86, 86, 86, + 86, 86, 86, 86, 24, 47, 20, 86, 80, 81, + 0, 0, 75, 74, 76, 0, 59, 55, 64, 0, + 0, 66, 62, 65, 0, 0, 51, 0, 0, 0, + 0, 6, 0, 48, 49, 50, 0, 25, 0, 21, + 22, 23, 7, 0, 0, 0, 0, 0, 44, 45, + 46, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 18, 19, 0, 15, 16, 0, 0, 76, 0, 0, + 67, 0, 63, 0, 0, 0, 58, 0, 0, 0, + + 0, 0, 0, 54, 0, 0, 0, 0, 0, 8, + 9, 10, 0, 0, 32, 33, 34, 0, 0, 0, + 0, 35, 36, 37, 0, 26, 27, 28, 0, 0, + 12, 0, 0, 11, 0, 0, 29, 30, 31, 0, + 68, 0, 74, 0, 57, 0, 0, 0, 0, 0, + 0, 0, 0, 61, 60, 56, 38, 39, 40, 41, + 42, 43, 0, 0, 4, 2, 1, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 53, 0, 52, + 0, 0, 0, 0, 0, 0, 13, 0, 72, 14, + 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 3, 0, 0, 0, 73, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 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, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 70, 0, 0, 64, + 0, 0, 0, 0, 62, 0, 0, 51, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 51, 0, 0, 0, 61, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 0, 0, 0, 54, 0, + 8, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 65, 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 } ; static yyconst flex_int32_t yy_ec[256] = @@ -420,142 +425,159 @@ static yyconst flex_int32_t yy_meta[46] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[337] = +static yyconst flex_int16_t yy_base[385] = { 0, - 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 + 0, 0, 455, 456, 456, 456, 0, 456, 456, 37, + 38, 443, 443, 41, 416, 456, 456, 33, 36, 25, + 413, 431, 30, 33, 45, 68, 93, 42, 456, 456, + 0, 438, 57, 69, 0, 423, 456, 60, 425, 410, + 424, 456, 60, 412, 54, 412, 423, 416, 407, 410, + 406, 456, 402, 456, 456, 456, 414, 456, 398, 456, + 456, 456, 80, 397, 61, 76, 404, 79, 456, 456, + 456, 74, 403, 411, 390, 52, 389, 397, 96, 456, + 456, 456, 392, 456, 456, 0, 133, 0, 410, 392, + 456, 125, 456, 404, 403, 396, 456, 82, 109, 89, + + 399, 390, 132, 390, 382, 384, 381, 388, 395, 384, + 456, 456, 391, 392, 456, 456, 456, 378, 383, 116, + 385, 456, 456, 456, 384, 456, 456, 456, 121, 375, + 456, 374, 381, 456, 382, 366, 456, 456, 456, 364, + 0, 389, 388, 360, 456, 365, 137, 369, 354, 365, + 355, 134, 131, 456, 456, 456, 456, 456, 456, 456, + 456, 456, 133, 368, 360, 361, 358, 356, 360, 363, + 353, 365, 346, 359, 349, 345, 342, 456, 341, 456, + 340, 341, 339, 336, 352, 349, 456, 335, 456, 456, + 333, 142, 0, 349, 327, 334, 341, 336, 328, 330, + + 343, 342, 328, 333, 339, 322, 329, 138, 141, 144, + 332, 332, 456, 326, 317, 330, 456, 315, 320, 325, + 146, 318, 149, 320, 308, 323, 152, 306, 323, 322, + 305, 310, 155, 315, 314, 0, 321, 299, 307, 312, + 313, 294, 308, 297, 305, 292, 288, 306, 289, 456, + 291, 456, 303, 158, 293, 161, 288, 284, 292, 297, + 294, 286, 277, 294, 277, 278, 0, 272, 278, 456, + 277, 286, 269, 270, 456, 268, 272, 456, 271, 264, + 273, 264, 271, 164, 259, 256, 272, 263, 256, 267, + 272, 0, 261, 267, 266, 261, 260, 262, 259, 456, + + 260, 245, 189, 262, 253, 256, 238, 245, 253, 252, + 239, 456, 250, 249, 248, 251, 248, 239, 456, 230, + 456, 235, 236, 237, 236, 241, 169, 242, 225, 237, + 228, 231, 233, 232, 229, 231, 227, 220, 221, 212, + 456, 212, 223, 227, 456, 210, 215, 212, 216, 219, + 217, 216, 201, 217, 206, 212, 202, 196, 213, 211, + 195, 202, 190, 193, 188, 181, 201, 190, 181, 186, + 198, 183, 174, 185, 456, 210, 180, 228, 174, 162, + 155, 139, 103, 79 } ; -static yyconst flex_int16_t yy_def[337] = +static yyconst flex_int16_t yy_def[385] = { 0, - 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 + 375, 1, 375, 375, 375, 375, 376, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 377, 375, 375, 375, 378, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 379, 375, 378, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 380, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 381, 375, 375, 375, 375, 375, 375, 375, + + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 382, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 383, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 384, 375, 375, 375, 375, 375, 375, 375, 375, + + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 0, 375, 375, 375, 375, 375, + 375, 375, 375, 375 } ; -static yyconst flex_int16_t yy_nxt[451] = +static yyconst flex_int16_t yy_nxt[502] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4, 15, 4, 4, 4, 16, 17, 18, 19, 20, 21, 4, 22, 4, 4, 4, 4, 23, 24, - 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, 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, + 4, 4, 4, 4, 25, 26, 27, 4, 28, 4, + 4, 4, 4, 29, 30, 32, 32, 33, 33, 32, + 47, 33, 37, 38, 39, 40, 41, 45, 46, 53, + 48, 51, 52, 57, 83, 32, 42, 33, 43, 44, + 132, 84, 58, 54, 55, 56, 59, 85, 90, 34, + 95, 312, 87, 114, 91, 60, 61, 62, 63, 133, + 64, 87, 96, 65, 98, 99, 100, 66, 110, 111, + + 67, 115, 116, 117, 68, 292, 125, 118, 69, 70, + 71, 72, 119, 121, 126, 127, 128, 73, 112, 122, + 123, 124, 136, 157, 158, 74, 75, 76, 77, 161, + 162, 78, 79, 80, 81, 82, 137, 138, 139, 142, + 142, 267, 179, 143, 146, 147, 148, 149, 150, 159, + 165, 160, 180, 183, 184, 196, 185, 236, 151, 186, + 152, 153, 206, 203, 193, 207, 204, 166, 197, 167, + 205, 234, 168, 208, 209, 210, 141, 235, 198, 157, + 158, 159, 86, 160, 161, 162, 69, 70, 71, 115, + 116, 117, 126, 127, 128, 137, 138, 139, 54, 55, + + 56, 60, 61, 62, 122, 123, 124, 321, 111, 80, + 81, 82, 31, 187, 155, 190, 374, 373, 372, 371, + 370, 154, 93, 369, 368, 367, 366, 112, 88, 365, + 88, 364, 131, 363, 180, 362, 361, 360, 85, 359, + 134, 358, 357, 356, 58, 355, 354, 353, 352, 351, + 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, + 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, + 330, 329, 145, 328, 84, 327, 326, 325, 324, 323, + 322, 320, 319, 318, 156, 317, 316, 315, 314, 313, + 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, + + 301, 300, 299, 97, 298, 297, 296, 295, 294, 293, + 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, + 281, 280, 279, 278, 277, 276, 275, 274, 273, 42, + 272, 271, 270, 269, 268, 213, 266, 265, 264, 263, + 262, 261, 260, 259, 258, 178, 257, 256, 255, 254, + 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, + 243, 242, 241, 240, 239, 91, 238, 37, 237, 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 + 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, + 212, 211, 202, 201, 200, 199, 195, 194, 143, 143, + + 192, 191, 190, 189, 188, 187, 182, 181, 178, 177, + 176, 175, 174, 173, 172, 171, 52, 170, 169, 164, + 163, 156, 155, 154, 145, 144, 140, 135, 134, 131, + 130, 129, 120, 113, 109, 108, 107, 106, 105, 104, + 103, 102, 101, 97, 94, 93, 92, 89, 34, 50, + 49, 36, 35, 34, 375, 3, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + + 375 } ; -static yyconst flex_int16_t yy_chk[451] = +static yyconst flex_int16_t yy_chk[502] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -563,49 +585,56 @@ static yyconst flex_int16_t yy_chk[451] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 11, 10, 11, 14, 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, 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 + 20, 23, 23, 25, 28, 33, 18, 33, 18, 18, + 76, 28, 25, 24, 24, 24, 25, 28, 38, 34, + 43, 384, 34, 65, 38, 25, 25, 25, 26, 76, + 26, 34, 43, 26, 45, 45, 45, 26, 63, 63, + + 26, 65, 65, 65, 26, 383, 72, 66, 26, 26, + 26, 27, 66, 68, 72, 72, 72, 27, 63, 68, + 68, 68, 79, 98, 98, 27, 27, 27, 27, 100, + 100, 27, 27, 27, 27, 27, 79, 79, 79, 87, + 87, 382, 120, 87, 92, 92, 92, 92, 92, 99, + 103, 99, 120, 129, 129, 147, 129, 381, 92, 129, + 92, 92, 153, 152, 380, 153, 152, 103, 147, 103, + 152, 192, 103, 163, 163, 163, 379, 192, 147, 208, + 208, 209, 377, 209, 210, 210, 221, 221, 221, 223, + 223, 223, 227, 227, 227, 233, 233, 233, 254, 254, + + 254, 256, 256, 256, 284, 284, 284, 303, 303, 327, + 327, 327, 376, 374, 373, 372, 371, 370, 369, 368, + 367, 366, 365, 364, 363, 362, 361, 303, 378, 360, + 378, 359, 358, 357, 356, 355, 354, 353, 352, 351, + 350, 349, 348, 347, 346, 344, 343, 342, 340, 339, + 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, + 328, 326, 325, 324, 323, 322, 320, 318, 317, 316, + 315, 314, 313, 311, 310, 309, 308, 307, 306, 305, + 304, 302, 301, 299, 298, 297, 296, 295, 294, 293, + 291, 290, 289, 288, 287, 286, 285, 283, 282, 281, + + 280, 279, 277, 276, 274, 273, 272, 271, 269, 268, + 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, + 255, 253, 251, 249, 248, 247, 246, 245, 244, 243, + 242, 241, 240, 239, 238, 237, 235, 234, 232, 231, + 230, 229, 228, 226, 225, 224, 222, 220, 219, 218, + 216, 215, 214, 212, 211, 207, 206, 205, 204, 203, + 202, 201, 200, 199, 198, 197, 196, 195, 194, 191, + 188, 186, 185, 184, 183, 182, 181, 179, 177, 176, + 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, + 165, 164, 151, 150, 149, 148, 146, 144, 143, 142, + + 140, 136, 135, 133, 132, 130, 125, 121, 119, 118, + 114, 113, 110, 109, 108, 107, 106, 105, 104, 102, + 101, 96, 95, 94, 90, 89, 83, 78, 77, 75, + 74, 73, 67, 64, 59, 57, 53, 51, 50, 49, + 48, 47, 46, 44, 41, 40, 39, 36, 32, 22, + 21, 15, 13, 12, 3, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + + 375 } ; /* The intent behind this definition is that it'll catch @@ -654,7 +683,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 658 "generated/easymesh-scanner.cpp" +#line 687 "generated/easymesh-scanner.cpp" #define INITIAL 0 @@ -766,7 +795,7 @@ YY_DECL yylloc->step(); -#line 770 "generated/easymesh-scanner.cpp" +#line 799 "generated/easymesh-scanner.cpp" if ( !(yy_init) ) { @@ -819,13 +848,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 >= 328 ) + if ( yy_current_state >= 376 ) 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 != 327 ); + while ( yy_current_state != 375 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -878,293 +907,313 @@ YY_RULE_SETUP case 7: YY_RULE_SETUP #line 57 "easymesh/easymesh-scanner.l" -{ return token::T_TOGGLESCALEWINDING; } +{ return token::T_COLOR; } YY_BREAK case 8: YY_RULE_SETUP #line 58 "easymesh/easymesh-scanner.l" -{ return token::T_TOGGLEQUADWEIGHTING; } +{ return token::T_ACOLOR; } YY_BREAK case 9: YY_RULE_SETUP #line 59 "easymesh/easymesh-scanner.l" -{ return token::T_COLOR; } +{ return token::T_BCOLOR; } YY_BREAK case 10: YY_RULE_SETUP #line 60 "easymesh/easymesh-scanner.l" -{ return token::T_ACOLOR; } +{ return token::T_VCOLOR; } YY_BREAK case 11: YY_RULE_SETUP -#line 61 "easymesh/easymesh-scanner.l" -{ return token::T_BCOLOR; } +#line 62 "easymesh/easymesh-scanner.l" +{ return token::T_TOGGLESCALEWINDING; } YY_BREAK case 12: YY_RULE_SETUP -#line 62 "easymesh/easymesh-scanner.l" -{ return token::T_VCOLOR; } +#line 63 "easymesh/easymesh-scanner.l" +{ return token::T_TOGGLEQUADWEIGHTING; } YY_BREAK case 13: YY_RULE_SETUP #line 64 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEX; } +{ return token::T_TOGGLEPOSTBUILDNORMAL; } YY_BREAK case 14: YY_RULE_SETUP #line 65 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEY; } +{ return token::T_TOGGLEVERTNOCLEANUP; } YY_BREAK case 15: YY_RULE_SETUP -#line 66 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATEZ; } +#line 67 "easymesh/easymesh-scanner.l" +{ return token::T_VERTMERGE; } YY_BREAK case 16: YY_RULE_SETUP -#line 67 "easymesh/easymesh-scanner.l" -{ return token::T_TRANSLATE; } +#line 68 "easymesh/easymesh-scanner.l" +{ return token::T_VERTSEPARATE; } YY_BREAK case 17: YY_RULE_SETUP -#line 68 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEX; } +#line 70 "easymesh/easymesh-scanner.l" +{ return token::T_TRANSLATEX; } YY_BREAK case 18: YY_RULE_SETUP -#line 69 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEY; } +#line 71 "easymesh/easymesh-scanner.l" +{ return token::T_TRANSLATEY; } YY_BREAK case 19: YY_RULE_SETUP -#line 70 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATEZ; } +#line 72 "easymesh/easymesh-scanner.l" +{ return token::T_TRANSLATEZ; } YY_BREAK case 20: YY_RULE_SETUP -#line 71 "easymesh/easymesh-scanner.l" -{ return token::T_ROTATE; } +#line 73 "easymesh/easymesh-scanner.l" +{ return token::T_TRANSLATE; } YY_BREAK case 21: YY_RULE_SETUP -#line 72 "easymesh/easymesh-scanner.l" -{ return token::T_RADIALJITTER; } +#line 74 "easymesh/easymesh-scanner.l" +{ return token::T_ROTATEX; } YY_BREAK case 22: YY_RULE_SETUP -#line 73 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERX; } +#line 75 "easymesh/easymesh-scanner.l" +{ return token::T_ROTATEY; } YY_BREAK case 23: YY_RULE_SETUP -#line 74 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERY; } +#line 76 "easymesh/easymesh-scanner.l" +{ return token::T_ROTATEZ; } YY_BREAK case 24: YY_RULE_SETUP -#line 75 "easymesh/easymesh-scanner.l" -{ return token::T_TAPERZ; } +#line 77 "easymesh/easymesh-scanner.l" +{ return token::T_ROTATE; } YY_BREAK case 25: YY_RULE_SETUP -#line 76 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTX; } +#line 78 "easymesh/easymesh-scanner.l" +{ return token::T_RADIALJITTER; } YY_BREAK case 26: YY_RULE_SETUP -#line 77 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTY; } +#line 79 "easymesh/easymesh-scanner.l" +{ return token::T_TAPERX; } YY_BREAK case 27: YY_RULE_SETUP -#line 78 "easymesh/easymesh-scanner.l" -{ return token::T_TWISTZ; } +#line 80 "easymesh/easymesh-scanner.l" +{ return token::T_TAPERY; } YY_BREAK case 28: YY_RULE_SETUP -#line 79 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARX; } +#line 81 "easymesh/easymesh-scanner.l" +{ return token::T_TAPERZ; } YY_BREAK case 29: YY_RULE_SETUP -#line 80 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARY; } +#line 82 "easymesh/easymesh-scanner.l" +{ return token::T_TWISTX; } YY_BREAK case 30: YY_RULE_SETUP -#line 81 "easymesh/easymesh-scanner.l" -{ return token::T_SHEARZ; } +#line 83 "easymesh/easymesh-scanner.l" +{ return token::T_TWISTY; } YY_BREAK case 31: YY_RULE_SETUP -#line 82 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHX; } +#line 84 "easymesh/easymesh-scanner.l" +{ return token::T_TWISTZ; } YY_BREAK case 32: YY_RULE_SETUP -#line 83 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHY; } +#line 85 "easymesh/easymesh-scanner.l" +{ return token::T_SHEARX; } YY_BREAK case 33: YY_RULE_SETUP -#line 84 "easymesh/easymesh-scanner.l" -{ return token::T_STRETCHZ; } +#line 86 "easymesh/easymesh-scanner.l" +{ return token::T_SHEARY; } YY_BREAK case 34: YY_RULE_SETUP -#line 85 "easymesh/easymesh-scanner.l" -{ return token::T_BENDXY; } +#line 87 "easymesh/easymesh-scanner.l" +{ return token::T_SHEARZ; } YY_BREAK case 35: YY_RULE_SETUP -#line 86 "easymesh/easymesh-scanner.l" -{ return token::T_BENDXZ; } +#line 88 "easymesh/easymesh-scanner.l" +{ return token::T_STRETCHX; } YY_BREAK case 36: YY_RULE_SETUP -#line 87 "easymesh/easymesh-scanner.l" -{ return token::T_BENDYX; } +#line 89 "easymesh/easymesh-scanner.l" +{ return token::T_STRETCHY; } YY_BREAK case 37: YY_RULE_SETUP -#line 88 "easymesh/easymesh-scanner.l" -{ return token::T_BENDYZ; } +#line 90 "easymesh/easymesh-scanner.l" +{ return token::T_STRETCHZ; } YY_BREAK case 38: YY_RULE_SETUP -#line 89 "easymesh/easymesh-scanner.l" -{ return token::T_BENDZX; } +#line 91 "easymesh/easymesh-scanner.l" +{ return token::T_BENDXY; } YY_BREAK case 39: YY_RULE_SETUP -#line 90 "easymesh/easymesh-scanner.l" -{ return token::T_BENDZY; } +#line 92 "easymesh/easymesh-scanner.l" +{ return token::T_BENDXZ; } YY_BREAK case 40: YY_RULE_SETUP -#line 91 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEX; } +#line 93 "easymesh/easymesh-scanner.l" +{ return token::T_BENDYX; } YY_BREAK case 41: YY_RULE_SETUP -#line 92 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEY; } +#line 94 "easymesh/easymesh-scanner.l" +{ return token::T_BENDYZ; } YY_BREAK case 42: YY_RULE_SETUP -#line 93 "easymesh/easymesh-scanner.l" -{ return token::T_SCALEZ; } +#line 95 "easymesh/easymesh-scanner.l" +{ return token::T_BENDZX; } YY_BREAK case 43: YY_RULE_SETUP -#line 94 "easymesh/easymesh-scanner.l" -{ return token::T_SCALE; } +#line 96 "easymesh/easymesh-scanner.l" +{ return token::T_BENDZY; } YY_BREAK case 44: YY_RULE_SETUP -#line 95 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORX; } +#line 97 "easymesh/easymesh-scanner.l" +{ return token::T_SCALEX; } YY_BREAK case 45: YY_RULE_SETUP -#line 96 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORY; } +#line 98 "easymesh/easymesh-scanner.l" +{ return token::T_SCALEY; } YY_BREAK case 46: YY_RULE_SETUP -#line 97 "easymesh/easymesh-scanner.l" -{ return token::T_MIRRORZ; } +#line 99 "easymesh/easymesh-scanner.l" +{ return token::T_SCALEZ; } YY_BREAK case 47: YY_RULE_SETUP -#line 98 "easymesh/easymesh-scanner.l" -{ return token::T_CHAMFER; } +#line 100 "easymesh/easymesh-scanner.l" +{ return token::T_SCALE; } YY_BREAK case 48: YY_RULE_SETUP -#line 99 "easymesh/easymesh-scanner.l" -{ return token::T_SPLITTRIANGLE; } +#line 101 "easymesh/easymesh-scanner.l" +{ return token::T_MIRRORX; } YY_BREAK case 49: YY_RULE_SETUP -#line 100 "easymesh/easymesh-scanner.l" -{ return token::T_SMOOTHMESH; } +#line 102 "easymesh/easymesh-scanner.l" +{ return token::T_MIRRORY; } YY_BREAK case 50: YY_RULE_SETUP -#line 101 "easymesh/easymesh-scanner.l" -{ return token::T_DUPLICATE; } +#line 103 "easymesh/easymesh-scanner.l" +{ return token::T_MIRRORZ; } YY_BREAK case 51: YY_RULE_SETUP -#line 103 "easymesh/easymesh-scanner.l" -{ return token::T_CYLINDER; } +#line 104 "easymesh/easymesh-scanner.l" +{ return token::T_CHAMFER; } YY_BREAK case 52: YY_RULE_SETUP -#line 104 "easymesh/easymesh-scanner.l" -{ return token::T_SPHERE; } +#line 105 "easymesh/easymesh-scanner.l" +{ return token::T_SPLITTRIANGLE; } YY_BREAK case 53: YY_RULE_SETUP -#line 105 "easymesh/easymesh-scanner.l" -{ return token::T_CAPSULE; } +#line 106 "easymesh/easymesh-scanner.l" +{ return token::T_SMOOTHMESH; } YY_BREAK case 54: YY_RULE_SETUP -#line 106 "easymesh/easymesh-scanner.l" -{ return token::T_TORUS; } +#line 107 "easymesh/easymesh-scanner.l" +{ return token::T_DUPLICATE; } YY_BREAK case 55: YY_RULE_SETUP -#line 107 "easymesh/easymesh-scanner.l" -{ return token::T_BOX; } +#line 109 "easymesh/easymesh-scanner.l" +{ return token::T_CYLINDER; } YY_BREAK case 56: YY_RULE_SETUP -#line 108 "easymesh/easymesh-scanner.l" -{ return token::T_SMOOTHCHAMFBOX; } +#line 110 "easymesh/easymesh-scanner.l" +{ return token::T_SPHERE; } YY_BREAK case 57: YY_RULE_SETUP -#line 109 "easymesh/easymesh-scanner.l" -{ return token::T_FLATCHAMFBOX; } +#line 111 "easymesh/easymesh-scanner.l" +{ return token::T_CAPSULE; } YY_BREAK case 58: YY_RULE_SETUP -#line 110 "easymesh/easymesh-scanner.l" -{ return token::T_STAR; } +#line 112 "easymesh/easymesh-scanner.l" +{ return token::T_TORUS; } YY_BREAK case 59: YY_RULE_SETUP -#line 111 "easymesh/easymesh-scanner.l" -{ return token::T_EXPANDEDSTAR; } +#line 113 "easymesh/easymesh-scanner.l" +{ return token::T_BOX; } YY_BREAK case 60: YY_RULE_SETUP -#line 112 "easymesh/easymesh-scanner.l" -{ return token::T_DISC; } +#line 114 "easymesh/easymesh-scanner.l" +{ return token::T_SMOOTHCHAMFBOX; } YY_BREAK case 61: YY_RULE_SETUP -#line 113 "easymesh/easymesh-scanner.l" -{ return token::T_TRIANGLE; } +#line 115 "easymesh/easymesh-scanner.l" +{ return token::T_FLATCHAMFBOX; } YY_BREAK case 62: YY_RULE_SETUP -#line 114 "easymesh/easymesh-scanner.l" -{ return token::T_QUAD; } +#line 116 "easymesh/easymesh-scanner.l" +{ return token::T_STAR; } YY_BREAK case 63: YY_RULE_SETUP -#line 115 "easymesh/easymesh-scanner.l" +#line 117 "easymesh/easymesh-scanner.l" +{ return token::T_EXPANDEDSTAR; } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 118 "easymesh/easymesh-scanner.l" +{ return token::T_DISC; } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 119 "easymesh/easymesh-scanner.l" +{ return token::T_TRIANGLE; } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 120 "easymesh/easymesh-scanner.l" +{ return token::T_QUAD; } + YY_BREAK +case 67: +YY_RULE_SETUP +#line 121 "easymesh/easymesh-scanner.l" { return token::T_COG; } YY_BREAK /* ======= BASE COLOR TYPES ========================================= */ /* COLOR */ -case 64: +case 68: YY_RULE_SETUP -#line 119 "easymesh/easymesh-scanner.l" +#line 125 "easymesh/easymesh-scanner.l" { uint32_t tmp = std::strtol(yytext + 1, nullptr, 16); yylval->u32val = 0x11000000u * (tmp >> 8) @@ -1173,9 +1222,9 @@ YY_RULE_SETUP | 0x000000ffu; return token::COLOR; } YY_BREAK -case 65: +case 69: YY_RULE_SETUP -#line 126 "easymesh/easymesh-scanner.l" +#line 132 "easymesh/easymesh-scanner.l" { uint32_t tmp = std::strtol(yytext + 1, nullptr, 16); yylval->u32val = 0x11000000u * (tmp >> 12) @@ -1184,111 +1233,111 @@ YY_RULE_SETUP | 0x00000011u * (tmp & 0xf); return token::COLOR; } YY_BREAK -case 66: +case 70: YY_RULE_SETUP -#line 133 "easymesh/easymesh-scanner.l" +#line 139 "easymesh/easymesh-scanner.l" { yylval->u32val = 0xffu | 0x100u * (uint32_t)std::strtol(yytext + 1, nullptr, 16); return token::COLOR; } YY_BREAK -case 67: +case 71: YY_RULE_SETUP -#line 137 "easymesh/easymesh-scanner.l" +#line 143 "easymesh/easymesh-scanner.l" { yylval->u32val = (uint32_t)std::strtol(yytext + 1, nullptr, 16); return token::COLOR; } YY_BREAK /* ======= BASE DATA TYPES ========================================= */ /* BOOL */ -case 68: +case 72: YY_RULE_SETUP -#line 143 "easymesh/easymesh-scanner.l" +#line 149 "easymesh/easymesh-scanner.l" { yylval->bval = true; return token::BOOLEAN; } YY_BREAK -case 69: +case 73: YY_RULE_SETUP -#line 144 "easymesh/easymesh-scanner.l" +#line 150 "easymesh/easymesh-scanner.l" { yylval->bval = false; return token::BOOLEAN; } YY_BREAK /* FLOAT */ -case 70: +case 74: YY_RULE_SETUP -#line 146 "easymesh/easymesh-scanner.l" +#line 152 "easymesh/easymesh-scanner.l" { yylval->fval = (float)std::atof(yytext); return token::F_NUMBER; } YY_BREAK /* INT */ -case 71: +case 75: YY_RULE_SETUP -#line 149 "easymesh/easymesh-scanner.l" +#line 155 "easymesh/easymesh-scanner.l" { yylval->ival = std::atoi(yytext); return token::I_NUMBER; } YY_BREAK /* ======= COMMENTS ======= */ -case 72: +case 76: YY_RULE_SETUP -#line 153 "easymesh/easymesh-scanner.l" +#line 159 "easymesh/easymesh-scanner.l" { /* ignore this */ } YY_BREAK /* Semantics tokens */ -case 73: +case 77: YY_RULE_SETUP -#line 156 "easymesh/easymesh-scanner.l" +#line 162 "easymesh/easymesh-scanner.l" { return token_type('-'); } YY_BREAK -case 74: +case 78: YY_RULE_SETUP -#line 157 "easymesh/easymesh-scanner.l" +#line 163 "easymesh/easymesh-scanner.l" { return token_type('('); } YY_BREAK -case 75: +case 79: YY_RULE_SETUP -#line 158 "easymesh/easymesh-scanner.l" +#line 164 "easymesh/easymesh-scanner.l" { return token_type(')'); } YY_BREAK -case 76: +case 80: YY_RULE_SETUP -#line 159 "easymesh/easymesh-scanner.l" +#line 165 "easymesh/easymesh-scanner.l" { return token_type('{'); } YY_BREAK -case 77: +case 81: YY_RULE_SETUP -#line 160 "easymesh/easymesh-scanner.l" +#line 166 "easymesh/easymesh-scanner.l" { return token_type('}'); } YY_BREAK -case 78: +case 82: YY_RULE_SETUP -#line 161 "easymesh/easymesh-scanner.l" +#line 167 "easymesh/easymesh-scanner.l" { return token_type('['); } YY_BREAK -case 79: +case 83: YY_RULE_SETUP -#line 162 "easymesh/easymesh-scanner.l" +#line 168 "easymesh/easymesh-scanner.l" { return token_type(']'); } YY_BREAK -case 80: +case 84: YY_RULE_SETUP -#line 163 "easymesh/easymesh-scanner.l" +#line 169 "easymesh/easymesh-scanner.l" { /* ignore this */ } YY_BREAK -case 81: -/* rule 81 can match eol */ +case 85: +/* rule 85 can match eol */ YY_RULE_SETUP -#line 164 "easymesh/easymesh-scanner.l" +#line 170 "easymesh/easymesh-scanner.l" { /* ignore this */ } YY_BREAK -case 82: +case 86: YY_RULE_SETUP -#line 165 "easymesh/easymesh-scanner.l" +#line 171 "easymesh/easymesh-scanner.l" { return token::T_ERROR; } YY_BREAK -case 83: +case 87: YY_RULE_SETUP -#line 167 "easymesh/easymesh-scanner.l" +#line 173 "easymesh/easymesh-scanner.l" ECHO; YY_BREAK -#line 1292 "generated/easymesh-scanner.cpp" +#line 1341 "generated/easymesh-scanner.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1670,7 +1719,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 >= 328 ) + if ( yy_current_state >= 376 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1698,11 +1747,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 >= 328 ) + if ( yy_current_state >= 376 ) 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 == 327); + yy_is_jam = (yy_current_state == 375); return yy_is_jam ? 0 : yy_current_state; } @@ -2189,7 +2238,7 @@ void EasyMeshfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 167 "easymesh/easymesh-scanner.l" +#line 173 "easymesh/easymesh-scanner.l" diff --git a/test/data/mesh-buffer.txt b/test/data/mesh-buffer.txt index bb95940d..3d539e20 100644 --- a/test/data/mesh-buffer.txt +++ b/test/data/mesh-buffer.txt @@ -1,9 +1,10 @@ -addlight 0 position (4 -4 0) color #fff +//addlight 0 position (1 -.5 1.5) color #fff addlight 1 position (0 0 6) color #bfb -clearcolor #d0d +clearcolor #ddd showgizmo true showlight true + //SCENE SETUP END //addlight 0.0 position (1 0 1) color #0ff @@ -11,17 +12,17 @@ showlight true //custom setmesh "sc#f00 ab 2 ty 1.5 ab 2" - custom setmesh " //tqw //CMD TEST -sc#0f0 ab 5 +//sc#0f0 asph 1 10 +//sc#0f0 ab 10 //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 ac 6 5 2 2 false true true //sc#0f0 aq 1 //splt 2 smth 4 0 1 @@ -48,6 +49,14 @@ sc#0f0 ab 5 //sc#0f0 ab 2 ty 1.5 ab 2 //sc#00f ab 2 ty 1.5 ab 2 + + +[sc#88f afcb 10 10 10 .25 tx 0] +csgs [sc#fff afcb 10 10 10 .25 t 2 2 2] +//[sc#fff afcb 7 7 7 .25] +//[sc#ff2 afcb 7 7 7 .25 t 1 1 1 csgs] + + " //splt 0 @@ -92,8 +101,3 @@ sc#0f0 ab 5 //[sc#ff2 asph 2 10 10 10] //[sc#400 asph 2 10 10 10 t 2 2 2 csgs] - -//[sc#88f afcb 10 10 10 .25 tx 0] -//[sc#fff afcb 10 10 10 .25 t 2 2 2 csgs] -//[sc#fff afcb 7 7 7 .25] -//[sc#ff2 afcb 7 7 7 .25 t 1 1 1 csgs] \ No newline at end of file diff --git a/test/easymeshdictionnary.js b/test/easymeshdictionnary.js index 000551f7..9af25cba 100644 --- a/test/easymeshdictionnary.js +++ b/test/easymeshdictionnary.js @@ -25,12 +25,20 @@ CmdType(["csgx", "csgxor"], "Performs a Xor operation as :\n(current_scope_Outs //------------------------------------------------------------------------- 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(["tpbn", "tglpstbuildnormal"], "When active, normal will be only computed after all the command\nDefault : Inactive"); +CmdType(["tvnc", "tglvertnocleanup"], "When active, vertices cleanup will not be done at the end of all the commands\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")]); +//------------------------------------------------------------------------- +//Vertices operations +//------------------------------------------------------------------------- +CmdType(["vm", "vertmerge"], "Will merge all the same face vertices"); +CmdType(["vs", "vertseparate"], "Will separate all the same face vertices"); + //------------------------------------------------------------------------- //Mesh transform operations //------------------------------------------------------------------------- diff --git a/test/meshviewer.cpp b/test/meshviewer.cpp index 121b0c6e..813f1c7d 100644 --- a/test/meshviewer.cpp +++ b/test/meshviewer.cpp @@ -729,6 +729,8 @@ public: #endif //ALL_FEATURES } } + + //Scene setup update if (m_ssetup) { m_camera->SetProjection(mat_gizmo); @@ -756,6 +758,29 @@ public: } m_camera->SetProjection(save_proj); } + +#if 0 //Debug normal draw + for (int i = m_meshes.Count() - 1; 0 <= i && i < m_meshes.Count(); i++) + { + for (int j = 0; j < m_meshes[i]->m_indices.Count(); j += 3) + { + VertexData v[3] = { m_meshes[i]->m_vert[m_meshes[i]->m_indices[j ]], + m_meshes[i]->m_vert[m_meshes[i]->m_indices[j+1]], + m_meshes[i]->m_vert[m_meshes[i]->m_indices[j+2]] + }; + for (int k = 0; k < 3; k++) + Debug::DrawLine((m_mat * mat4::translate(v[k].m_coord)).v3.xyz, + (m_mat * mat4::translate(v[(k+1)%3].m_coord)).v3.xyz, vec4(vec3((v[k].m_coord.z + 1.f)*.5f),1.f)); + } + for (int j = 0; j < m_meshes[i]->m_vert.Count(); j++) + { + VertexData &v = m_meshes[i]->m_vert[m_meshes[i]->m_indices[j]]; + Debug::DrawLine((m_mat * mat4::translate(v.m_coord)).v3.xyz, + (m_mat * mat4::translate(v.m_coord)).v3.xyz + + (m_mat * vec4(v.m_normal * 5.f, 0.f)).xyz, vec4(lol::abs(v.m_normal), 1.f)); + } + } +#endif } private: